- 浏览: 885931 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
销毁的意思?不是清空。而是使之失效;
一个奇怪的问题:退出系统的时候,按说ServerletListener监听到session的销毁,应该关闭掉session,并且在此之前会销毁session里面的东西,可是我发现退出系统的时候,这些销毁动作并没有产生。
查查资料,才明白,原来在userLogoutaction里面只清空了webwork的session;并没有销毁session;
分别通过一下语句:
ActionContext.getContext().getSession().map.clear();//session清空
ServletActionContext.getRequest().getSession().invalidate();//session失效
资料如下:
由于WebWork对request,parameter,Session和Application都进行了封装,将这些隐含的对象封装成了相应的Map,如RequestMap,ParameterMap,SessionMap和ApplicationMap,而这些Map就组成了ActionContext,因此我们通常都不再需要与request,session这些底层的对象打交道了;
事实上,对于SessionMap的处理即是对Session的处理了。我们可以通过ActionContext的静态方法getContext返回一个ActionContext的实例,然后再调用其getSession方法获得SessionMap,接着就可以利用put和get方法对session进行读写的操作了。
而在页面上,我们可以通过以下的方式对session进行操作:
<webwork:property value="#session.name" />
#session.name表示从SessionMap中取得与"name"这个key对应的对象,实际上是调用了如下的statement:ActionContext.getContext().getSession().get("name"),并且进行了类型的转换。
又如:<webwork:property value="#session.player.name" />
则是在SessionMap中获得了Player对象之后,并调用类Player的getter方法:getName()获得name属性。
简而言之,为了能够降低与部署环境的耦合程度,WebWork将Servlet的隐含对象进行了封装,这在很大程度上简化了开发的工作。而且WebWork也提供了类ServletActionContext,我们通过这个类中的getRequest方法获得原始的HttpServletRequest,然后就可以对request和session这些底层对象进行操作了。但是,一般情况下,利用ActionContext.getSession()可以完成几乎所有的工作了,我们又为什么要去碰那些底层的东西呢?因此我们应该优先考虑使用SessionMap,而不是底层的session。
另外一个需要注意的问题,就是SessionMap和隐藏对象session的作用域是不同的。也就是说,通过 ActionContext.getContext().getSession().put("name","Fantasy Soft"),往SessionMap中写入了与"name"这个key相对应的内容,但是在页面上通过session.getAttribute("name")得到的将会是null。
发表评论
-
ognl表达式
2011-07-07 00:36 1292OGNL是Object Graphic Navigation ... -
在Struts 2_0中实现表单数据校验
2011-07-07 00:02 1137转换与校验(Conversion & Validati ... -
简单的struts2输入校验框架
2011-05-13 23:43 10831.输入页面login.jsp: <%@ page ... -
struts2在学习(十二)--表单验证的两种方式
2011-05-13 23:13 957第四个示例:注解方式校验器---用户注册页面user2_reg ... -
struts2在学习(十一)--表单验证的两种方式
2011-05-13 23:09 902第二个示例:XML配置式校验器---登录和注册页面user_l ... -
struts2在学习(十)--表单验证的两种方式
2011-05-13 22:56 11561. Struts2中的输入校验2. 编码方式校验 1) A ... -
struts2采用convention-plugin实现零配置
2011-05-13 21:58 1111最近开始关注struts2的新特性,从这个版本开始,Strut ... -
基于SSH2框架Struts2拦截器的登录验证实现
2011-04-01 22:00 2288通过之前的Struts2.1.6+Spring2.5.6+H ... -
通过ActionContext类访问Servlet对象
2011-04-01 21:40 1914ActionContext类位于com.opensympho ... -
Struts2 Convention Plugin(三)
2011-03-18 01:26 1196Annotation 参考Convention使用某些注解语句 ... -
Struts2 Convention Plugin(二)
2011-03-18 01:25 1147Results and result codesStruts ... -
Struts2 Convention Plugin(一)
2011-03-18 01:25 1094Introduction从struts2.1版本开始,Conv ... -
struts2页面中的标签调用类的方法
2011-03-15 16:33 1612<s:set name="str" ... -
Apache Struts 2.2.1 GA版发布
2011-03-14 17:14 1334昨日,Apache软件基金会发布了Struts 2.2.1 G ... -
spring2 +hibernate 3 + struts 配置
2011-03-14 15:15 12081. web.xml 1. <?xml versi ... -
Struts2 中action之间的跳转
2011-03-14 12:32 1250转载于http://zhou568xiao.iteye.com ... -
Struts2 的Result Type
2011-03-13 16:35 1041http://www.blogjava.net/duanzhi ... -
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
2011-03-13 16:32 1619dispatcher 为默认跳转类型,用于返回一个视图资源(如 ... -
struts2防止重复提交
2011-03-10 23:07 1289struts2的防止重复提交 也使用到了 token (令牌机 ... -
Struts2 数据输入校验(1) —— 函数验证
2011-02-20 20:47 906用struts2标签库来实现上述目的的基本原理: 错误消息分为 ...
相关推荐
- 如果用户长时间没有进行任何操作,则根据配置的Session过期时间,Session会被销毁,所有存储在其中的数据也会丢失。 4. **性能考虑**: - 使用Session时需要注意性能问题。因为每次请求都会检查Session的存在性...
- Bean实例的生命周期是指Spring容器创建和销毁Bean实例的过程,涉及初始化方法、依赖注入、初始化完成、销毁等关键步骤。 - Spring的MVC是Spring框架中用于Web层的组件,它以MVC设计模式为基础,将Web层的控制逻辑...
- **Struts2 是基于 WebWork 框架进行改进的 MVC 框架。** - **提供丰富的拦截器机制和更灵活的配置方式。** **2. Struts2 与 Struts1 的区别:** - **Struts2 更加灵活和强大,支持拦截器机制。** - **Struts2 ...
`WebWork2`构建在`XWork`之上,以`XWork`为基础,提供了一个支持Web功能的、能够快速构建Web应用的命令模式框架。 2. **Struts2的核心架构** Struts2以**过滤器**(Filter)为核心,采用**拦截器**(Interceptor...
WebWork2本身即建立在XWork之上,继承并发展了XWork的核心特性,如命令模式、拦截器机制等,从而形成了一个更加强大且灵活的Web应用开发框架。 - **XWork框架核心功能**: - **前端拦截器(Interceptor)**:用于...
- **Struts 1与Struts 2**:虽然名称相似,但它们之间没有继承关系,Struts 2实际上是WebWork框架的一个扩展,具备更多的功能和灵活性。 - **Spring与Struts**:Spring主要是一个依赖注入框架,而Struts专注于Web层...
Struts2是MVC模式的一种实现,它结合了WebWork的优点和Struts1的社区资源。Struts2提供了一种强大的拦截器(Interceptor)机制,用于在Action执行前后添加自定义逻辑。在Struts2中,Action类定义了业务逻辑,结果...
final、finally、finalize三者区别:final用于声明常量,finally用在try-catch-finally语句中表示必须执行的代码块,finalize是Object类的一个方法,垃圾回收器在销毁对象之前会调用它。 Io流的层次结构:Java中Io...
在本系统中,Webwork作为Struts的实现,它提供了一套完整的请求处理机制,包括Action类、配置文件(struts.xml)以及视图展现。Action类是业务逻辑的核心,而配置文件则定义了请求与Action之间的映射关系。 **...
1. **继承自WebWork框架:** Struts2在设计上借鉴了WebWork框架的优点,并在此基础上进行了增强和完善。 2. **与Struts1的关系:** 虽然名字相似,但Struts2与Struts1之间并没有直接的继承关系,它们是两个相对独立...
Tapestry是一个基于Java的Web应用框架,它采用了面向组件的开发方式,这使得它与其他如Structs、WebWork、SpringMVC等采用传统面向元素开发方式的框架有所不同。面向组件的开发模式旨在克服面向元素开发中的局限性,...
- **final、finally和finalize**:final修饰符用于声明不可变对象或方法,finally用于确保代码块始终执行,而finalize是垃圾收集器在销毁对象前调用的方法。 - **GC(Garbage Collection)**:Java自动内存管理机制...
- **Session**:代表与数据库的一次会话,用于执行持久化操作,如保存、更新、删除和查询等。 - **Transaction**:事务管理,保证数据的一致性和完整性。 - **Query**:用于执行SQL查询和HQL(Hibernate Query ...