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
小组成员:陈天钧,赵鑫林