写在前面:貌似感觉自己不会写博客,对于这些学习笔记的整理显得有点乱。自己倒是能看得一清二楚,只是生怕会给初学的同学带来阅读方面的麻烦!so sorry ! 这里贴上杨老师的博客地址,http://blog.csdn.net/tianyazaiheruan 大家可以上去学习一下,整理的很好,文章写的也很好!
========================================================================
今天来说说 Serlvet API 的获取
1-使用Struts2 Aware 拦截器 IOC模式
这种方法需要Aaction类实现相应的拦截器接口
1.实现ServletResponseAware接口
实现setServletResponse 方法,Struts2在调用execute方法之前,就会先调用setServletResponse方法,并将response参数传入这个方法。
/**
* 通过IOC的方式注入 需要的Servlet API
*
*/
public class UserAction extends ActionSupport implements ServletResponseAware, ServletRequestAware{
private String username;
private int password;
HttpServletRequest req;
HttpServletResponse resp;
/**
* 实现ServletRequestAware 通过IOC的方式 获得request
*/
@Override
public void setServletRequest(HttpServletRequest req) {
this.req = req;
}
/**
* 实现ServletResponseAware 通过IOC的方式获得Response
*/
@Override
public void setServletResponse(HttpServletResponse resp) {
this.resp = resp;
}
public String login() {
String name = req.getParameter("username");//通过request获得提交的参数
Cookie cookie = new Cookie("cookiename", "fuck");//创建cookie
resp.addCookie(cookie);//添加cookie响应客户端
System.out.println("----UserAction--login()-----" + username + "-----"+ password+"-----"+name);
if (username.equals("admin")) {
return SUCCESS;
}
return ERROR;
}
页面读取cookie<body>
cookie : ${cookie.cookiename.value}
</body>
===============================================================================
我们也可以使用 ServletAction 类来获得request或者session
//获得request
this.req = ServletActionContext.getRequest();
//获得session
HttpSession session = ServletActionContext.getRequest().getSession();
还可以使用 ActionContext 类
通过 org.apache.struts2.ActionContext 类的 get 方式获得相应的对象。
例如:
HttpServletResponse response=(HttpServletResponse) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request=(HttpServletRequest) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
end;