1. 在struts2中有两种方式使用SercletAPI,一种解耦方式,一种耦合方式。
2. 解耦方式就是使用ActionContext 来实现,是完全解耦 servletAPI。 ActionContext可以在任何地方使用(action,service,dao).
实例如下:
public String login(){ System.out.println("用户名:"+username+" 密码:"+password); if("siggy".equals(username)&&"1111".equals(password)){ //通过ActionContext获取session Map<String,Object> session = ActionContext.getContext().getSession(); session.put("currentUser", "siggy"); //获取全局域 ActionContext.getContext().getApplication(); //获取请求域中的数据 ActionContext.getContext().get("request"); return Action.SUCCESS; } return "login"; }
3. 通过耦合的方式来使用ServletAPI.耦合方式既SercletAPI本身的对象。
(a) .通过ActionContext来实现耦合。
实例如下:
//登录处理方法 public String login(){ System.out.println("用户名:"+username+" 密码:"+password); if("siggy".equals(username)&&"1111".equals(password)){ //通过ActionContext获取HttpServletRequest对象 HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST); req.getSession().setAttribute("currentUser", "siggy"); return Action.SUCCESS; } return "login"; }
(b) 通过ServletActionContext 来获取servletAPI:
实例如下:
public String login(){ System.out.println("用户名:"+username+" 密码:"+password); if("siggy".equals(username)&&"1111".equals(password)){ //通过ServletActionContext获取HttpServletRequest对象 HttpServletRequest req = ServletActionContext.getRequest(); req.getSession().setAttribute("currentUser", "siggy"); return Action.SUCCESS; } return "login"; }
(c)通过实现SerletRuestAware接口来获取HttpServletRequest对象
实例如下:
public class User3Action implements ServletRequestAware{ private String username; private String password; private HttpServletRequest req; //登录处理方法 public String login(){ System.out.println("用户名:"+username+" 密码:"+password); if("siggy".equals(username)&&"1111".equals(password)){ req.getSession().setAttribute("currentUser", "siggy"); return Action.SUCCESS; } return "login"; } public void setServletRequest(HttpServletRequest request) { req = request; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }