关闭

Struts2工具类[实现获取Request/Response/Session与绕过jsp/freemaker直接输出文本的简化函数]

标签: javastruts
144人阅读 评论(0) 收藏 举报
分类:
  1. package org.eline.web.struts2;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Map;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import javax.servlet.http.HttpSession;  
  9.   
  10. import net.sf.json.JSONObject;  
  11.   
  12. import org.apache.commons.lang.StringUtils;  
  13. import org.apache.struts2.ServletActionContext;  
  14. import org.slf4j.Logger;  
  15. import org.slf4j.LoggerFactory;  
  16.   
  17. /** 
  18.  * Struts2 Utils类. 
  19.  * 实现获取Request/Response/Session与绕过jsp/freemaker直接输出文本的简化函数. 
  20.  */  
  21. public class Struts2Utils  
  22. {  
  23.   
  24.     // header 常量定义  
  25.     private static final String ENCODING_PREFIX = "encoding:";  
  26.     private static final String NOCACHE_PREFIX = "no-cache:";  
  27.     private static final String ENCODING_DEFAULT = "UTF-8";  
  28.     private static final boolean NOCACHE_DEFAULT = true;  
  29.   
  30.     private static Logger logger = LoggerFactory.getLogger(Struts2Utils.class);  
  31.   
  32.     private Struts2Utils()  
  33.     {  
  34.     }  
  35.   
  36.     // 取得Request/Response/Session的简化函数 //  
  37.   
  38.     /** 
  39.      * 取得HttpSession的简化方法. 
  40.      */  
  41.     public static HttpSession getSession()  
  42.     {  
  43.         return ServletActionContext.getRequest().getSession();  
  44.     }  
  45.   
  46.     /** 
  47.      * 取得HttpRequest的简化方法. 
  48.      */  
  49.     public static HttpServletRequest getRequest()  
  50.     {  
  51.         return ServletActionContext.getRequest();  
  52.     }  
  53.   
  54.     /** 
  55.      * 取得HttpResponse的简化方法. 
  56.      */  
  57.     public static HttpServletResponse getResponse()  
  58.     {  
  59.         return ServletActionContext.getResponse();  
  60.     }  
  61.   
  62.     // 绕过jsp/freemaker直接输出文本的函数 //  
  63.   
  64.     /** 
  65.      * 直接输出内容的简便函数. 
  66.      *  
  67.      * eg. render("text/plain", "hello", "encoding:GBK"); render("text/plain", 
  68.      * "hello", "no-cache:false"); render("text/plain", "hello", "encoding:GBK", 
  69.      * "no-cache:false"); 
  70.      *  
  71.      * @param headers 
  72.      *            可变的header数组,目前接受的值为"encoding:"或"no-cache:",见示例代码. 
  73.      *            不设置时默认值分别为UTF-8和true. 
  74.      */  
  75.     public static void render(final String contentType, final String content,  
  76.             final String... headers)  
  77.     {  
  78.         try  
  79.         {  
  80.             // 分析headers参数  
  81.             String encoding = ENCODING_DEFAULT;  
  82.             boolean noCache = NOCACHE_DEFAULT;  
  83.             for (String header : headers)  
  84.             {  
  85.                 String headerName = StringUtils.substringBefore(header, ":");  
  86.                 String headerValue = StringUtils.substringAfter(header, ":");  
  87.   
  88.                 if (StringUtils.equalsIgnoreCase(headerName, ENCODING_PREFIX))  
  89.                 {  
  90.                     encoding = headerValue;  
  91.                 }  
  92.                 else if (StringUtils.equalsIgnoreCase(headerName,  
  93.                         NOCACHE_PREFIX))  
  94.                 {  
  95.                     noCache = Boolean.parseBoolean(headerValue);  
  96.                 }  
  97.                 else  
  98.                     throw new IllegalArgumentException(headerName  
  99.                             + "不是一个合法的header类型");  
  100.             }  
  101.   
  102.             HttpServletResponse response = ServletActionContext.getResponse();  
  103.   
  104.             // 设置headers参数  
  105.             String fullContentType = contentType + ";charset=" + encoding;  
  106.             response.setContentType(fullContentType);  
  107.             if (noCache)  
  108.             {  
  109.                 response.setHeader("Pragma""No-cache");  
  110.                 response.setHeader("Cache-Control""no-cache");  
  111.                 response.setDateHeader("Expires"0);  
  112.             }  
  113.   
  114.             response.getWriter().write(content);  
  115.   
  116.         }  
  117.         catch (IOException e)  
  118.         {  
  119.             logger.error(e.getMessage(), e);  
  120.         }  
  121.     }  
  122.   
  123.     /** 
  124.      * 直接输出文本. 
  125.      *  
  126.      * @see #render(String, String, String...) 
  127.      */  
  128.     public static void renderText(final String text, final String... headers)  
  129.     {  
  130.         render("text/plain", text, headers);  
  131.     }  
  132.   
  133.     /** 
  134.      * 直接输出HTML. 
  135.      *  
  136.      * @see #render(String, String, String...) 
  137.      */  
  138.     public static void renderHtml(final String html, final String... headers)  
  139.     {  
  140.         render("text/html", html, headers);  
  141.     }  
  142.   
  143.     /** 
  144.      * 直接输出XML. 
  145.      *  
  146.      * @see #render(String, String, String...) 
  147.      */  
  148.     public static void renderXml(final String xml, final String... headers)  
  149.     {  
  150.         render("text/xml", xml, headers);  
  151.     }  
  152.   
  153.     /** 
  154.      * 直接输出JSON. 
  155.      *  
  156.      * @param string 
  157.      *            json字符串. 
  158.      * @see #render(String, String, String...) 
  159.      */  
  160.     public static void renderJson(final String string, final String... headers)  
  161.     {  
  162.         render("application/json", string, headers);  
  163.     }  
  164.   
  165.     /** 
  166.      * 直接输出JSON.???/ 
  167.      *  
  168.      * @param map 
  169.      *            Map对象,将被转化为json字符串. 
  170.      * @see #render(String, String, String...) 
  171.      */  
  172.     @SuppressWarnings("unchecked")  
  173.     public static void renderJson(final Map map, final String... headers)  
  174.     {  
  175.         String jsonString = new JSONObject().toString();  
  176.         renderJson(jsonString, headers);  
  177.     }  
  178.   
  179.     /** 
  180.      * 直接输出JSON.??? 
  181.      *  
  182.      * @param object 
  183.      *            Java对象,将被转化为json字符串. 
  184.      * @see #render(String, String, String...) 
  185.      */  
  186.     public static void renderJson(final Object object, final String... headers)  
  187.     {  
  188.         String jsonString = new JSONObject().toString();  
  189.         renderJson(jsonString, headers);  
  190.     }  


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JSP学习笔记三之response对象和request对象

接着上一篇,我们接着讲JSP中的内置隐式对象。这篇博客介绍的是request和response对象。 A. request对象      request对象是javax.servlet...
  • LULEI1217
  • LULEI1217
  • 2016-02-27 15:24
  • 6263

在JSP中使用struts2的标签把request中的对象数据展示在JSP上

1、action public String edit(){ //获取数据类型 String keyword = elecSystemDDL.getKeyword(); //1:使用数据...
  • tangliuqing
  • tangliuqing
  • 2015-01-16 17:57
  • 2440

spring的普通类中如何取session和request对像

在使用spring时,经常需要在普通类中获取session,request等对像.  比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.stru...
  • chenzenan
  • chenzenan
  • 2014-05-09 13:56
  • 5426

Struts2工具类[实现获取Request/Response/Session与绕过jsp/freemaker直接输出文本的简化函数]

package org.eline.web.struts2; import java.io.IOException; import java.util.Map; import javax.serv...
  • yaerfeng
  • yaerfeng
  • 2012-01-19 13:31
  • 3518

Struts2工具类 实现获取Request/Response/Session的简化函数

import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.h...
  • eshorezrj
  • eshorezrj
  • 2011-06-24 03:01
  • 1318

struts2创建 request response session application

  • 2013-09-09 16:05
  • 3.14MB
  • 下载

Struts2的Action中获得request response session几种方法

  • 2012-11-10 11:11
  • 7KB
  • 下载

struts2如何获取Request-Session-ServletContext-Response

1. 访问和添加request/session/application属性    如果只是往request/session/application中设置属性,可以用下面的方式     Ja...
  • qq413041153
  • qq413041153
  • 2011-05-20 20:07
  • 2016

struts2 Action中获取request, response,Session对象的方法

非IoC方式   要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前 A...
  • lushuaiyin
  • lushuaiyin
  • 2011-11-27 21:33
  • 2875

struts2中获取action中request,response,session的方法

http://www.javaeye.com/topic/581820 不做不知道,一做才知道自己原来不知道。之前用惯struts1.x,那些request啊session之类都是方法自带有的,我们直...
  • elfenliedef
  • elfenliedef
  • 2011-02-10 16:25
  • 487
    个人资料
    • 访问:41772次
    • 积分:495
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:54篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论