在struts2中,request和session都被隐藏了struts提供两种方式访问session和request,其中比较常用的是利用SPRING里面所说的IOC即控制反转
IOC方式:
action类实现ServletRequestAware接口,并新建一个HttpServletRequest request
public class UserLoginAction extends ActionSupport implements ServletRequestAware{
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
然后可以生成的request得到对象,如request.getRemoteAddr()
action类实现SessionAware接口,并创建一个MAP对象session
public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setSession(Map session) {
this.session=session;
}
非IOC方式:
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。
获得request对象:
A HttpServletRequest request = ServletActionContext.getRequest();
ServletContext application = ServletActionContext.getServletContext();
B.ActionContext ct= ActionContext.getContext()
HttpServletRequest request= (HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST);
或
ct.put("req","request范围");
ct.getSession().put("session","session范围");
ct.getApplication().put("application","application范围");
显示
${applicationScope.req}
获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。
分享到:
相关推荐
### Struts2内置拦截器简介 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2的核心是拦截器(Interceptor)机制...
- **访问四大作用域中的数据:** Struts2提供了内置的标签库,结合OGNL可以让开发者方便地访问应用中的各种数据。 - **ValueStack与ActionContext:** - **ValueStack存在于Action上下文中:** 每次处理请求时,...
这些漏洞允许攻击者通过精心构造的输入,利用Struts2的内置机制执行任意代码,从而对系统造成严重危害。 首先,s2-005漏洞(CVE-2012-0881)是2012年发现的一个严重问题,它涉及到Struts2的OGNL(Object-Graph ...
Struts2框架经过多年的迭代和发展,其稳定性和功能的全面性得到了广泛认可。尽管当前Spring MVC等其他MVC框架的流行,Struts2仍然是许多企业级应用和遗留系统的首选。掌握Struts2的知识点,对于从事Java Web开发的...
12. ** strut2的安全性**:虽然Struts2在过去曾出现过一些安全漏洞,但随着版本的更新,这些问题得到了修复。开发者需要注意及时更新Struts2的版本,以防止已知安全问题。 以上就是关于“struts2基础jar包”所包含...
在进行数据校验方面,Struts2提供了一套内置的验证机制,确保了输入数据的正确性。Web项目国际化是现代Web应用的必备功能,Struts2支持多语言环境。最后,SiteMesh页面布局框架的引入,使得开发者可以方便地实现统一...
- **Struts2的吸引力**:由于其优秀的设计理念和技术特性,Struts2迅速获得了广泛的关注和应用。对于开发者而言,Struts2不仅提供了更为灵活、高效的开发方式,还具备良好的扩展性和社区支持。 #### 二、Struts2...
如果你只希望在最短的时间内获得对Struts2的最大了解程度,本书的内容可能更加适合你。本书的内容是在学习共享的精神下整理出来的,作者希望所有的朋友都能共享这些资料,并希望得到更多的反馈和指教。 知识点三:...
Struts2提供了内置的数据验证机制,可以通过在Action类中定义`validate()`方法来实现。此方法会在执行Action前被调用,用于检查用户输入是否符合预期格式。 #### 七、StrutsValueStack(值栈)Debug 值栈是Struts2...
### Struts2与Struts的对比 #### 一、简介 在Java Web开发领域,Struts框架一直是构建企业级应用的重要工具之一。Struts最初版本(通常称为...对于开发者而言,选择Struts2意味着可以获得更好的开发体验和技术支持。
- **框架成熟度**:Struts2作为Apache基金会下的开源项目,得到了更广泛的社区支持和发展。 #### 二、Struts2实战指南 **2.1 下载并安装Struts2** - **步骤**: 1. 访问Struts2官方网站下载最新版本。 2. 解压...
OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于访问和操作Java对象图,常用于Struts2的视图层数据绑定。 ### Struts2的Taglib Struts2提供了一系列标签库(Taglib),包括数据标签、控制...
### Struts1与Struts2的关键区别 ...综上所述,虽然Struts1在早期Java Web应用开发中发挥了重要作用,但随着技术的发展,Struts2凭借其更先进的设计理念和技术特性,在实际应用中得到了更广泛的认可和采用。
在"struts2,jar"这个压缩包中,我们很可能是得到了Struts2框架的核心库和其他相关组件的JAR文件。这些JAR文件是开发者在基于Struts2构建应用时需要引入的依赖,它们包含了运行Struts2所需的各种类和资源。 Struts2...