欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【个人实习日志】使用Jsp+Servlet实现简单的登陆功能

程序员文章站 2022-05-05 15:22:52
...

使用Jsp+Servlet实现简单的登陆功能

开发环境:IDEA2020、Tomcat8.0、Mysql5.7、Jdk1.8
1、新建文件
打开IDEA新建一个Java Web Application项目,选择Tomcat,完成相应配置点击finish
【个人实习日志】使用Jsp+Servlet实现简单的登陆功能
2、在web目录下新建lib文件夹
mysql-connector-java
将下载好的mysql-connector-java放入lib中并导入jar包
【个人实习日志】使用Jsp+Servlet实现简单的登陆功能
3、文件目录
【个人实习日志】使用Jsp+Servlet实现简单的登陆功能
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页面
【个人实习日志】使用Jsp+Servlet实现简单的登陆功能
输入账号密码后跳转到登陆成功页面
【个人实习日志】使用Jsp+Servlet实现简单的登陆功能

相关标签: 实习