zoukankan      html  css  js  c++  java
  • Struts2 访问web元素

    访问web元素的四种方法(耦合,依赖注入)、(耦合,非依赖注入)、(非耦合,依赖注入)、(非耦合,非依赖注入)

    耦合:可以得到HttpServletResponse,HttpServletRequest,HttpSession等类型对象。能直接操作到真正的web元素。

    非耦合:得到的是由struts封装好的Map类型,只能对范围进行存取值操作。

    依赖注入:对象由struts2从外部注入。Action类不需要关心对象是如何得到的。

    非依赖注入:对象由Action类自己提供初始化。

    耦合

      非依赖注入

     1 public class UserAction extends ActionSupport{
     2     //类型为真实的web元素:HttpServletResponse,HttpServletRequest等..
     3     private HttpServletResponse resp;
     4     private HttpServletRequest req;
     5     private HttpSession session;
     6     private ServletContext app;
     7     
     8     public String execute() throws IOException{
     9         req = ServletActionContext.getRequest();     //得到request
    10         resp = ServletActionContext.getResponse();    //得到response
    11         app = ServletActionContext.getServletContext();   //得到application
    12         session = ServletActionContext.getRequest().getSession();  //得到session
    13         //操作
    14         req.setAttribute("req", "write req..");    //往request里存值
    15         session.setAttribute("session", "write session");    //住session里存值
    16         session.getAttribute("session");         //从session里取值
    17         resp.getWriter();      //得到response的 PrintWriter
    18         return "test";
    19     }
    20 }

      依赖注入

     1 //实现ServletRequestAware,ServletResponseAware接口
     2 public class UserAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
     3     private HttpServletResponse resp;
     4     private HttpServletRequest req;
     5     private HttpSession session;
     6     private ServletContext app;
     7     
     8     public String execute() throws IOException{
     9         //操作
    10         req.setAttribute("req", "write req..");              //往request里存值
    11         session.setAttribute("session", "write session");    //住session里存值
    12         session.getAttribute("session");                     //从session里取值
    13         resp.getWriter();                                    //得到response的 PrintWriter
    14         return "test";
    15     }
    16     
    17     //重写setServletResponse方法,Response对象不需要自己得到,由struts2从外部注入
    18     public void setServletResponse(HttpServletResponse resp) {
    19         this.resp=resp;                                      //得到response
    20     }
    21     //重写setServletRequest方法,Request对象不需要自己得到,由struts2从外部注入
    22     public void setServletRequest(HttpServletRequest req) {
    23         this.req=req;                                         //得到request
    24         this.session = req.getSession();                      //得到session
    25         this.app = session.getServletContext();               //得到application
    26     }
    27 }

    非耦合

       非依赖注入

     1 public class UserAction extends ActionSupport{
     2     //得到的是由struts封装好的Map类型,只能对范围进行存取值操作
     3     private Map<String,Object> req;
     4     private Map<String,Object> session;
     5     private Map<String,Object> app;
     6     
     7     public String execute() throws IOException{
     8         req= (Map<String,Object>)ActionContext.getContext().get("request");    //得到request
     9         session = ActionContext.getContext().getSession();                     //得到session
    10         app = ActionContext.getContext().getApplication();                     //得到application
    11         //操作
    12         req.put("req", "write req..");                    //存值到request
    13         session.put("session", "write session..");        //存值到session
    14         app.put("app", "write application..");            //存值到application
    15         session.get("session");                           //从session存值
    16         return "test";
    17     }
    18 }

      依赖注入(推荐)

     1 //实现RequestAware,SessionAware,ApplicationAware等接口
     2 public class UserAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
     3     //得到的是由struts封装好的Map类型,只能对范围进行存取值操作
     4     private Map<String,Object> req;
     5     private Map<String,Object> session;
     6     private Map<String,Object> app;
     7     
     8     public String execute() throws IOException{
     9         //操作
    10         req.put("req", "write req..");                    //存值到request
    11         session.put("session", "write session..");        //存值到session
    12         app.put("app", "write application..");            //存值到application
    13         session.get("session");                           //从session存值
    14         return "test";
    15     }
    16     //得到application
    17     public void setApplication(Map<String, Object> app) {
    18         this.app=app;
    19     }
    20     //得到session
    21     public void setSession(Map<String, Object> session) {
    22         this.session=session;       
    23     }
    24     //得到request
    25     public void setRequest(Map<String, Object> req) {
    26         this.req= req;           
    27     }
    28 }
  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/likailan/p/3334553.html
Copyright © 2011-2022 走看看