您的位置:首页 > 编程语言 > Java开发

Struts2 访问web元素

2016-01-25 16:58 344 查看
访问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 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts struts2.0 web