zoukankan      html  css  js  c++  java
  • Servlet-3 :JDBC+重定向

    请求重定向 redirect
    1) Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会改变为新资源的地址。
    2) 重定向的情况下,原Servlet和目标资源之间就不能共享请求域数据了
    3) 实现重定向的API

    package com.atguigu.login.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.atguigu.login.DAO.UserDAOImpl;
    import com.atguigu.login.bean.User;
    
    public class LoginServlet extends HttpServlet{
        
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            doPost(req, resp);
        }
        
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            System.out.println("登录信号");
            
            req.setCharacterEncoding("utf-8");
            //获取用户名
            String username = req.getParameter("username");
            //获取密码
            String password = req.getParameter("password");
            System.out.println(username + " , " + password ); 
            
            resp.setContentType("text/html;charset=utf-8");
            PrintWriter out = resp.getWriter();
            //获取Dao对象
                    UserDAOImpl userDao = new UserDAOImpl();
                    
                    User user = userDao.getUserByUsernameAndPassword(username, password);
            
            /*
                        if("Admin".equalsIgnoreCase(username) && "123456".equals(password)) {
                        //登录成功
                        out.println("<h1><font color='green'>Login Success! 登录成功<font><h1>");
                    }else {
                        //登录失败
                        //PrintWriter out = resp.getWriter();
                        out.println("<h1><font color='red'>Login Fail! 登录失败</font></h1>");
                    }
             */
                    if(user == null) {
                        //通过重定向的方式去往登录页面
                        /*
                         * 服务器会给浏览器发送一个302状态码以及一个新的地址, 
                         *  
                         */
                        resp.sendRedirect("login.html");  
                        
                        
                        
                        
                    }else {
                        //登录成功
                        out.println("<h1><font color='green'>Login Success! 登录成功<font><h1>");
                    }
        }
    
    }
    public class LoginServlet extends HttpServlet
    package com.atguigu.login.utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;
    
    public class ConnectionUtil {
        private static String driver = null; 
        private static String url = null ;
        private static String username = null ;
        private static String password = null ;
        private static Properties props = new Properties();
        
        private static ThreadLocal<Connection > tl = new ThreadLocal<>();
        static {
            try {
                //类加载器读取文件
                InputStream in =
                        ConnectionUtil.class.getClassLoader().getResourceAsStream("db.properties");
                props.load(in);
                
                driver =props.getProperty("jdbc.driver");
                url = props.getProperty("jdbc.url");
                username= props.getProperty("jdbc.username");
                password = props.getProperty("jdbc.password");
                
                Class.forName(driver);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
        public static  Connection  getConn()  throws Exception{
            //先尝试从tl中获取
            Connection conn = tl.get();
            if(conn == null ) {
                conn = (Connection) DriverManager.getConnection(url, username, password);
                tl.set(conn);
            }
            return conn ;
        }
        
        
        /**
         * 关闭连接的方法
         */
        public static void closeConn()  throws Exception{
            //先尝试从tl中获取
            
            Connection conn = tl.get();
            
            if(conn != null ) {
                 conn.close();
            }
            
            tl.set(null);
        }
        
    
        
    
    }
    public class ConnectionUtil
    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    jdbc.username=root
    jdbc.password=123456
    db.properties
    package com.atguigu.login.DAO;
    
    import com.atguigu.login.bean.User;
    
    public interface UserDAO {
        public User getUserByUsernameAndPassword(String username,String password);
    
    }
    public interface UserDAO
    package com.atguigu.login.DAO;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.atguigu.login.bean.User;
    import com.atguigu.login.utils.ConnectionUtil;
    
    
    public class UserDAOImpl implements UserDAO{
    
        @Override
        public User getUserByUsernameAndPassword(String username, String password) {
            User u = null ;
            /*try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }//com.mysql.cj.jdbc.Driver
            String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
            String user="root";
            String pawd="123456";*/
            try {
                
    //            Connection conn = DriverManager.getConnection(url, user, pawd);
                Connection conn=ConnectionUtil.getConn();
                
                
                String sql="select id, username,password from stu where username = ? and password = ?";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setString(1, username);
                ps.setString(2, password);
                ResultSet  rs = ps.executeQuery();
                
                if(rs.next()) {
                    u = new User();
                    u.setId(rs.getInt("id"));
                    u.setUsername(rs.getString("username"));
                    u.setPassword(rs.getString("password"));
                }
                
                return u ; 
                
                
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            
            return null;
            
        }
    }
    public class UserDAOImpl implements UserDAO
    package com.atguigu.login.bean;
    
    public class User {
        private Integer id ; 
        private String username ; 
        private String password ;
        public Integer getId() {
            return id;
        }
        public void setId(Integer 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 + "]";
        }
    }
    public class User

  • 相关阅读:
    someThink
    快捷键
    typedef 的本质
    读取配置文件
    stl file
    摘自CSDNhttp://blog.csdn.net/gnuhpc/archive/2009/11/13/4808405.aspx
    thread demo
    B/S和C/S区别 java程序员
    上传文件 java程序员
    (八)VS的操作和使用技巧 java程序员
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12852994.html
Copyright © 2011-2022 走看看