JSP(4)—Cookie创建及简单案例(自动登录)

时间:2022-06-13 21:27:14

Cookie的创建:

创建一个JSP页面,第一次访问时显示没有Cookie,正在创建,再次访问就会自动显示cookie的名称,并设置cookie过期时间


<%
//在javaweb规范中使用Cookie类代表Cookie
//获取cookie
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
out.println(cookie.getName()+" : "+cookie.getValue());
out.println("<br>");
}
}else{
out.println("没有一个Cookie,正在创建并返回...");
//1.创建一个Cookie对象
Cookie cookie =new Cookie("name","Test"); //2.setMaxAge:设置Cookie的最大时效,以秒为单位,若为0,表示立即删除该Cookie,为负数,表示不存储,为正数,表示存储时间
cookie.setMaxAge(30); //调用response的一个方法把Cookie传给客户端
response.addCookie(cookie);
} %>

demo1:自动登录

JSP页面:login.jsp、index.jsp

其中login.jsp登陆,index.jsp显示登录信息

第一次访问index.jsp页面时,会自动跳转到login.jsp页面,再次访问时自会自动显示登陆信息,不需要再次登录

login.jsp

<body>

    <form action="index.jsp" method="post">
name:<input type="text" name="name"/>
<input type="submit" value="Submit"/>
</form> </body>

index.jsp

<body>

        <!-- 自动登录 -->
<!-- 此服务端 -->
<%
//若可以获取到请求参数name,则打印出欢迎信息,把登录信息存储到Cookie中,并设置Cookie的最大时效为30S
String name = request.getParameter("name");
//输入账号提交表单,获取到name字段,创建Cookie并发送到客户端中
if(name != null && !name.trim().equals("")){
//创建一个Cookie,name为login.jsp页面传进来的账号
Cookie cookie = new Cookie("name",name);
cookie.setMaxAge(30);
response.addCookie(cookie);
}else{
//没有输入账号,自动登录,账号从Cookie中获取到
//从Cookieh中获取用户信息,若存在则打印欢迎信息
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
String cookieName = cookie.getName();
if("name".equals(cookieName)){
String val = cookie.getValue();
name = val;
}
}
}
} if(name != null && !name.trim().equals("")){
//显示欢迎信息
out.println("Hello:"+name);
}else{
out.println("Hello");
//既没有表单提交,又没有Cookie,则重定向到index.jsp
response.sendRedirect("login.jsp");
} %> </body>