servlet连接数据库实现登录

实现了一个简单的连接数据库查询用户名是否匹配,并登录且使用cookie实现记住账户密码的操作。
一下是代码。

封装的一个Connection工具类

package com.xx;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUitl2 {
    private JDBCUitl2(){
    }
    private static Connection connection;
    private static Properties properties;
    
    private static Properties readFile() {
        // 通过类加载器获取bin文件夹下的文件的字节流
        InputStream is = JDBCUitl2.class.getClassLoader().getResourceAsStream("dbinfo.properties");
        Properties properties = new Properties();
        try {
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return properties;
    }
    
    static {
        // 只读一次文件
        properties = readFile();
        try {
            Class.forName(properties.getProperty("driverClass"));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("注册驱动失败");
        }
    }
    public static Connection getConnection() {
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        try {
            connection = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("connection failure");
        }
        return connection;
    }
    //关闭资源
    public static void JDBCClose(Connection connection, java.sql.Statement statement, ResultSet rs) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

登录servlet

package com.xx;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        Cookie[] cookies = request.getCookies();
        String username = "";
        String password = "";
        String chck="";
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("username")) {
                    username = cookie.getValue();
                    chck ="checked='checked'";
                }
                if (cookie.getName().equals("password")) {
                    password = cookie.getValue();
                }
            }
        }
        response.getWriter().write("<form action='/day33work/work1' method='post'>"
                + " 姓名:<input type='text' name='username' value='" + username + "'><br/>"
                + " 密码:<input type='text' name='password' value='" + password + "'><br/>"
                + " 记住密码:<input type='checkbox' name='chck' " + chck + "><br/>"
                + " <input type='submit' value='提交'>"
                + " </form>");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

处理登录请求servlet

package com.xx;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class work1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter writer = response.getWriter();
        String sql = "select * from users where username=? and password=?";
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String chck = request.getParameter("chck");
        
        Connection connection = JDBCUitl2.getConnection();
        PreparedStatement prepareStatement = null;
        try {
            prepareStatement = connection.prepareStatement(sql);
            prepareStatement.setString(1, username);
            prepareStatement.setString(2, password);
            ResultSet rs = prepareStatement.executeQuery();
            while (rs.next()) {
                String user = rs.getString("username");
                String pw = rs.getString("password");
                if (user.equals(username) && pw.equals(password)) {
                    response.getWriter().write("登录成功");
                    Cookie cookie1 = new Cookie("username", username);
                    Cookie cookie2 = new Cookie("password", password);
                    cookie1.setPath("/");
                    cookie2.setPath("/");
                    if (chck != null) {
                        cookie1.setMaxAge(60*5);
                        cookie2.setMaxAge(60*5);
                    } else {
                        cookie1.setMaxAge(0);
                        cookie2.setMaxAge(0);
                    }
                    response.addCookie(cookie1);
                    response.addCookie(cookie2);
                    response.getWriter().write(username);
                    response.getWriter().write(password);
                } else {
                    response.getWriter().write("登录失败嗷");
                    response.setHeader("refresh", "3;/day33work/login");
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>day33work</display-name>
    
  <servlet>
  	<servlet-name>login</servlet-name>
  	<servlet-class>com.xx.Login</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>login</servlet-name>
  	<url-pattern>/login</url-pattern>
  </servlet-mapping>
  
    
  <servlet>
  	<servlet-name>work1</servlet-name>
  	<servlet-class>com.xx.work1</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>work1</servlet-name>
  	<url-pattern>/work1</url-pattern>
  </servlet-mapping>
  
    

  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

猜你喜欢

转载自blog.csdn.net/qq_37113621/article/details/83004488