JSP记录访问时间

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %><%--
原理
	* JSP本质上就是一个Servlet(继承了servlet),在work目录中会被编译成java和class文件
JSP的脚本:JSP定义Java代码的方式
    1. <%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
    2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员属性或方法。
    3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
JSP的内置对象:
		* 在jsp页面中不需要获取和创建,可以直接使用的对象
		* jsp一共有9个内置对象。
		* 其中3个:
			* request
			* response
			* out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似
				* response.getWriter()和out.write()的区别:
					* 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
					* response.getWriter()数据输出永远在out.write()之前
注意:
    jsp输出中最好不要使用response.getWriter().write()方法输出,tomcat会首先从response缓冲区中寻找,然后再找out缓冲区,使用前者容易影响布局
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        public Cookie isCookieExisted(Cookie[] cookies, String lastTime) {
     
            Cookie result = null;
            if (cookies != null && cookies.length != 0) {
     
                for (Cookie cookie : cookies) {
     
                    if (lastTime.equals(cookie.getName())) {
     
                        result = cookie;
                        break;
                    }
                }
            }
            return result;
        }
    %>

    <%
        Cookie[] cookies = request.getCookies();
        String lastTime = "lastTime";
        Cookie cookie = isCookieExisted(cookies, lastTime); // 判断是否存在lastTime的cookie
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String sdfDate = dateFormat.format(date); // 不论是首次还是已经登陆过,都要设置新的时间
        String encode = URLEncoder.encode(sdfDate, "utf-8"); // cookie的值不能含有空格等特殊字符,因此使用url编码
        if (cookie == null) {
     
            out.write("欢迎您,首次访问");
            cookie = new Cookie(lastTime, encode);
        } else {
     
            String value = cookie.getValue();
            out.write("上次访问时间:" + URLDecoder.decode(value, "utf-8")); // 因为是url编码,因此需要url解码显示
            cookie.setValue(encode);
        }
        cookie.setMaxAge(30 * 24 * 60 * 60);
        response.addCookie(cookie);
    %>
</body>
</html>

你可能感兴趣的:(JavaWeb)