码云连接:https://gitee.com/ZeroLuo328/j2ee_course.git
注意是servletdemo这项目文件
1.建立数据库添加用户表
数据库脚本如下:
2.编写servlet进行用户名和密码校验,获取登录页面的用户名密码,并显示出来
建立一个servlet,把路径设置成 /LoginServlet,我在这里直接用的是注解的方式配置路径,没用web.xml里配置的方式。
登录页面采取表单提交提交满足要求的用户名和密码
获取登录页面的用户名和密码
输出
加上从数据库读取数据验证身份做个简单的跳转,就简单用了个home.html作为系统主页
dao层
service层
页面也能正常跳转
再看一个密码错误的情况
分享一个jdbc的工具类:
public class DBUtil {
private final static String URL = "jdbc:mysql://localhost:3306/java2ee";
private final static String USERNAME = "root";
private final static String PASSWORD = "47LfQlFq";
static Connection connection = null;
static PreparedStatement pstmt = null;
static ResultSet rs = null;
public static Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection(URL,USERNAME,PASSWORD);
}
public static PreparedStatement createPreparedStatement(String sql,Object[] params) throws ClassNotFoundException, SQLException {
pstmt = getConnection().prepareStatement(sql);
for(int i = 0;i < params.length; i++) {
pstmt.setObject(i+1, params[i]);
}
return pstmt;
}
public static boolean executeUpdate(String sql,Object[] params) {
try {
pstmt = createPreparedStatement(sql, params);
int count = pstmt.executeUpdate();
if(count > 0) {
return true;
}
else {
return false;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}catch (SQLException e) {
e.printStackTrace();
return false;
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static ResultSet executeQuery(String sql,Object[] params) {
try {
pstmt = createPreparedStatement(sql, params);
rs = pstmt.executeQuery();
return rs;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}catch (SQLException e) {
e.printStackTrace();
return null;
}catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void close(ResultSet rs) {
close(rs,pstmt,connection);
}
public static void close(ResultSet rs,Statement stmt,Connection connection) {
try {
if(rs != null) {
rs.close();
}
if(pstmt != null) {
stmt.close();
}
if(connection != null) {
connection.close();
}
}catch (SQLException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}
3.使用Cookie,如果用户在登录的时候选择保存登录信息,30天内,用户无需登录
我这儿假设就是默认假设记住保存登录信息,让30天内无需登录
密码正确把用户名和密码用cookie的形式返回给浏览器
js
可以看到登录成功在浏览器可以查到cookie
自动填充成功
加上这句自动登录
4.使用session,显示计科院当前在线人数
这里我用到了监听器
在web.xml中配置监听器
登录处理的servlet里边加代码
谷歌登录第一个
换火狐登录第二个
5.使用过滤器解决乱码问题。
我先在数据库里添加一条中文数据
INSERT INTO USER VALUES('罗付强','201731062523');
可以看出已经出现问题了
添加过滤器
再用中文用户名登录
结果没问题