• 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 }
  • 相关阅读:
    CXF对Interceptor拦截器的支持
    SpringBoot 自定义Banner
    Spring Boot应用的后台运行配置
    CXF 开发 REST 服务
    CXF SOAP 及其安全控制
    Cxf 自动生成客户端服务端代码
    跨域的另一种解决方案CORS(CrossOrigin Resource Sharing)跨域资源共享
    从 MVC 到前后端分离
    远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
    MYSQL
  • 原文地址:https://www.cnblogs.com/likailan/p/3334553.html
Copyright © 2020-2023  润新知