在servlet中可能会牵扯到传值或者跳转的问题,可以能是servlet之间互相跳转,也可能是两个web应用程序之间互相跳转。这就出现了请求转发和重定向。
请求转发:
说道请求转发,不得不提到两个parameter和attribute
parameter | attribute | ||
参数名(String) | 参数值(String) | 参数名(String) | 参数值(Object) |
name | xiaoli |
我们可以在客户端页面上通过<form>表单进行数据提交,在服务器中,通过request来提取
通过getParameter方法对客户端页面提交的数据进行接收
String name = request.getParameter("userName")
attribute则需要通过setAttribute方法,在服务器端进行输入添加。
request.setAttribute("xuehao", "123456");
而我们传值的办法,就是通过传递request来达到传值的目的
(request里面的值包括表单上可以通过parameter方法获得的的参数和服务器端通过setAttribute方法输入的。)
RequestDispatcher wxm = request.getRequestDispatcher("/LiServlet");
wmx.forward(request, response);//LiServlet是下一跳的servlet
接下来就是通过上面的语句进行请求转发了。
请求转发的特点:
1.请求转发需要RequsetDispatcher,最后通过forward方法传递request和response
2.request数据从第一个servlet 到第二个servlet不会丢失,因为是同一个request
3.转发只能web应用程序内部进行转发
4.如果第一个servlet请求方法是doGet,那么转发给其他servlet的方法都是doGet,及所有的请求方法类别一致
5.请求转发的地址栏显示的依然是第一个请求资源路径(可能会导致表单的重复提交)
http://blog.csdn.net/u011832252/article/details/26099907