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";
}
2.struts2访问web资源(在struts2中获取session,request等等)的更多相关文章
- struts2访问web资源
通过ActionContext访问 public class TestActionContextAction { public String execute(){ //获取 ActionContext ...
- spring的普通类中获取session和request对像
在使用spring时,经常需要在普通类中获取session,request等对像. 1.第一钟方式,针对Spring和Struts2集成的项目: 在有使用struts2时,因为struts2有一个接口 ...
- spring在普通类中获取session和request
在使用spring时,经常需要在普通类中获取session,request等对像.比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts2 ...
- Struts2(四):在Action中如何访问Web资源
1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ...
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2在Action中访问WEB资源
什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...
- Struts2 之 Action 类访问 WEB 资源
接着上次博客的内容我继续分享我所学到的知识,和自己在学习过程中所遇到问题以及解决方案.当然,如果读者发现任何问题均可以在下方评论告知我,先谢! 在 Action 中访问 WEB 资源 web 资源 所 ...
- Struts2学习第三课 访问Web资源
1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Contr ...
- 在Action 中访问web资源
1.什么是web资源: HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么要访问web资源? B/S应用的Contr ...
随机推荐
- OAF_开发系列27_实现OAF中Java类型并发程式开发调用XML Publisher(案例)
20150814 Created By BaoXinjian
- Visual Studio远程调试
Visual Studio支持调试远程机器上的程序,经过简单设置后,就像调试本地代码一样方便. 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Pro ...
- Python基础篇【第8篇】: Socket编程(二)SocketServer
SocketServer 在上一篇文章中我们学习了利用socket模块创建socket通信服务,但细心学习后就会发现利用socket模块创建的服务无法进行多进程的处理,当需要进行大量请求处理时,请求就 ...
- Dictionary的几种遍历方法
Dictionary<string, int> list = new Dictionary<string, int>(); list.Add("d", 1) ...
- java中interface的详解
JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类. 如: interface IA{ } public interface: 公开接口 与 ...
- percent的用法
select*from test; 先查询所有的结果一共是8条记录 select top(50) percent *from test; 则只查询该表中百分之50的结果集
- Git Pro - (1) 基础
近乎所有操作都可本地执行 在Git中的绝大多数操作都只需要访问本地文件和资源,不用连网. 三种状态 对于任何一个文件,在 Git 内都只有三 种状态:已提交(committed),已修改(modifi ...
- Arch Linux LibreOffice 中文输入法不能切换
From: http://blog.csdn.net/shallowgrave/article/details/8501629 卸载libreoffice-kde4 # pacman -R libre ...
- C++设计模式-TemplateMethod模板方法模式
Template模板方法模式作用:定义一个操作中的算法的骨架.而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 其关键是将通用算法(逻辑)封装在抽象基 ...
- OPNET下 op_pk_copy()的时间问题
op_pk_copy()是生成新的数据包,包的op_pk_create_time_get()是新数据包的生成时间,统计数据包的端到端时延,以及服务时延需要注意: