首页 > 其他 > 详细

servlet应用

时间:2020-05-28 09:35:09      阅读:50      评论:0      收藏:0      [点我收藏+]

码云连接https://gitee.com/ZeroLuo328/j2ee_course/tree/master/servletdemo

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

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/tree/master/servletdemo

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

 

servlet应用

原文:https://www.cnblogs.com/lfq4588/p/12970089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!