使用servlet进行用户名和密码校验2 0. 链接 1. 实现效果 2. 实现过程 3. 代码 4.  总结

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

1. 实现效果

0. 数据库建立

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

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

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

2. 密码错误

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

3. 成功登录

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

2. 实现过程

0. 项目目录

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

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

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

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

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

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

 使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

4. 查询数据库

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

5. 遍历数据

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

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. 基础配置数据写错了

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结

2. 数据库链接密码错误

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

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

使用servlet进行用户名和密码校验2
0. 链接
1. 实现效果
2. 实现过程
3. 代码
4.  总结