zoukankan      html  css  js  c++  java
  • struts2的获取Servlet API的几种方式的学习笔记

    总记:web应用中通常需要访问的servlet API就是HttpServletRequest、httpSession和ServletContext,

    这三个接口分别代表JSP内置对象中的request、session和application。

    在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式

    一、非IOC方式

    使用的原则:如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,
    让我们的Action尽量不要直接去访问Servlet的相关对象

    1.Struts2提供了一个ActionContext类,Struts2的Action可以通过该类来访问Servlet API(推荐使用该方法)(非IOC方式)

    ActionContext类中包含的几个常用的方法:

    ①Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法

    ②Map getApplication(): 返回一个Map对象,该对象模拟了该应用的ServletContext实例

    ③static ActionContext getContext():静态方法,获取系统的ActionContext实例

    ④Map getParameters():获得所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap()方法

    ⑤Map getSession();返回一个Map对象,该Map对象模拟了HttpSession实例

    ⑥void setApplication(Map application):直接传入一个Map实例。将该Map实例里的key-value对转换成application的属性名,属性值。

    ⑦void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value转换成session的属性名、属性值。

    相关用法小实例:

    public String execute() throws Exception{
            ActionContext ctx = ActionContext.getContext();
            
            //通过ActionContext访问application范围的属性值
            Integer counter = (Integer)ctx.getApplication().get("counter");
            //通过ActionContext设置session范围的属性
            ctx.getApplication().put("counter", counter);
            
            //通过ActionContext设置session范围的属性
            ctx.getSession().put("User", getUsername);
        
            //获取request 
        Map request=(Map)ActionContext.getContext().get("request"); 
        //把想存的值存入request域中 
        request.put("requestName", name);
        }

    2. 使用ServletActionContext访问Servlet API

    ServletActionContext工具类包含如下的几个静态方法:

    static PageContext getPageContext(); 取得web应用的PageContext对象
    static HttpServletRequest getRequest(); 取得web应用的HttpServletRequest对象
    static HttpServletResponse getResponse(); 取得web应用的HttpServletResponse对象
    static ServletContext getServletContext(); 取得web应用的ServletContext对象

    二 IOC(控制反转Inversion of Control)

    为了在Action中直接访问Servlet API,Struts2还提供了如下几个接口。

    ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例
    ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例
    ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse实例

    public class SampleAction implementsAction,  
    RequestAware, SessionAware, ApplicationAware  
    {  
    private Map request;  
    private Map session;  
    private Map application;  
      
    @Override  
    public void setRequest(Map request)  
    {this.request = request;}  
      
    @Override  
    public void setSession(Map session)  
    {this.session = session;}  
      
    @Override  
    public void setApplication(Map application)  
    {this.application = application;}  
      
    }  
  • 相关阅读:
    How to change the generated method stub code for C#
    White Paper: Microsoft Data Platform Development
    spring2.5jar包和配置文件总结
    自定义拦截器
    spring+jdbc开发
    Spring Aop支持的两种方式
    C#中Aop编程
    struts2整合spring
    批处理命令总结
    利用datawindow或者datastore的saveas方法导出excell文件,然后修改中文表头
  • 原文地址:https://www.cnblogs.com/qingcong/p/5841710.html
Copyright © 2011-2022 走看看