Package com.etown.action

Source Code of com.etown.action.BaseAction

package com.etown.action;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;
/**
* 基本的Action类
* 注意:BaseAction封装了获取request、response、session的快捷方式
* 以及通用的写响应工具
* 所有action包中的所有类都继承BaseAction
* @author: ZhangZhun Date:2011-4-1 上午09:48:47
*/
public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{
  private static final long serialVersionUID = 1L;
  protected final Log log=LogFactory.getLog(this.getClass());
 
  private int start;
  private int limit;
  private String sort;
  private String dir;
 
  protected HttpServletRequest request;
  protected HttpServletResponse response;
  protected ServletContext servletContext;
 
  public void setServletRequest(HttpServletRequest request) {
    this.request=request;
  }
  public void setServletResponse(HttpServletResponse response) {
    this.response=response;   
  }
  protected HttpSession getSession(){
    return this.request.getSession();
  }
 
  /**
   * 设置Session级属性
   * @param key
   * @param obj
   */
  protected void setSessionAttr(String key,Object obj){
    this.getSession().setAttribute(key, obj);
  }
 
  protected Object getSessionAttr(String key){
    return this.getSession().getAttribute(key);
  }
 
  /**
   * 删除Session级属性
   * @param key
   */
  protected void rmSessionAttr(String key){
    this.getSession().removeAttribute(key);
  }
 
  /**
   * 设置Request级属性
   * @param key
   * @param obj
   */
  protected void setReqAttr(String key,Object obj){
    this.request.setAttribute(key, obj);
  }
 
  protected Object getReqAttr(String key){
    return this.request.getAttribute(key);
  }
 
  /**
   * 删除Request级属性
   * @param key
   */
  protected void rmReqAttr(String key){
    this.request.removeAttribute(key);
  }
 
  public void setServletContext(ServletContext context) {
    this.servletContext=context;
  }
  /**
   * 输出文件流
   * @author: ZhangZhun
   * Date:2011-4-2 上午11:19:59
   * @param is
   * @param fileName
   * @param contentType
   * @param len
   * @throws IOException
   */
  public void outFileStream(InputStream is,String fileName,String contentType,int len) throws IOException{
//    response.setCharacterEncoding("UTF-8");
//    response.setContentType("application/octet-stream;charset=UTF-8");
//    if(len>0)
//      response.setContentLength(len);
//    if(StringUtils.isNotEmpty(fileName)){
//      response.setHeader("Content-Disposition", "attachment;filename="
//          + new String(fileName.getBytes(),"ISO-8859-1"));
//    }
//    if(StringUtils.isNotEmpty(contentType)){
//      response.setHeader("Content-Type", contentType);
//    }
//    StreamOperatorUtil.fromCopyTo(is, response.getOutputStream());
  }
  /**
   * 输出一个对象
   * @author: ZhangZhun
   * Date:2011-4-1 上午10:12:04
   * @param o
   * @param isInjectDefaultConvertHandler 是否注入默认对象转换类
   */
  public void outJsonObject(Object o,boolean isInjectDefaultConvertHandler){
    if(Collection.class.isInstance(o)||o.getClass().isArray()){
      JSONArray ja=null;
      if(isInjectDefaultConvertHandler){
        ja=JSONArray.fromObject(o,getJsonConfig(null));
      }else{
        ja=JSONArray.fromObject(o);
      }
      this.outJsonString(ja.toString());
    }else{
      JSONObject jo=null;
      if(isInjectDefaultConvertHandler){
        jo=JSONObject.fromObject(o,getJsonConfig(null));
      }else{
        jo=JSONObject.fromObject(o);
      }
      this.outJsonString(jo.toString());
    }
  }
  /**
   * 根据指定格式格式化日期
   * @author: ZhangZhun
   * Date:2011-4-1 上午09:55:42
   * @param format
   * @return
   */
  public JsonConfig getJsonConfig(String format) {
//    if(format == null) {
//      format=WEB_PROPERTIES.getProperty("DEFAULT_JSON_DATE_FORMAT",Constants.DATETIME_FORMAT);
//    }
//    JsonConfig conf = new JsonConfig();
//    conf.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);  
//    conf.registerJsonValueProcessor(Date.class,new JsonValueProcessorImpl(format));
//    conf.registerJsonValueProcessor(Timestamp.class,new JsonValueProcessorImpl(format));
//    return conf;
    return null;
  }
  /**
   * 输出简单消息
   * @author: ZhangZhun
   * Date:2011-4-1 下午05:42:41
   * @param success
   * @param message
   */
  public void outSimpleMessage(boolean success,String message){
    JSONObject jo=new JSONObject();
    jo.accumulate("success", success);
    jo.accumulate("message", message);
    this.outJsonString(jo.toString());
  }
  /**
   * 输出结果消息
   * @author: ZhangZhun
   * Date:2011-4-1 下午05:45:12
   * @param success
   * @param message
   * @param isInjectDefaultConvertHandler 是否注入默认对象转换类
   */
  public void outResultMessage(Object result,String message,boolean isInjectDefaultConvertHandler){
    JSONObject jo=new JSONObject();
    Object o=null;
    if(Collection.class.isInstance(result)||result.getClass().isArray()){
      if(isInjectDefaultConvertHandler){
        o=JSONArray.fromObject(result, this.getJsonConfig(null));
      }else{
        o=JSONArray.fromObject(result, this.getJsonConfig(null));
      }
    }else{
      if(isInjectDefaultConvertHandler){
        o=JSONObject.fromObject(result,this.getJsonConfig(null));
      }else{
        o=JSONObject.fromObject(result);
      }
    }
    jo.accumulate("success", true);
    jo.accumulate("item", o);
    jo.accumulate("message", message);
    this.outJsonString(jo.toString());
  }
  /**
   * 输出JSON字符串,根据指定的字符集
   * @author: ZhangZhun
   * Date:2011-4-1 上午09:22:17
   * @param str
   * @param charset
   */
  public void outJsonString(String str,String charset){
    this.response.setContentType("text/html;charset="+charset);
    this.responseJsonString(str);
  }
  /**
   * 输出JSON字符串,根据默认的字符集
   * @author: ZhangZhun
   * Date:2011-4-1 上午09:23:25
   * @param str
   */
  public void outJsonString(String str){
    outJsonString(str,"UTF-8");
    //outJsonString(str,WEB_PROPERTIES.getProperty("DEFAULT_JSON_CHARSET","UTF-8"));
  }
  /**
   * 输入JSON字符串
   * @author: ZhangZhun
   * Date:2011-4-1 上午09:47:28
   * @param str
   */
  private void responseJsonString(String str) {
    try {
      this.response.setHeader("Cache-Control","no-cache");
      this.response.setHeader("Cache-Control","no-store");
      this.response.setDateHeader("Expires", 0L);
      this.response.setHeader("Pragma", "no-cache");     
      PrintWriter out = this.response.getWriter();
      out.write(str);
      out.flush();
      this.response.flushBuffer();
    } catch (IOException e) {
      log.error("向响应中写数据失败");
    }
  }
 
  /**
   * 获取文件名和后缀名部分
   * @author: ZhangZhun
   * Date:2011-4-7 下午04:04:15
   * @param filePath
   * @return
   */
  public String getFileNameByPath(String filePath){
    int separtorPos=filePath.indexOf("\\");
    if(separtorPos==-1){
      separtorPos=filePath.indexOf("/");
    }
    if(separtorPos!=-1){
      return filePath.substring(separtorPos,filePath.length());
    }
    return filePath;
  }
  /**
   * 获取文件后缀名
   * @author: ZhangZhun
   * Date:2011-4-7 下午04:05:49
   * @param filePath
   * @return
   */
  public String getFileNameSuffix(String filePath){
    int suffixPos=filePath.lastIndexOf('.');
    if(suffixPos!=-1){
      return filePath.substring(suffixPos);
    }
    return filePath;
  }
 
  /**
   * 获取客户端的真实IP地址
   * @return
   */
  public String getIpAddr() {
         String ip = request.getHeader("x-forwarded-for");
         if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
             ip = request.getHeader("Proxy-Client-IP");
         }
         if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
             ip = request.getHeader("WL-Proxy-Client-IP");
         }
         if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
             ip = request.getRemoteAddr();
         }
         return ip;
     }
 
  public int getStart() {
    return start;
  }
  public void setStart(int start) {
    this.start = start;
  }
  public int getLimit() {
    return limit;
  }
  public void setLimit(int limit) {
    this.limit = limit;
  }
  public String getSort() {
    return sort;
  }
  public void setSort(String sort) {
    this.sort = sort;
  }
  public String getDir() {
    return dir;
  }
  public void setDir(String dir) {
    this.dir = dir;
  }
}
TOP

Related Classes of com.etown.action.BaseAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.