使用servlet进行用户名和密码校验2

0. 链接

链接:https://pan.baidu.com/s/1x8of6Mhdg3RhLfE9WyEs4Q
提取码:ak1r 

1. 实现效果

0. 数据库建立

 

1. 用户名或密码为空:require字段实现

2. 密码错误

3. 成功登录

2. 实现过程

0. 项目目录

 

1. 导入JAR包(官网下载)

 

2. 配置资源文件(用以链接数据库的基础数据)

3. 实现DAO工具类,解析资源文件,建立数据库链接

 

4. 查询数据库

5. 遍历数据

 

3. 代码

import java.io.IOException;
import java.sql.*;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DaoUtils.JdbcUtils;



/**
 * Servlet implementation class check
 */
@WebServlet("/check")
public class check extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public check() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        Connection con = null;
        PreparedStatement preparedStatement = null;
        ResultSet rs = null;
        
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        
        String userName = request.getParameter("checkInID");
        String userPass = request.getParameter("checkInPass");
        
        try {
            con = JdbcUtils.getConnection();
            String sql = "SELECT * FROM USER WHERE userName = '" + userName + "' AND userPass = " + userPass;
            preparedStatement = con.prepareStatement("SELECT * FROM USER WHERE userName = ? AND userPass = ?");
            preparedStatement.setString(1, userName);
            preparedStatement.setInt(2, Integer.valueOf(userPass));
            rs = preparedStatement.executeQuery();
            
            if(!rs.next()){
                response.getWriter().write("用户名或密码错误");
            }else{
                
                response.getWriter().write("用户名:" + rs.getString(1));
                response.getWriter().write("</br>");
                response.getWriter().write("密码:" + rs.getInt(2));
            }
            
        } catch (SQLException | ClassNotFoundException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } finally {
            release(con, preparedStatement, rs);
        }
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
    
    public static void release(Connection conn, Statement st, ResultSet rs){
        if(rs != null){
            try{
                rs.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            rs = null;
        }
        
        if(st != null){
            try{
                st.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            st = null;
        }
        
        if(conn != null){
            try{
                conn.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            conn = null;
        }
    }

}
Sevlet
package DaoUtils;

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


public class JdbcUtils {
    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;
    
    public static void setDriver(String driver) {
        JdbcUtils.driver = driver;
    }
    
    public static void setPassword(String password) {
        JdbcUtils.password = password;
    }
    
    public static void setUsername(String username) {
        JdbcUtils.username = username;
    }
    
    public static void setUrl(String url) {
        JdbcUtils.url = url;
    }
    
    public static String getDriver() {
        return driver;
    }
    
    public static String getPassword() {
        return password;
    }
    
    public static String getUrl() {
        return url;
    }
    
    public static String getUsername() {
        return username;
    }
    
    static{
        //try{
            /*String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/checkprojectdb";
        String username = "root";
        String password = "980420";*/
            
            Properties p = new Properties();
            try{
                //通过相对路径加载文件
                String path = (Thread.currentThread().getContextClassLoader().getResource("").getFile()).substring(1);
                path=java.net.URLDecoder.decode(path, "utf-8");
                path=path.replace('/', '\\');
                path=path.replace("file:", "");
                path=path.replace("classes\\", "");
                path+="classes/DaoUtils/db.properties";
                p.load(new FileInputStream(new File(path)));
                //用getProperties方法通过关键字获取信息
                driver = p.getProperty("driver");
                url = p.getProperty("url");
                username = p.getProperty("username");
                password = p.getProperty("password");
            //}
                Class.forName(driver);
        }catch (Exception e) {
            // TODO: handle exception
            System.out.println(driver +" " + url + " " + username +" " + password );
            throw new ExceptionInInitializerError(e);
        }
    }
    
    public static Connection getConnection() throws SQLException, ClassNotFoundException{
        return DriverManager.getConnection(url, username, password);
    }
    
    public static void release(Connection conn, Statement st, ResultSet rs){
        if(rs != null){
            try{
                rs.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            rs = null;
        }
        
        if(st != null){
            try{
                st.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            st = null;
        }
        
        if(conn != null){
            try{
                conn.close();
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            conn = null;
        }
    }
    
    public static void main(String[] args) {
        System.out.println(driver + "; " + username + "; " + password + "; " + url);
    }
}
JdbcUtils

4.  总结

遇到的问题:

1. 基础配置数据写错了

2. 数据库链接密码错误

  在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问

3. 操作结果集时越界——要把结果集想成一个二维数组

 

posted @ 2019-03-27 22:43  张叉叉儿  阅读(307)  评论(0编辑  收藏  举报