servlet应用

码云连接: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');

 

 

 

 

 

 

 

 可以看出已经出现问题了

 

添加过滤器

 

 

 

再用中文用户名登录

 

 

 

结果没问题

 

 

 

码云连接:https://gitee.com/ZeroLuo328/j2ee_course.git

注意是servletdemo这项目文件

 

posted @ 2020-05-28 00:56  奇怪的代码  阅读(317)  评论(0编辑  收藏  举报