JAVA EE第3次作业

1.创建数据库、表并初始化一些数据

 

 

 

JDBC连接数据库

 

package JDBCHelper;
import com.mysql.jdbc.StatementImpl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
 * 数据库连接
 */
public class MySqlDBUtil {
    public static Connection getConnection() {
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/first?useSSL=true&characterEncoding=utf-8&user=root&password=root");
            System.out.println("数据库连接成功!");
            System.out.println("-------------------------------");
            return connection;
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("创建连接失败!");
        System.out.println("-------------------------------");
        return null;
    }
    public static void ShutDown(StatementImpl statement, Connection connection) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
 
        }
    }
}

数据表查询

package JDBCHelper;

import TableObject.Users;
import com.mysql.jdbc.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UsersTableUtil {
    //登陆校验
    public boolean IsUsersExist(Connection con, Users user) {
        try {
            //验证用户名存在性
            PreparedStatement pstmt;
            String sql = "select * from  users where username=? and password=?";
            pstmt= (PreparedStatement) con.prepareStatement(sql);
            pstmt.setString(1,user.getName());
            pstmt.setString(2,user.getPassword());
            ResultSet rs=pstmt.executeQuery();
            if (rs.next()) {
                //关闭数据库
                MySqlDBUtil.ShutDown(pstmt,null);
                    return true;
            }
            MySqlDBUtil.ShutDown(pstmt,null);
            return false;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }
    }
}

  

2.使用cookie保存登录信息,30天内用户无需登录

 

package Util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

public class CookieSave {
    public void Save(HttpServletResponse response,String name,String value,int last_time)
    {
        //创建Cookie,将用户名存到叫cookieUserName的cookie中
        //Cookie 对象携带需要保存的数据,user.getName()=value,都是字符串类型
        //每个cookie保存一个数据,如果需要多个,创建多个cookie对象
        Cookie cookieUserName = new Cookie(name, value);
        //设置cookie存在时间   单位:秒
        //cookie保存的时间,不管中途是否使用,访问cookie,到时就过期
        //如果不设置,那么cookie在浏览器关闭的时候失效
        cookieUserName.setMaxAge(last_time);
        //将cookie发给浏览器(如果没有这句,cookie就不会发送给客户端)
        response.addCookie(cookieUserName);
    }
}

 密码可以保存30天

 

 

 

3.使用session,显示网站当前在线人数

pa
ckage Servlet; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import java.text.SimpleDateFormat; import java.util.Date; @WebListener() public class OnlineCounterListener implements HttpSessionListener { //number of online public static int activeSessions = 0; /* Session创建事件 */ public void sessionCreated(HttpSessionEvent se) { activeSessions++; System.out.println("newSession.id=" + se.getSession().getId() + "-->The number of online is " + Integer.toString(activeSessions)); HttpSession session = se.getSession(); // 获取 session 创建时间 Date createTime = new Date(session.getCreationTime()); //设置日期输出的格式 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("createtime=" + df.format(createTime)); System.out.println("-------------------------------"); } /* Session失效事件 */ public void sessionDestroyed(HttpSessionEvent se) { activeSessions--; System.out.println("outSession.id=" + se.getSession().getId() + "-->The number of online is " + Integer.toString(activeSessions)); HttpSession session = se.getSession(); // 获取该网页的最后一次访问时间 Date lastAccessTime = new Date(session.getLastAccessedTime()); //设置日期输出的格式 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("The lastAccessTime " + df.format(lastAccessTime)); System.out.println("-------------------------------"); } }

 

当前显示在线人数1人

 

 

 

 

4.使用过滤器解决乱码问题

添加Filter以解决乱码的问题

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    //设置编码
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("text/html;charset=utf-8");

    chain.doFilter(req, resp);
}

  

 

 

码云地址:https://gitee.com/zhaoxinlin/codes/ykm1sfg6owrzdvixj7u0926

小组成员:陈天钧,赵鑫林

 

 

posted on 2020-06-04 17:51  我真的是个好人  阅读(218)  评论(0编辑  收藏  举报