在struts2的action中并没有使用到servletAPI ,所以在方法中无法得到request,session和application对象,但在开发中我们又经常需要用到这些对象,该怎么办呢?
实例1:(如仅仅只是访问或往三个范围中放入属性推荐使用下面这种方法)
Action中
public String execute(){
ActionContext ctx = ActionContext.getContext();
//往ServletContext里放入app
ctx.getApplication().put("app", "application应用范围"); ctx.getSession().put("ses", "session范围");//往session里放入ses
ctx.put("req", "request范围");//往request里放入req
return "success";
}
Struts.xml文件
<action name="helloword" class="cn.itcast.action.HelloWordAction" method="execute">
<result name="success">/WEB-INF/page/message.jsp</result>
</action>
访问路径:
http://localhost:8080/struts2/test/helloword.do
结果:
application应用范围
session范围
request范围
如果想要得到站点目录下的某一个文件的路径就需要得到request对象【request.getRealPath(arg0);】,那么该怎么办呢?
得到request对象、session对象和application对象有两种方法:
方法一: 通过ServletActionContext.类直接获取:
实例2:Action中
public String rsa() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
ServletContext servletContext = ServletActionContext.getServletContext();
request.setAttribute("req", "请求范围属性");
request.getSession().setAttribute("ses", "会话范围属性") ;
servletContext.setAttribute("app", "application。。。。");
//HttpServletResponse response = ServletActionContext.getResponse();
return "success";
}
配置文件struts.xml中
<action name="helloword" class="cn.itcast.action.HelloWordAction" method="rsa">
<result name="success">/WEB-INF/page/message.jsp</result>
</action>
Jsp页面
${applicationScope.app} <br>
${sessionScope.ses}<br>
${requestScope.req}<br>
访问路径:
http://localhost:8080/struts2/test/helloword.do
结果:
application。。。。
会话范围属性
请求范围属性
方法二:实现指定接口,由struts框架运行时注入
复习struts2之访问或添加属性
最新推荐文章于 2021-02-12 21:54:50 发布