访问或添加request、session、application
2017-07-01 本文已影响0人
exmexm
一、通过ActionContext类获取session、application从而往里面添加或访问属性
配置文件:
<action name="testAttri" class="cn.itcast.action.LoginAction" method="AttributeTest">
<result name="success">/WEB-INF/page/attribute.jsp</result>
</action>
Action类:
public String AttributeTest() {
ActionContext act = ActionContext.getContext();
act.getApplication().put("app", "全局范围");
act.getSession().put("ses", "会话范围");
act.put("req", "请求范围");
return "success";
}
jsp:
<body>
${applicationScope.app }
${session.ses }
${req }
</body>
二、获取HttpServletRequest/HttpSession/ServletContext/HttpServletResponse对象
包含方法1和方法2.
方法1:通过ServletActionContext类直接获取
HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().setAttribute("sess", "session");
ServletContext servletContext = ServletActionContext.getServletContext();
servletContext.setAttribute("con", "Scontext");
HttpServletResponse response = ServletActionContext.getResponse();
方法2:通过指定接口,由struts框架运行时注入:
public class LoginAction implements ServletRequestAware,ServletResponseAware,ServletContextAware{
private ServletContext context;
private HttpServletResponse res;
private HttpServletRequest req;
@Override
public void setServletContext(ServletContext arg0) {
this.context = arg0;
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.res = arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.req = arg0;
}
}