在struts2中可以使用Servlet提供的方法,有以下两种方式访问:
- 与Servlet API解耦的访问方式
- 与Servlet API耦合的访问方式
1、解耦的方式
若以解耦的方式进行访问,组件框架之间相互独立,能够独自正常运行,不进行依赖操作。如下图:
其中获取Session和Application的方法返回的均是Map,而获取Request的方法返回的是Object,需要转成Map。实际上,通过这种方式,是依赖于Map来进行存取的。
以下为代码实例:
if(username.equals("admin") && password.equals("123456") ) {
// 获取Session,返回map
Map<String,Object> session = ActionContext.getContext().getSession();
session.put("currentUser", username);
// 获取Request,返回Object
Map request = (Map) ActionContext.getContext().get("request");
request.put("name", "ycz");
// 获取Application,返回Map
Map<String,Object> application = ActionContext.getContext().getApplication();
application.put("word","事与愿违");
return SUCCESS;
}
然后在页面中可以直接取出Map中的值进行使用:
2、耦合的方式
若以耦合的方式访问,组件框架之间相互依赖,缺少其中一个组件则可能无法正常运行。如下图:
这里返回的就不再是Map了,而是需要的各种类型,在页面中需要从对应的域中来取。代码如下:
if(username.equals("admin") && password.equals("123456") ) {
// 获取Request
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("address", "四川成都");
// 获取Session
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("user", username);
// 获取
ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("name", "程志毅");
return SUCCESS;
}
然后在页面中从各个域中取出需要的值即可: