jsp中的请求转发和重定向
要用到内置对象request和response
请求转发:request.getRequestDispatcher("请求的地址").forward(request, response);
重定向:response.sendRedirect("请求的地址");
无论是请求转发还是重定向都可以实现页面的的跳转,但其中还是有很多的不同
一.request会保留提交的数据,response不会(以表单为例)
在login.jsp页面中创建表单,提交单servlet中
<form action="servlet1" method="get">
名字:<input type="text" name="username" value=""><br>
密码:<input type="password" name="password" value=""><br>
<button>提交</button>
</form>
在servlet中转发到index.jsp
request.getRequestDispatcher("index.jsp").forward(request, response);
在index页面中获取表单的值,中间经过一次,转发,依然可以获取到
String username = request.getParameter("username");
String password = request.getParameter("password");
out.print("用户名为"+username);
out.print("<br>");
out.print("密码为"+password);
如果在jsp页面中换成
response.sendRedirect("index.jsp");
的话,就会发生数据的丢失,输出的结果为null
二.请求的次数不同
请求转发请求的次数为1
类似与一个传递的过程
重定向请求的次数为2
类似与请求错了,再发一个请求
三.地址栏是否改变
请求转发的地址不会发生改变
地址栏显示的地址为请求转发页面的地址(还是servlet)
重定向的地址会发生改变(地址为重定向后那个页面的地址)