Struts2获取Web容器资源的方式

来源:互联网 发布:特许金融分析师 知乎 编辑:程序博客网 时间:2024/05/16 17:54


方式一:

通过ServletActionContext取得request,返回HttpServletRequest。

通过request.getAttribute取值

HttpServletRequest request = ServletActionContext.getRequest();System.out.println(request.getAttribute("user.username"));

 

方式二:

通过ActionContext取得Context,然后获取key为request的值,返回Map。

通过request.get(key)取值

Map request = (Map)ActionContext.getContext().get("request");System.out.println(request.get("user.username"));

 

方式三:

实现相应的资源接口,如RequestAware,ResponseAware,SessionAware;
实现相应的set方法,再给字段变量赋值。

public class LoginAction2 implements RequestAware {//...private Map<String, Object> request;//...@Overridepublic void setRequest(Map<String, Object> request) {this.request = request;}public String execute() throws Exception {System.out.println(request.get("user.username"));}}

 

方式四:

实现相应的资源接口,如ServletRequestAware,ServletResponseAware
实现相应的set方法,再给字段变量赋值

public class LoginAction2 implements ServletRequestAware {//...private HttpServletRequest request;//...@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;}public String execute() throws Exception {System.out.println(request.getAttribute("user.username"));}}


小结:

(1)如果只是对request、response进行一些简单的操作(设值、取值),推荐使用第二种和第三种Map方式(简单)。

(2)如果需要对request、response进行一些特殊的操作,如(用response写出一些东西,要用到write操作),(用request设值字符集之类),则需要用HttpServletRequest。

原创粉丝点击