JDBC+MySQL+JSP+Servlet实现简单网页登录
准备工作
- 把
mysql-connector-java-5.0.8-bin.jar
添加到idea项目中的lib
中,并右键选择Add as library
- 把
mysql-connector-java-5.0.8-bin.jar
复制到tomcat安装路径/lib/
- 配置
tomcat
参考 - 创建表
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY USING BTREE (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES (1, 'admin', 'admin');
INSERT INTO `tb_user` VALUES (2, 'test', 'test');
创建实体类User
public class User {
public User() {
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override //重写toString使其一我们需要的形式输出
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
创建DBUtil
//控制数据库的连接与关闭
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/wzbc", "root", "123456");
return connection;
}
public static void closeAll(ResultSet resultSet, Statement statement, Connection connection) throws SQLException {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
创建实体层UserDao
//这里只放了根据用户名查询的部分
public User getOneUserByUsername(String username) {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
User user = new User();
try {
connection = DBUtil.getConnection();
String sql = "select * from tb_user where username = ?";
statement = connection.prepareStatement(sql);
statement.setString(1, username);
resultSet = statement.executeQuery();
while (resultSet.next()) {
user.setId(resultSet.getInt(1));
user.setUsername(resultSet.getString(2));
user.setPassword(resultSet.getString(3));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
DBUtil.closeAll(resultSet, statement, connection);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return user;
}
创建LoginServlet
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
UserDao userDao = new UserDao();
//首先判断用户名是否为空,减少服务器资源的消耗
if (username != null && password.equals(userDao.getOneUserByUsername(username).getPassword())) {
resp.getWriter().write("Pass");
} else {
resp.getWriter().write("Fail");
}
}
}
新建JSP文件
新建名为index.jsp
的文件,文件位于webapp/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login" method="post">
username:<input name = "username" type="text">
username:<input name = "password" type="password">
<input type="submit" value="login">
</form>
</body>
</html>
修改web.xml
<!--<servlet-name>标签的名字需要与上面的类名字一致-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.zr.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>