struts2中耦合访问servlet

struts2中耦合访问servlet- API有三种,推荐使用第二种。当然,尽量用解耦合的方式访问,解耦合方式访问内容在上一篇文章中有解释,需要者请查看。

方法一:.[一般推荐使用](只能获得request,而response则得不到)Struts2提供了一个ActionContext类,Struts2中的Action可以通过它进行访问。其方法有:get(),,getApplication(),getContext(),getParameters(),getSession(),setApplication(),setSession()

public class LoginAction implements Action{ private String username; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() throws Exception { //获取静态方法,获取系统的ActionContext实例 ActionContext ctx = ActionContext.getContext(); //获取servletContext里的counter属性 Integer counter = (Integer)ctx.getApplication().get("counter"); if (counter == null) { counter = 1; } else { counter = counter + 1; } //将增加1后的counter值设置成counter属性 ctx.getApplication().put("counter" , counter); ctx.getSession().put("user" , getUsername()); if (getUsername().equals("scott")&& getPassword().equals("tiger") ) { //直接设置HttpServletRequest属性 ctx.put("tip" , "服务器提示:您已经成功的登陆"); return SUCCESS; }else{ //直接设置HttpServletRequest属性 ctx.put("tip" , "服务器提示:登陆失败"); return ERROR; } }}

方法二:强烈推荐使用

Struts2还提供了一个ServletActionContext,其静态方法有:getPageContext(),getRequest(),getResponse(),getServletContext()

HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();request.getSession().setAttribute("username","admin");request.setAttribute("password", "1234");

方法三:[不推荐](麻烦,与servlet API 耦合大).

虽然Struts2提供了ActionContext来访问Servlet API,但这种访问毕竟不能直接获得Servlet API,为了在Action中直接访问Servlet API,Struts2还提供了一下接口:ServletContextAware,ServletRequestAware,ServletResponseAware下面以ServletResponseAware为例。

//实现ServletResponseAwarepublic class LoginAction implements Action , ServletResponseAware{//需要访问的HttpServletResponse对象 private HttpServletResponse response; private String username; private String password; public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; }//实现ServletResponseAware接口必须实现的方法 public void setServletResponse(HttpServletResponse response) { this.response = response; } public String execute() throws Exception{ Cookie c = new Cookie("user" , getUsername()); c.setMaxAge(60 * 60); response.addCookie(c); return SUCCESS; }}

躲在某一地点,想念一个站在来路,

struts2中耦合访问servlet

相关文章:

你感兴趣的文章:

标签云: