zoukankan      html  css  js  c++  java
  • 使用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. 操作结果集时越界——要把结果集想成一个二维数组

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/chacha-z/p/10611054.html
Copyright © 2011-2022 走看看