zoukankan      html  css  js  c++  java
  • jsp的DAO三层-------------实现登录功能

    1、controller 控制器层  相当于servlet

    2、service层:业务逻辑层,主要用来处理业务逻辑

    3、dao层   用来和数据库打交道

    建包

    servlet包、service包、dao包

    前台jsp简单页面

    <body>
      <div id="lg_div1"></div>
        <div id="lg_container">
               <div id="lg_container_content">
                   <div id="lg_text">
                       <div>欢迎登录留言板系统</div>
                   </div>
                        <form id="lg_form" action="<%=path %>/logincheck" method="post">
                            <div id="lg_name">用户名:<div id="lg_name_tp"></div><div id="lg_name_name"><input type="text" name="userName" placeholder="用户名"></div></div>
                            <div id="lg_pwd">密码:<div id="lg_pwd_tp"></div><div id="lg_pwd_pwd"><input type="password" name="pwd" placeholder="用户名密码"></div></div>
                            <div id="lg_denglu">
                                <div id="lg_denglu_dl"><input type="button" value="登录" onclick="login()"></div>
                                <div id="lg_handlu_zc"><input type="button" value="注册"></a></div>
                            </div>
                        </form>
                        <div id="lg_handle">
                            <div id="lg_handle_findPwd"><a href="https://www.baidu.com">忘记密码?</a></div>
                            <div id="lg_handle_attention">
                                <div id="attention_text"><span>关注我们,让我们变得更好:</span></div>
                                <div id="attention_tp"></div>
                            </div>
    
                        </div>
               </div>
        </div>
        <div id="lg_div2"></div>
      </body>

    一、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.jereh.service.UserService;
    import com.jereh.service.impl.UserServiceImpl;
    
    public class LoginCheck extends HttpServlet {
    
        UserService service=new UserServiceImpl();
        
     
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
    
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            
            String userName=request.getParameter("userName");
            String pwd=request.getParameter("pwd");
            
            boolean isSuccess=service.existsWithNameAndPwd(userName, pwd);//逻辑判断交给service层
            //获取打印器
            PrintWriter out= response.getWriter();
            if(isSuccess){
                out.write("1");
            }else{
                out.write("0");
            }
            
            //刷新关闭
            out.flush();
            out.close();
            
    
        }
    
    }

    二、service层

    public interface UserService {
        
        /**
         * 
         * @param userName
         * @param pwd
         * @return
         */
        public boolean existsWithNameAndPwd(String userName,String pwd);
    
    }
    public class UserServiceImpl implements UserService {
        
        UserDao dao=new UserDaoImpl();
    
        @Override
        public boolean existsWithNameAndPwd(String userName, String pwd) {
            
            String sql="select count(*) num from t_account where username=?  and pwd=?";
            List<Object> pram=new ArrayList<Object>();
            pram.add(userName);
            pram.add(pwd);
            
            try {
                int count=dao.isExists(sql, pram);
                return count>0;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            return false;
        }
    
    }

    三、dao层

    将常用的连接数据库语句封装成一个工具类

    public class BaseDao {
        
        //数据库连接
        private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
        //驱动
        private static final String DRIVER="oracle.jdbc.driver.OracleDriver";
        //用户名
        private static final String USRE="XXXXXXX";
        //用户密码
        private static final String PWD="123456";
        
        /**
         * @throws Exception 
         * 获取数据库连接
         */
        Connection conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        
        private void getConnection() throws Exception{
            
            if(conn==null){
                 //1 加载驱动类
                Class.forName(DRIVER);
                // 2 获取数据库连接
                conn = DriverManager.getConnection(
                        URL, USRE,
                        PWD);
            }
            
        }
        
        
        /***
         * 
         * @param sql
         * @param params
         * @return
         */
        public int executeUpdate(String sql,List<Object> params)throws Exception{
            getConnection();
            //初始化句柄
             pstmt= conn.prepareStatement(sql);
            //绑定参数
            if(params!=null){
                    for(int i=0;i<params.size();i++){
                        pstmt.setObject(i+1, params.get(i));
                    }
            }
            //执行sql
            int count=pstmt.executeUpdate();
            //关闭资源
            pstmt.close();
            pstmt=null;
            conn.close();
            conn=null;
            
           return count;
        }
        
        
        /**
         * 
         * @param sql
         * @param params
         * @return
         */
         public ResultSet excuteQuery(String sql,List<Object> params)throws Exception{
                getConnection();
                 pstmt= conn.prepareStatement(sql);
                //绑定参数
                if(params!=null){
                        for(int i=0;i<params.size();i++){
                            pstmt.setObject(i+1, params.get(i));
                        }
                }
                //执行查询
                rs=pstmt.executeQuery();
                return rs;
         }
         
         
         /**
          * 关闭
          */
         public void close(){
                     try {
                         if(rs!=null){
                            rs.close();
                            rs=null;
                         }
                         if(pstmt!=null){
                             pstmt.close();
                             pstmt=null;
                         }
                         if(conn!=null){
                             conn.close();
                             conn=null;
                         }
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
         }
        
        
        
    
    }
    import java.util.List;
    
    public interface UserDao {
        public int isExists(String sql,List<Object> params) throws Exception;
    }
    import java.sql.ResultSet;
    import java.util.List;
    
    import com.jereh.dao.BaseDao;
    import com.jereh.dao.UserDao;
    
    public class UserDaoImpl extends BaseDao implements UserDao {
    
        @Override
        public int isExists(String sql, List<Object> params) throws Exception{
             ResultSet rs=excuteQuery(sql, params);
             int count=0;
             if(rs.next()){
                 count= rs.getInt("num");
                 this.close();
             }
             return count;
        }
    
    }
  • 相关阅读:
    Highlighting Scatter Charts in Power BI using DAX
    在 Visio 中创建组织结构图
    Power BI Desktop 2020年7月功能摘要
    Power BI Calculation Group
    Vue中的路由以及ajax
    Vue的基本语法和常用指令
    洛谷P1525关押罪犯
    洛谷P2411 【[USACO07FEB]Silver Lilypad Pond S】
    洛谷P1776 宝物筛选(二进制优化多重背包)
    P3275 [SCOI2011]糖果
  • 原文地址:https://www.cnblogs.com/1960366876tZ/p/9131282.html
Copyright © 2011-2022 走看看