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
小组成员:陈天钧,赵鑫林
浙公网安备 33010602011771号