大家讨论下struts2小功能

李陵少 2014-04-17 09:37:24
前台jsp页面传递到后台的参数,struts2可以封装到有set方法的Action属性中
一个页面如果点击一个[color=#0000FF]按钮x传递A=1,B=2
另一个按钮xx传递A=1,不设置传递B[/color]点击x按钮后,再点击xx按钮,那么在Action中会有B=2,
struts2不是为每一个请求实例化一个Action么,怎么点击xx会有B=2
求解释?谢谢!!!
...全文
197 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
李陵少 2014-04-17
  • 打赏
  • 举报
回复
恩恩,关键是spring过来捣乱了,
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 20 楼 lilyy1929 的回复:
嗯,谢谢你这么久的帮助 确实是spring管理struts的Action, @Scope("prototype") @Controller("scanActionImpl") 如果把spring设置成prototype多例,就得不到B了, spring管理Action默认用的是单例模式 看来还得多多学习呀
。。我都看晕了。。你这不是SpringMVC 果然还是struts。。怪不得。。如果你只用struts是不会出现这种情况的
李陵少 2014-04-17
  • 打赏
  • 举报
回复
嗯,谢谢你这么久的帮助 确实是spring管理struts的Action, @Scope("prototype") @Controller("scanActionImpl") 如果把spring设置成prototype多例,就得不到B了, spring管理Action默认用的是单例模式 看来还得多多学习呀
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 18 楼 lilyy1929 的回复:
@Controller("scanActionImpl") 貌似用的是spring的mvc,但是有可以返回给struts 应该是spring管理struts吧 spring默认用的是单例模式,不知道这样理解对不对,我百度下
你这确实是springMVC,和struts是两个完全不同的东西,都是MVC框架而已。 SSH是struts+spring+hibernate,这个可以说是spring管理struts。 我上面说的那些还真不好测试,因为struts可以在一次请求之内共享数据。你这俩按钮就没办法了,怎么都是两次请求。 EXT和springMVC都不熟悉。只能帮你到这了。
李陵少 2014-04-17
  • 打赏
  • 举报
回复
@Controller("scanActionImpl") 貌似用的是spring的mvc,但是有可以返回给struts 应该是spring管理struts吧 spring默认用的是单例模式,不知道这样理解对不对,我百度下
李陵少 2014-04-17
  • 打赏
  • 举报
回复
这个是Ext ajax中的异步请求,就是ajax,返回的是json字符串, response.getWriter().println(json);返回到前台 Action: @Controller("scanActionImpl") public class ScanActionImpl extends BasicActionSupportImpl implements IScanAction {}
李陵少 2014-04-17
  • 打赏
  • 举报
回复
在后台打印,但确实是这样的啊,我都把项目重新发布了,结果还是这样,所以迷糊了...测试就是这样的... 不知道哪还有问题?
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 13 楼 lilyy1929 的回复:
Ext: 第一个请求: var params = {startD:start,end:end,type:'pv-rank',sourceId:10}; store_1.load({params:params}); 同一个页面中第二个请求: var params2 = {startD:start,end:end,type:'time'}; store_2.load({params:params2}); Action中属性: protected int sourceId; 有set,get方法 store请求的url指向同一个Action的两个方法 store_1指向的方法 public void getScanDepth(){ System.out.println(sourceId); } store_2指向的方法 public void getScanDepth2(){ System.out.println(sourceId); } store_2的参数没有sourceId,但却能打印出来sourceId=10
我晕。。你这就不是Action方法啊。。Action方法的返回值必须是String。。还有属性的修饰一般是public/private 。。定义private的时候才需要set方法。。等于说你这两个方法就是当作类里面的普通方法,没有牵扯到strus,也没有被拦截器拦截。。 我也没用过EXT。。页面上的不是很清楚。。
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
你是点击按钮传参在后台打印还是在页面上回显?你每点一次肯定都是新请求。。如果是控制台打印肯定不会出现你说的情况。。
李陵少 2014-04-17
  • 打赏
  • 举报
回复
Ext: 第一个请求: var params = {startD:start,end:end,type:'pv-rank',sourceId:10}; store_1.load({params:params}); 同一个页面中第二个请求: var params2 = {startD:start,end:end,type:'time'}; store_2.load({params:params2}); Action中属性: protected int sourceId; 有set,get方法 store请求的url指向同一个Action的两个方法 store_1指向的方法 public void getScanDepth(){ System.out.println(sourceId); } store_2指向的方法 public void getScanDepth2(){ System.out.println(sourceId); } store_2的参数没有sourceId,但却能打印出来sourceId=10
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 11 楼 lilyy1929 的回复:
我现在写两个Action方法,第二个方法没传B怎么也能获得到B呢? 有点迷糊了...
把你的JSP和Action的代码贴上来,我好像没理解你的意思,说的不对。
李陵少 2014-04-17
  • 打赏
  • 举报
回复
我现在写两个Action方法,第二个方法没传B怎么也能获得到B呢? 有点迷糊了...
李陵少 2014-04-17
  • 打赏
  • 举报
回复
wlwlwlwl015小灯光环 谢谢你的热心,我测试下,等下就给分,呵呵
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 8 楼 lilyy1929 的回复:
同一个方法,如果是两个方法就取不到B么?
对,就是上面说的struts2是线程安全的,你每次请求都是一个action。你同一个方法就相当于是一个action请求,值栈和请求是一一对应的,。
李陵少 2014-04-17
  • 打赏
  • 举报
回复
同一个方法,如果是两个方法就取不到B么?
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
引用 6 楼 lilyy1929 的回复:
提交的参数成了放在了对象栈里,那这样的话,在action里面的set,get方法岂不是不安全,你本来没传,但是他会默认是你上次传过来的...是这个意思么?
忘记问了。。你的两个按钮访问的是一个Action方法还是两个Action方法?
李陵少 2014-04-17
  • 打赏
  • 举报
回复
提交的参数成了放在了对象栈里,那这样的话,在action里面的set,get方法岂不是不安全,你本来没传,但是他会默认是你上次传过来的...是这个意思么?
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
这个实例化Action没有关系吧,你提交的属性被struts存在了对象栈里,你定义的是全局变量和具体的某一个Action没有关系,更扯不上spring什么事了吧。
李陵少 2014-04-17
  • 打赏
  • 举报
回复
spring默认是单例的,prototype,我就搞不懂第二次请求为啥它能获得B
李陵少 2014-04-17
  • 打赏
  • 举报
回复
action这样写的: @Controller("scanActionImpl") public class ScanActionImpl ... 是在spring配置呀,也没设置scope 但你点击第二个按钮的时候不应该获得B的值呀 为什么还能获得,而且是第一个按钮设置的值B=2
加载更多回复(2)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧