大连做网站哪家服务好,聊城制作网站,网站收录服务,嘉兴网站建设seo文章目录需求分析示例代码需求
1.访问一个Servlet#xff0c;如果获取不到上一次访问的时间#xff0c;则提示#xff1a;您好#xff0c;欢迎访问。 2.如果可以获取上一次访问的时间#xff0c;则提示#xff1a;您好#xff0c;欢迎回来#xff0c;您上次访问时间为…
文章目录需求分析示例代码需求
1.访问一个Servlet如果获取不到上一次访问的时间则提示您好欢迎访问。 2.如果可以获取上一次访问的时间则提示您好欢迎回来您上次访问时间为显示时间字符串
分析
在服务器中的Servlet判断是否有一个名为 lastTime 的 cookie 1.有
则响应数据您好欢迎回来您上次访问时间为2018年6月10日11:50: 20 写回 Cookie:lastTime2018年6月10日11 :50:01
2.没有 响应数据您好欢迎访问 写回 Cookie:lastTime2018年6月10日11 :50:01
示例代码
package priv.lwx.cs.example;
/*** 通过Cookie保存用户最后一次访问的时间** author liaowenxiong* date 2022/1/14 16:39*/import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;WebServlet(/last_time)
public class SaveLastTimeByCookieServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(text/html;charsetutf-8);boolean flag false;PrintWriter writer response.getWriter();// 获取所有的CookieCookie[] cookies request.getCookies();// 遍历Cookie数组查找是否存在名为lasttime的Cookieif (cookies ! null cookies.length ! 0) {for (Cookie cookie : cookies) {String name cookie.getName();if (lastTime.equals(name)) {// 存在名为lastTime的Cookie则将变量flag的值设为trueflag true;String value cookie.getValue();// value是application/x-www-form-urlencoded字符串需要解码String decDate URLDecoder.decode(value, utf-8);writer.write(h1您好欢迎回来您上次访问的时间 decDate /h1);// 获取系统当前时间Date date new Date();// 创建日期格式对象SimpleDateFormat sdf new SimpleDateFormat(yyyy年MM月dd日 HH:mm:ss);// 格式化日期对象返回一个日期字符串String strDate sdf.format(date);System.out.println(URL编码前 strDate);// URL编码因为Cookie无法存储空格等特殊字符所以只能将含有空格的字符串转换成application/x-www-form-urlencoded字符串进行存储String encDate URLEncoder.encode(strDate, utf-8);System.out.println(URL编码后 encDate);// 用最新的系统时间替换名为lastTime的Cookie中旧的日期值cookie.setValue(encDate);// 将名为lastTime的Cookie添加到Response对象中response.addCookie(cookie);break;}}}// 没有名为lastTime的Cookieif (cookies null || cookies.length 0 || flag false) {// 获取系统当前时间Date date new Date();// 创建日期格式对象SimpleDateFormat sdf new SimpleDateFormat(yyyy年MM月dd日 HH:mm:ss);// 格式化日期对象返回一个日期字符串String strDate sdf.format(date);System.out.println(URL编码前 strDate);// URL编码因为Cookie无法存储空格等特殊字符所以只能将含有空格的字符串转换成application/x-www-form-urlencoded字符串进行存储String encDate URLEncoder.encode(strDate, utf-8);System.out.println(URL编码后 encDate);// 创建CookieCookie cookie new Cookie(lastTime, encDate);// 设置Cookie的存活时间为1个月cookie.setMaxAge(30*24*60*60);response.addCookie(cookie);writer.write(h1您好欢迎访问/h1);}}
}
注意Cookie无法保存空格等字符串需要进行URL编码进行保存服务端取值时要URL解码