JSP内置对象之response:
response对象用于响应客户请求并向客户端输出信息(设置响应参数等)
页面重定向:
void sendRedirect(String location)
客户端将重新发送请求到指定的URL
实现登陆验证,并验证成功后跳转至欢迎页面
input.jsp:
<body>
<form action="controller.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
controller.jsp:
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("curry") && password.equals("30")){
response.sendRedirect("welcome.jsp");
}else {
out.print("用户名或密码不正确");
}
%>
成功页面:welcome.jsp:
<body>
欢迎访问
</body>
主要代码: response.sendRedirect("welcome.jsp");
//1.通过响应告诉浏览器该请求这样的一个地址栏了
//2.浏览器访问指定的url 302代表告诉浏览器重定向一个url
需要在welcome.jsp获取用户名:使用:
<%=request.getParameter("username")%> 欢迎访问:(X)
页面实现为null
//浏览器发起了两次请求 导致第一次请求 失败
//1.当第一次请求失败的时候,把数据进行保存 使用数据作为参数来发起第二次请求
---》1::response.sendRedirect("welcome.jsp?username="+username);
//2.只发送一次请求 完成页面跳转
如何才能实现页面跳转后,请求数据不丢失?
使用转发取代重定向实现页面跳转
转发:
转发的作用:
在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
转发的实现:
RequestDispacher对象的forward()方法
RequestDispatcher rd=response.sendRedirect("welcome.jsp"); rd.forword(request,response)
转发/重定向:
重定向与转发的详细区别:
1.重定向
(1).客户端向服务器端发送请求1,接收到请求后,执行sendRedirect()方法,返回给客户端,
(2).客户端向服务器端发送请求2
2.转发
客户端向服务器端发送请求1,服务器端接收到后调用getRequestDispatcher()方法,把请求转发给请求2.
整个过程是在服务器端完成的,并且是在一个request中完成,共享数据。
区别:
1.行为不同
重定向是客户端行为,转发是服务器端行为
2.url不同
重定向url地址栏会发生变化,转发不会发生变化
3.请求次数不同
重定向会发送2次请求而转发只会发送一次请求
4.速度不同
因为重定向会发送两次请求,所以响应速度要比转发慢
5.数据共享不同
重定向不会共享数据 ,转发共享数据
6.跳转限制
重定向可以跳转任何URL,而转发只能跳转本站资源
注意一种传参的方式:(*)
<a href="welcome.jsp?name=库里">库里</a>
<a href="welcome.jsp?name=詹姆斯">詹姆斯</a>
<a href="welcome.jsp?name=欧文">欧文</a>
在后文只需要接收:
球星是:<%=request.getParameter("name")%>