日期:2014-05-18  浏览次数:20719 次

java页面转向问题
在struts中,action中的添加的方法addnews()中forward到一个页面,在跳转之前用request.setAttribute();将数据传到要跳转的页面,这个页面在struts-config.xml中配置:
<forward name="newslistback" path="/article.jsp"/>
此时页面正常显示,地址:http://localhost:8080/test/news.do?method=addnews,显示没有问题,刷新一次当前页面就网数据库插入一条于刚插入的数据一样的数据,刷新多少次就插入多少条,为了解决这个问题,我将struts-config.xml中对应页面的配置改成<forward name="newslistback" path="/article.jsp" redirect="true" />,页面就不能正常显示了,因为redirect相当于重新访问article.jsp这个页面,在addnews()方法中用request保存的数据都访问不到了,我知道把request.setAttribute();改成session.setAttribute();能够让页面正常显示,但是我整个网站有很多这样的跳转,如果没次跳转都用session保存数据的话,网站的运行速度肯定是越来越慢的,各位有没有好办法,谢谢。

------解决方案--------------------
struts 的Token
------解决方案--------------------
建议你添加成功之后先跳转到一个公用的成功页面,然后再根据传入的url(可以在action里将这个url保存在request中)转到其它页面,不知道这样可不可以你试试
------解决方案--------------------
1. RequestDispatcher requestDispatcher=request.getRequestDispatcher("/article.jsp"); 
requestDispatcher.forward(request,response); 
在添加完后这样跳转到你要的页面。
2. 把数据放到session里,然后到页面中把session中的数据取出后再session.removeAttribute()把保存的数据清掉,这样也不影响内存的占用。


给不给分看着办


------解决方案--------------------
struts 的Token是一个办法(我以前用过);
跳转到公共页面也可以;
session设置后再移除也行。
就看具体那个更符合自己的需要了。
------解决方案--------------------

------解决方案--------------------