- response响应对象
提供的方法:
- void addCookie(Cookie cookie); :服务端向客户端增加cookie对象
- void sendRedirect(String location) :throws IOException:页面跳转的一种方式(重定向)
- void setContentType(String type): 设置服务端响应的编码(设置服务端的contentType类型)
新建三个login.jsp,check.jsp,success.jsp,其中check中有两种方法(重定向,请求转发)
1.login.jsp
<html>
<head>
<title>Title</title>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname"></br>
密码:<input type="password" name="upwd"></br>
<input type="submit" value="登陆">
</form>
</head>
<body>
</body>
</html>
2.check.jsp
<html>
<head>
<title>check</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name= request.getParameter("uname");
String pwd= request.getParameter("upwd");
if(name.equals("lch")&&pwd.equals("123")){
//如果成功,跳转到success页面
//1.重定向方法 会导致数据丢失
// response.sendRedirect("success.jsp");
//2.请求转发
//可以获取到数据 并且地址栏没有改变(仍然保留转发页面)
request.getRequestDispatcher("success.jsp").forward(request,response);
}
else{
out.print("登陆失败");
}
3.success.jsp
<html>
<head>
<title>success</title>
</head>
<body>
登陆成功
欢迎
<%
String name=request.getParameter("uname");
out.print(name);
%>
当为重定向时,success页面不能显示用户的名称
当为请求转发时,success页面可以显示用户的名称
2.请求转发,重定向的区别
name | 请求转发 | 重定向 |
---|---|---|
地址栏是否改变 | 不变(check.jsp) | 改变(success.jsp) |
是否保留第一次请求时的数据 | 保留 | 不保留 |
请求次数 | 1 | 2 |
跳转发生的位置 | 服务端 | 客户端发生二次跳转 |
转发:
客户端 -> [服务窗口A(服务端)-> 服务窗口B(服务端)]重定向:
客户端 -> [服务窗口A] ->去找服务窗口B
客户端 -> [服务窗口B]
session(服务端)
(1)Cookie(客户端,不是内置对象)
Cookie是由服务端生成的,再发送给客户端保存。
相当于本地缓存的作用:客户端->服务端(hello.mp4)
服务端产生发送给客户端,下次看电影直接可以在本地看
作用:提高访问服务的效率,但是安全性较差
Cookie : name=value 键值对
由javax.servlet.http.Cookie产生
public Cookie(String name,String value)
String getName()
String getValue()
void setMaxAge(int expiry) ;最大有效期(秒)
(2)服务端发送给客户端cookie步骤
- response.addCookie(Cookie cookie) //产生一个cookie对象放到这个里面
- 页面跳转(转发,重定向)
- 客户端获取Cookie: request.getCookies();
注意:
a.服务端增加cookie: response对象;客户端获取对象:request对象
b.不能直接获取一个对象,而是一次获取所有cookie对象,然后遍历
(3)新建cookie实例
- 1.新建reponse_addCookie.jsp
<html>
<head>
<title>response cookie</title>
<body>
<%
//服务端
//1.创建两个cookie对象(key,value)
Cookie cookie1 = new Cookie("name","zs");
Cookie cookie2= new Cookie("pwd","123");
//2.然后将cookie对象放入
response.addCookie(cookie1);
response.addCookie(cookie2);
//3.页面跳转到客户端去
response.sendRedirect("result.jsp");
%>
</body>
</html>
- 2.创建result.jsp
<html>
<head>
<title>result</title>
</head>
<body>
<%
//客户端
//创建cookie对象数组 存储cookie
Cookie[] cookies=request.getCookies();
for (Cookie cookie:cookies) {
//使用cookie.getName和cookie.getValue方法输出cookie键值对
out.print(cookie.getName()+"--"+cookie.getValue()+"</br>");
}
%>
</body>
</html>
-
运行结果
4.png