Struts2 总结

来源:互联网 发布:狸窝音频转换器mac版 编辑:程序博客网 时间:2024/06/06 18:28

前言:此总结是观看佟刚老师的Struts2 视频总结的,之前看过另一老师将的视频,有点模糊,然后网上查了一下,很多人说这个视频同好的,然后自己去看,的确很好 视频链接

关于获得 Web 资源

以下是应该注意的地方 :

 1. 所谓 WEB 资源是指,request,session,application,paraeters( 可以获得请求参数 ) 2. ActionContext 是 Action 的上下文,可以获的 Action 的一切所需要的信息3.获取web资源有以下两种 :    1. 由 ActionContext 获得    2. 实现 XxxAware 接口

一. 获得与 Servlet 无关的Web 资源

I. 由 ActionContext 获得

public class TestActionContext {    /**        1.  ActionContext 是 Action的上下文,可以得到一切Action需要的信息        2.  这个类TestActionContext 不用继承,或者是实现其他类        3.  需要注意的是,这里的得到requestMap,sessionMap,applicationMap 和并不是HttpServletRequest,HttpSession... 但是 这些map封装的是request,session,application..域对象里面的键和值(.attribute(key,value) )        4. 注意 parametersMap 这个比较特殊,因为Servlet 里面并没有这个相对应的对象,这个map表示请求参数的键值对 uri?age=100, key=age,valeu=100        5.     */    public String execute(){        // ActionContext 是 Action的上下文,可以得到一切Action需要的信息        ActionContext actionContext = ActionContext.getContext();   // 得到        // 获得application 对应的 map        Map<String,Object> applicationMap = actionContext.getApplication();        applicationMap.put("applicationKey", "applicationValue");        // 得到session 对应的 map        Map<String,Object> sessionMap = actionContext.getSession();         sessionMap.put("sessionKey", "sessionValue");        // 获得 request对象的方法比较特殊,需要由 Action 的上下文调用方法获得,注意此时所有的 request,session ,application 都不是 Servlet里面的        Map<String,Object> requestMap = (Map<String, Object>) actionContext.get("request");        requestMap.put("requestKey", "requestValue");        /**         * actionContext.getParameters() 放回的是 Map<String,Object> 但实际上,Object 就是 String[]数组         * 1. parameters 对象写入的数据,读不出,所以仅用于读键的值         * 2. 注意其输出的时需要强转为 String[],然后按下标进行读取,         * 3. 值为 Strig[] 数组的原因是,一个 key 可以对应多个值         */        Map<String ,Object> parameters = actionContext.getParameters();     // 得到请求参数的 map        /**         *  当访问 :  http://localhost:8089/Struts02/testActionContext.action?age=100         *  request - > null         *  parameters -> 100          *  // 这里表名 parameters 表示对参数的读取操作          */        System.out.println("request : "+requestMap.get("name")); // 验证其输出的值,是否与 parameters 输出的相同 !! 验证表名不一致        System.out.println("parameters : "+((String[])parameters.get("age"))[0]    );   // 通过请求参数读出键         return "success";    }}

II. 继承相对于的 XxxAware 接口

public class TestApplicationAware02 implements ApplicationAware,SessionAware,RequestAware,ParameterAware{// 可以同时 implements SessionAware,RequestAware,当一个类    /**     *  1. 会自动赋值,由框架内部调用函数进行操作      *  2. 所以可以在 execute 里面直接进行上面的操作     */    private Map<String,Object> applicationMap;    private Map<String,Object> sessionMap;    private Map<String,Object> requestMap;    private Map<String, String[]> parameters;     public String execute(){        return "success";    }    public void setApplication(Map<String, Object> arg0) {        // TODO Auto-generated method stub        applicationMap = arg0;    }    public void setSession(Map<String, Object> arg0) {        // TODO Auto-generated method stub        sessionMap = arg0;    }    public void setRequest(Map<String, Object> arg0) {        requestMap = arg0;    }    public void setParameters(Map<String, String[]> arg0) {        parameters = arg0;    }}

二. 获得与 Servlet 相关的Web 资源

I. 利用 ServletActionContext 上下文获得

public class TesstHttpServlet {    public String execute(){        /**         *  1. 由 ServletActionContext 可以得到与 Servlet相关的所有对象         *  2, 可以得到 Servlet 的上下文         */        ServletContext servletContext = ServletActionContext.getServletContext();        HttpServletRequest request = ServletActionContext.getRequest();        HttpSession session        = ServletActionContext.getRequest().getSession();        HttpServletResponse response = ServletActionContext.getResponse();         System.out.println(request);            System.out.println(session);        System.out.println(response);        return "success";    }}

II. 实现 XxxAware 接口

public class TestServlet02 implements ServletContextAware,ServletRequestAware,ServletResponseAware {    /*     * 通过实现 ServletXxxAware 为 Struts2 为其注入需要的 Servlet 相关的对象     * ServletContextAware 注入 ServletContext       * ServletRequestAware 注入 ServleHttpServletRequest     * ServletResponseAware 注入 ServletHttpServletResponse     */    private ServletContext servletContext;    private HttpServletRequest req;    private HttpServletResponse resp;     public String execute(){        /**         *  实现了 类的 aware 接口都能自动为其赋值         */        System.out.println(req);        System.out.println(resp);        System.out.println(servletContext);        return "success";    }    public void setServletContext(ServletContext servletContext) {        // TODO Auto-generated method stub        this.servletContext = servletContext;    }    public void setServletRequest(HttpServletRequest req) {        // TODO Auto-generated method stub        this.req = req;    }    public void setServletResponse(HttpServletResponse resp) {        // TODO Auto-generated method stub        this.resp = resp;    }}
原创粉丝点击