request和response
request是请求信息,response是响应信息
response使用的方法:
response.addCookie(Cookie cookie):服务端向客户端增加cookie对象
★★★response.sendRedirect(String location) throws IOException:页面跳转的一种方式(重定向)
response.setContentType(“utf-8”):设置编码格式(响应时的设置)
request的使用方法:
★★★request.getRequestDispatcher(“success.jsp”).forward(request,response);:页面跳转的一种方式(请求转发)
request.setCharacterEncoding(“utf-8”);设置编码格式(请求时的设置)
下面演示页面跳转,(示例:登录) 用到了response.sendRedirect(不常使用)request.getRequestDispatcher().forward(request,response)(常使用)
login.jsp --> check.jsp -->success.jsp
login.jsp
<%--
Created by IntelliJ IDEA.
User: xfj
Date: 2021/5/29
Time: 15:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname"><br>
密码:<input type="password" name="upwd"><br>
<input type="submit" value="登录" ><br>
</form>
</body>
</html>
check.jsp
<%--
Created by IntelliJ IDEA.
User: xfj
Date: 2021/5/29
Time: 15:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
String pwd=request.getParameter("upwd");
if (name.equals("zs")&& pwd.equals("abc")){
response.sendRedirect("success.jsp");
}else{
out.print("用户名密码错了!");
}
%>
</body>
</html>
success.jsp
<%--
Created by IntelliJ IDEA.
User: xfj
Date: 2021/5/29
Time: 15:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
成功了,欢迎你<br>
<%
String name=request.getParameter("uname");
out.print(name+"!");
%>
</body>
</html>
此方法看似成功了,可是我们的欢迎界面用户名zs并没有显示出来,显示为空(如上图),另外在地址栏中,我们确实是跳转到了success.jsp页面,这种方式有数据缺失。
现在我们来换一种方式:
在check.jsp中第19行(15行)不使用response.getRedirect(“success.jsp”)
改成 request.getRequestDispatcher(“success.jsp”).forward(request,response);
我们再来试一下:
1.此时我们已经显示出来了用户名zs,没有发生数据缺失。
2.注意观察路径,此时的路径已经不是success.jsp,而改成了check.jsp
请求转发request和重定向response的区别
请求转发:
1.地址栏的地址不变
2.数据保留,不缺失
3.请求次数是1次
重定向:
1.改变地址,跳到真实地址中
2.数据缺失
3.请求次数是2次
请求转发
重定向