2.struts2访问web资源(在struts2中获取session,request等等)

什么是web资源:web资源就是指request,response,session,servlet的api

为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问web资源,向作用域读写数据。。。。。。等等

怎么访问web资源:

  和servlet解耦的方式访问:有限的访问servlet的 api对象,有限的方法

    使用ActionContext去访问

    实现XXXAware这个接口

  和servlet耦合的方式访问:可以访问更多(全部)的servlet的API

    使用ServletActionContext去访问

    实现ServletXXXAware这个接口

    

  1.解耦合和方式使用ActionContext获取web资源 

/**
* 获取Application作用域
* @return
*/
public String execute(){
//获取Action的上下文,就是action的一些运行信息,环境等等
ActionContext actionContext=ActionContext.getContext();
//得到封装过的application
Map<String, Object> application=actionContext.getApplication();
//把数据放到application的作用域
application.put("name", "小白");
return "success";
}
/**
* 获取session作用域
* @return
*/
public String execute2(){
//获取Action的上下文,就是action的一些运行信息,环境等等
ActionContext actionContext=ActionContext.getContext();
//得到封装过的session
Map<String, Object> session=actionContext.getSession();
//把数据放到session的作用域
session.put("name2", "小白2");
return "success";
}
/**
* 获取Request作用域
* @return
*/
public String execute3(){
//获取Action的上下文,就是action的一些运行信息,环境等等
ActionContext actionContext=ActionContext.getContext();
//得到封装过的request
Map<String, Object> request=(Map<String, Object>) actionContext.get("request");
//把数据放到request的作用域
request.put("name3", "小白3");
return "success";
} /**
* 获取请求参数(不推荐使用,Struts会封装)
* @return
*/
public String params(){
//获取Action的上下文,就是action的一些运行信息,环境等等
ActionContext actionContext=ActionContext.getContext();
//获取请求参数,得到参数的对象
Map<String, Object> params= actionContext.getParameters();
String name=((String[])params.get("name"))[0];
String sex=((String[])params.get("sex"))[0];
System.out.println(name+":"+sex);
return "success";
}

  2.解耦合和方式使用XXXAware获取web资源

/**
* 只要实现对应的ApplicationAware接口,或者SessionAware等就可以
* @author Administrator
*
*/
public class ApplicationDemo implements ApplicationAware{
Map<String, Object> application; public String execute(){
application.put("xx","xx");
return "success";
}
public void setApplication(Map<String, Object> application) {
this.application=application;
}
}

  3.耦合和方式使用ActionContext获取web资源(其他的使用方式类似)

    public String execute(){
//通过ServletActionContext可以获取需要的Servlet api相关的对象
HttpServletRequest request=ServletActionContext.getRequest();
String name =request.getParameter("name");
request.setAttribute("name", "小白");
HttpSession session= ServletActionContext.getRequest().getSession();
session.setAttribute("name2", "小白2");
return "success";
}
上一篇:router-link 返回上页 和 新窗口打开链接


下一篇:Nginx入门篇-基础知识与linux下安装操作