C3P0JDBCUtils
User
UserDao
UserService
UserCountServlet
package bull01.VisitTime;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserCountServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * Servlet创建时就初始化一个count值
     */
    public void init() throws ServletException {
        //初始化一个count值
        int count = 0;
        //将count值存入ServletCount
        this.getServletContext().setAttribute("count", count);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            //解决向页面输出的乱码问题
            response.setContentType("text/html;charset=UTF-8");
            //接收数据
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            //封装数据
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);

            //业务层处理数据
            UserService userService = new UserService();
            User existUser = userService.login(user);
            //验证数据
            if(existUser == null) {
                response.getWriter().println("<h2>对不住了这位壮士,此次登录失败...</h2>");
            } else {
//              response.getWriter().println("<font size='5' style='font-weight:bold;'>登录成功!欢迎这位壮士:<span style='color:blue'>"+existUser.getNickname()+"</span></font>");
//              response.getWriter().println("<h3>页面将在5秒后跳转...</h3>");
//              //Refresh定时跳转
//              response.setHeader("Refresh", "5;url=/Web11/CountServlet");

                //设置状态码
                response.setStatus(302);
                //Location直接跳转
                response.setHeader("Location", "/Web11/userCount/success.html");

                //登录成功获取count值并加1,增加一次登录人次。
                int count = (int) this.getServletContext().getAttribute("count");//object类型要强转
                count++;
                this.getServletContext().setAttribute("count", count);

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 一次请求过来的时候,首先调用的是service方法
     * 然后根据你的form表单是post则调用doPost()方法,get则调用doGet()方法,如果不写,默认为doGet方法
     * 所以,一般情况下,doGet()和doPost()是有一个要被执行的
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //form表单时post,所以这里要调用doget,因为方法都写在doget那边
        doGet(request, response);
    }

}
CountServlet
package bull01.VisitTime;
/*
 * 获得浏览器中带过来的所有的Cookie信息,从数组中查找有没有指定名称的Cookie
 * 判断用户是否是第一次访问:(从数组中没有找到指定名称的Cookie)
 * * 如果是第一次:显示欢迎,记录当前访问的时间存入到Cookie中.
 * * 如果不是第一次:显示欢迎,上一次访问时间,同时记录当前访问的时间存入到Cookie中。
 */
import java.io.IOException;
import java.sql.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bull.Utils.CookieUtils;

public class CountServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //解决向页面输出的乱码问题
        response.setContentType("text/html;charset=UTF-8");
        //获取count值,原本是object类型要强转。
        int count = (int) this.getServletContext().getAttribute("count");

        //获得浏览器带过来的所有cookies
        Cookie[] cookies = request.getCookies();
        Cookie cookie = CookieUtils.find(cookies, "lastVisit");
        //判断是否是第一次
        if(cookie == null) {
            response.getWriter().print("<font size='3' style='font-weight:bold;'>Welcome!此次是本网站的第<span style='color:red'>"+count+"</span>次用户登录!</font>");
        } else {
            //不是第一次
            Long l = Long.parseLong(cookie.getValue());
            Date date = new Date(l);
            response.getWriter().print("<font size='3' style='font-weight:bold;'>Welcome!此次是本网站的第<span style='color:red'>"+count+"</span>次用户登录!       上次登录时间是:"+date.toLocaleString()+"</font>");
        }
        //新建一个cookie对象
        Cookie c = new Cookie("lastVisit",""+System.currentTimeMillis());
        //保存到浏览器端
        response.addCookie(c);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);

    }

}
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐