使用Jsp+Servlet实现简单的登陆功能
开发环境:IDEA2020、Tomcat8.0、Mysql5.7、Jdk1.8
1、新建文件
打开IDEA新建一个Java Web Application项目,选择Tomcat,完成相应配置点击finish
2、在web目录下新建lib文件夹
mysql-connector-java
将下载好的mysql-connector-java放入lib中并导入jar包
3、文件目录
bean 包中主要存放实体类信息;
dao 包中类主要处理与数据库的交互,登录需要用到查询和插入数据库功能;
service 包主要存放一些业务类,在dao层对数据库进行操作时对数据进行一个预处理;
servlet 包主要作为控制层来处理web发送的数据,处理用户的请求信息;
test 文件用于开发过程中测试功能;
util 包主要存放一些工具类如数据库连接;
Web 文件下主要存放需要用到的jsp文件以及一些网页的静态资源;
4、具体代码
(1)util包中的类实现数据库连接功能
DBUtil.java
package com.wut.util;
import java.sql.*;
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/wut","root","password");
return connection;
}
public static void close(ResultSet resultSet, PreparedStatement preparedStatement,Connection connection) throws SQLException {
if(resultSet!=null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}
}
(2)dao包中主要是数据库相关操作的类
Userdao.java
package com.wut.dao;
import com.wut.bean.User;
import com.wut.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
public List<User> findAll() throws ClassNotFoundException, SQLException {
/*
1.加载驱动
2.创建连接
3.写sql
4.statement对象
5.执行sql得到结果集
6.处理结果集
7.关闭资源
*/
List<User> list=new ArrayList<>();
// Class.forName("com.mysql.jdbc.Driver");
// Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/wut","root","password");
Connection connection =DBUtil.getConnection();
System.out.println("获得连接成功");
String sql="select * from tb_user";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
User user=new User();
int id = resultSet.getInt(1);
String username = resultSet.getString(2);
String password = resultSet.getString(3);
user.setId(id);
user.setUsername(username);
user.setPassword(password);
list.add(user);
}
DBUtil.close(resultSet,preparedStatement,connection);
return list;
}
public void deleteById(int id) throws SQLException, ClassNotFoundException {
Connection connection=DBUtil.getConnection();
System.out.println("获得连接成功");
String sql="delete from tb_user where id =?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,id);
preparedStatement.executeUpdate();
DBUtil.close(null,preparedStatement,connection);
}
public User findByname(String username) throws SQLException, ClassNotFoundException {
Connection connection=DBUtil.getConnection();
String sql="select password from tb_user where username=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,username);
ResultSet resultSet=preparedStatement.executeQuery();
User user=new User();
while(resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
String password = resultSet.getString(3);
user.setId(id);
user.setUsername(name);
user.setPassword(password);
}
return user;
}
}
(3)bean包中存放的是项目需要用到的实体类
User.java
package com.wut.bean;
public class User {
private int id;
private String username;
private String password;
public User(){};
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = 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
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
(4)service包中的类和dao包中的类共同完成数据处理
UserService.java
package com.wut.service;
import com.wut.bean.User;
import com.wut.dao.UserDao;
import java.sql.SQLException;
public class UserService {
public Boolean login(String username, String password) {
UserDao userDao=new UserDao();
User user=null;
try {
user=userDao.findByname(username);
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if(user!=null&&user.getPassword().equals(password)){
return true;
}else {
return false;
}
}
}
(5)servlet作为控制层,负责对从jsp页面发送的表单数据进行处理
LoginServlet.java
package com.wut.servlet;
import com.wut.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
UserService userService=new UserService();
Boolean flag=userService.login(username,password);
if(flag){
response.sendRedirect("success.jsp");
}else {
response.sendRedirect("index.jsp");
}
}
}
(6)web.xml文件负责将一个jsp页面与一个servlet类连接在一起
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.wut.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
(7)登录页面
index.jsp
<%--
Created by IntelliJ IDEA.
User: wuzexue
Date: 2020/7/20
Time: 9:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
5、运行结果
index.jsp页面
输入账号密码后跳转到登陆成功页面