struts2中的重定向 请求里的多例和单例 springmvc struts2

dispatcher:默认的是dispatcher就是转发,携带处理后的数据到指定的jsp资源。

redirect:重定向,会失去所有的请求参数、请求属性和action处理后的结果。

redirection:与redirect相似,也是重新生成一个全新的请求。当需要让一个action处理结束后直接请求重定向到另一个action时使用。

注意:redirect 与redirection区别

struts2的项目里遇到一个问题,业务是这样的:修改一个post的信息,结束后使用type为redirection的result重定向到另一个action,显示更新后的列表。

更新时用input的name为post.属性,postAction中设了私有的属性去接受。修改后重定向到postAction中的显示列表的方法,再把数据传到前台,前天用的iterator标签迭代所有post,var=“post”,列表里所有的post属性都变成更新的那个了。 原因就是接受到了更新时post 的属性,但是重定向是不会携带原始数据的。

自己感觉应该是因为重定向后,由于action中有成员变量,是多例的,所以在在一次会话中还保存着post的属性值,故能取出来。

方法就是input的name属性和迭代时list中的var值尽量避免使用重复的,这样用el表达式取值就会区分开。

springmvc 的controller在spring容器管理默认是singleton的,因为controller中没有成员变量,多个线程访问时不会造成线程不安全的情况出现。

而struts2默认是多例的

时间: 2024-10-10 02:31:38

struts2中的重定向 请求里的多例和单例 springmvc struts2的相关文章

struts2中如何根据请求路径定位到详细的访问action

在struts2中在访问一个菜单链接时,我们只需要将相应的package 命名空间和 action的name进行组合,并加上相应的后缀,就可以直接访问到相应的Action了,那么这个过程是如何进行的,多个相同命名空间的 package是如何满足互不冲突的呢,这就需要详细了解struts2中是如何解析路径信息,并根据访问路径寻找相应的action配置了. 整个过程我们可以分成以下几个步骤进行处理 解析xml,将所有可以访问到的路径信息进行保存 根据访问请求信息,取其中可用的路径 根据路径进行查找,

struts2中action手动获取參数

struts2中action手动获取Session,jsp页面參数 1. ActionContext 在Struts2开发中,除了将请求參数自己主动设置到Action的字段中,我们往往也须要在Action里直接获取请求(Request)或会话(Session)的一些信息, 甚至须要直接对JavaServlet Http的请求(HttpServletRequest),响应(HttpServletResponse)操作. 我们须要在Action中取得request请求參数"username"

Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效

问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知道是Struts2中不支持还是需要其他的配置. 原因:因为struts2采用过滤器的方式处理请求,默认情况时监控url地址的变化 解决办法1.配置web.xml 解决 [html] view plaincopyprint? <filter-mapping> <filter-name>s

struts2中 jsp:forward 失败原因及解决办法

问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知道是Struts2中不支持还是需要其他的配置. 原因:因为struts2采用过滤器的方式处理请求,默认情况时监控url地址的变化 解决办法1.配置web.xml 解决 1 <filter-mapping> 2 <filter-name>struts2</filter-name&g

Struts2中Action接收参数

Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=Magci: 2.使用DomainModel接收参数:     a.定义:定义Model类,在Action中定义Model类的对象

android里单例对象和某些数据被释放的问题

接触正式的android开发已经有一段时间了,项目的第一个版本终于快完成了.有一次自己在测试的时候,把自己的android项目切到后台,同时打开了几个应用之后重新切回到自己的app,发现报错了.经过排查,发现是自己的单例对象中的数据被释放掉了,也就是int变量的值 变成了0,string变量的值变成了null. 我的单例一开始是这样的(举例); public class UserInfo { private static UserInfo userInfo = null; private int

iOS 中的单例设计模式

单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单例在那个文件下都能取得到. 通过单例设计模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节省系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的选择. 下面来点实在的,创建单例代码上 方法1:基于线程安全创建一个单例 .h做一下声明 + (id)

不允许在单例对象中创建Srping容器

spring.net在使用的时候,不允许在单例对象中创建Srping容器 需要将实例化模式转为单例singleton=“false”

在 Swift 中实现单例方法

我们通常在进行开发的时候,会用到一个叫做 单例模式 的东西.相信大家也都对这种模式非常熟悉了.而且单例的使用在平时的开发中也非常频繁. 比如我们常用到的 NSUserDefaults.standardUserDefaults(). 在 Swift 中我们如何实现单例模式呢?如果你曾经对 Objective-C 比较熟悉的话,你可能首先会想到这样写: class DBManager { class var instance: DBManager? class func sharedInstance