jsp页面转发问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 10:36:36
如何使用response.sendRedirect()实现request.getRequestDispatcher().forward()的功能。我的意思是用后面的可以将前一个页面设置的共享属性用request.getAttribute得到,但是不能做页面的刷新了。用response.sendRedirect()虽然可以刷新却不能得到共享的数据,怎么处理这个问题?
用session保存和用url把值传过去我也知道,不过用session保存的数据,作用域太大,url传递又不够安全,老师说有更好的办法。标准的DAO模式的话,是用java程序读写数据库,最后只返回一个bean,主要是要带个bean过去,用url传递可以把bean传递过去吗?

request.getRequestDispatcher().forward()是转发,是在同一个请求里。response.sendRedirect()是重定向,因此放在request里的数据不会被传过去。你这个共享数据可以有两种解决办法。一个是把数据保存在session里,只要在同一个会话过程中就不会过期。另一种是在转向别的页面的时候顺便把数据传过去。例如response.sendRedirect("success.jsp?username="+username);这样在success.jsp里就可以用String username=request.getParamter("username");来得到这个数据了。
呵呵,那你就用数据库或者xml来存读吧。
用session可以 保存。

request.getRequestDispatcher().forward();
可以到达页面的刷新,仅是容器内转发,浏览器的地址不会变。

response.sendRedirect("index.jsp?id="+1)
可以这样来传参。
也可以把id值加入session中,使用session来取值。

session.setAttribute()作用域是一个session
request.setAttribute()作用域就只是一次请求.可以用这个,但这个的话只能用request.getRequestDispatcher().forward()

都正解了.