struts2访问servlet,jsp九个内置对象一般常用的是requset,application,session这三个个。
访问的方式分为IOC(控制反转),中文给它形象的称呼是耦合(非IOC也是如此称呼)和非IOC(或称Dependency Injection,依赖注入)解耦合的两种方式。
方式有如下两种:
这里只针对 Servlet 中常用的,如 HttpServletRequest、HttpServletResponse 和 HttpSession 来展开。
一般来说,在 Struts2 中访问 Servlet API 的方式有2种:
(1) 直接访问 Servlet API。这将会使得你的 Action 类与 Servlet API 耦合在一起。
(2) 通过 Struts2 API 来访问 Servlet API,这样 Action 类就不会再跟 Servlet API 耦合。
耦合的方式:
方式1:(推荐)
得到session对象:HttpSession session = request.getSession;//从request请求中得到session
对于想得到application对象:(这两个方式都可以)
ServletContext application = request.getServletContext();
ServletContext application = session.getServletContext();
方式2:
直接在类或者页面里面实现这些接口即可;
在JSP里面,这些都是内置对象。可以不放置这些。
而在类里面设置,不过最好是用private修饰这几个对象,之后设置set 和 get方式这样就更安全一些。
HttpSession session = null ;
HttpServletRequest request = null ;
ServletContext application = null ;
HttpServletResonse response = null;
这样在JSP和类里面都得到了这几个对象了。
解耦合方式:(它们都是得到的是封装类型):
方式3:先为了看清楚细节,我们这样设置:
ActionContext ac = ActionContext.getContext(); //得到当前action的上下文
对于request对象,则是如下的方式:
Map request = (Map) ac.get("request"); //这里得加上request
或这种方式HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
ActionContext.getContext().get("放入要取的类型"),它得到的是一个Object对像。下面的getSession 和getApplication都 是这样的;
或者是这样的方式:Map<String,Object> request = (Map<String, Object>) ac.get("request");
对于session对象,则直接用
Map session = ac.getSession();
或者:
Map<String,Object> session = (Map<String, Object>) ac.getSession();
对于application对象:
Map application = ac.getApplication();
或者是:Map<String,Object> aplication =(Map<String, Object>) ac.getApplication();
一般这些封装的类型,都是定义为封装属性,之后设置set和get方法即可;
方式4:
先设置对像:
Map<String,Object> request ;
Map<String,Object> session
Map<String,Object> application;
接下来就直接set(在api里面默认就要求必须实现)和get方法(可以不用设置)。
接下来就可以设置和取值了。
经过上面的所有说明,解耦合方面struts2是没有为page提供任接接口的,要用的时候直接使用方式1或者方式1即可。
几个参考的网站:
http://www.blogjava.net/fancydeepin/archive/2014/03/17/struts-servlet.html
http://www.cnblogs.com/codeplus/archive/2011/08/09/2132248.html
http://www.cnblogs.com/li-peng/p/3787603.html
http://www.itzhai.com/visit-the-web-element-using-struts2-ioc-assignment-requestaware-sessionaware-applicationaware.html
http://waynerqiu.com/1/103.html
http://blog.csdn.net/farawayhome/article/details/6408958