0
点赞
收藏
分享

微信扫一扫

项目总结整理


项目总结整理

项目描述:

写一个登录界面,输入账号密码,对比数据库里面的数据,如果匹配成功的话,跳转到显示“Welcome +用户名”的页面,如果与数据库里面的数据匹配不成功,则留在原页面

项目思路:

建一个用户类,用来传参;建一个dao层,专门连接数据库里面的数据;在WRB-INF文件下建一个html登录界面;建立一个Servlet文件,用于获取登录界面里输入的值,判断User是否为空

项目代码及注释解释:

第一步:因为要和数据库连接,所以先导进Oracle的jdbc的jar包

找到Oracle安装路径,在jdbc文件中找到ojdbc.jar复制到WebContent--WEB-INF-lib文件夹下,这个文件夹统一放第三方jar包,当然想要使用数据库得先打开电脑的监听啥的,这些细节就不讲了,扩展起来主题就没啦

第二步:建一个用户类

publicclass User {
    private String name;
    private String pass;
    public User() {
       super();
    }
    public User(String name, String  pass) {
       super();
       this.name = name;
       this.pass = pass;
    }
    //实现get set方法用来后面用户名密码的赋值,传参
    public String getName() {
       returnname;
    }
    publicvoid setName(String name) {
       this.name = name;
    }
    public String getPass() {
       returnpass;
    }
    publicvoid setPass(String pass) {
       this.pass = pass;
}
    }

    第三步:建立一个db.properties配置文件,用来存放调用数据库的数据

在Java Resources—src文件夹下建此文件,第一行数据是数据库接口,其中YLMF123-3131857是计算机名、1521为数据库软件接口

    url=jdbc:oracle:thin:@YLMF123-3131857:1521:orcl

name=scott

pass=tiger

driver=oracle.jdbc.driver.OracleDriver

   

第四步:建一个dao层接口Interface

publicinterface UserDao {
    User LoginUser(String  name,String pass);
}

第五步:建一个类实现dao层接口

publicclass UserDaoImpl implements UserDao {
    @Override
    public User LoginUser(String name, String pass) {
       //建立配置文件实例,用来调用
Properties p = new Properties();
       Connection  conn = null;
       PreparedStatement  pstmt = null;
       ResultSet  rs = null;
       try {
       //加载db.properties配置文件
       p.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));
       //创建反射机制
       Class.forName(p.getProperty("driver"));
        //连接数据库
conn=DriverManager.getConnection(p.getProperty("url"),p.getProperty("name"),p.getProperty("pass"));
       String sql = "select *from userinfo where name = ? and pass = ?";
       //操作数据库,将sql语句发送到数据库
       pstmt = conn.prepareStatement(sql);
       //给第一个占位符赋值,将方法中的参数赋值进去,此参数被ServletDemo中获取到的表单域中的name赋值,
如果数据库中存在此name和密码则能查到信息,否则查不到信息,返回值为空
       pstmt.setString(1,  name);
       pstmt.setString(2,  pass);
        //将查询到的结果返回到结果集
       rs = pstmt.executeQuery();
       while(rs.next()){
           //将从数据库中得到的用户名和密码返回到User类中,如果没有此用户名则返回为空
           User  u = new User(rs.getString("name"),rs.getString("pass"));
       }
       } catch (IOException e) {
           e.printStackTrace();
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       } catch (SQLException e) {
           e.printStackTrace();
       }finally{
           try {
              if(rs!=null){//一定要判断不为空,预防空指针
              rs.close();//关闭结果集,按照声明的顺序反向关闭
              }
           } catch (SQLException e) {
              e.printStackTrace();
           }
           try {
              if(pstmt!=null){
              pstmt.close();
              }
           } catch (SQLException e) {
              e.printStackTrace();
           }
           try {
              if(conn!=null){
              conn.close();
              }
           } catch (SQLException e) {
              e.printStackTrace();
           }
       }
       returnu;//返回用户类的值,用以ServletDemo()中判断User是否为空,为空则转发到zuoyelogin.jsp
页面,不为空(说明数据库中有此用户名和密码,说明登录成功)则跳转到welcome页面
    }
}

第六步:建立一个Servlet文件,用于获取登录界面里输入的值

@WebServlet("/ServletDemo")
publicclass ServletDemo extendsHttpServlet{
    privatestaticfinallongserialVersionUID = 1L;
    public ServletDemo() {
        super();
    }
    protectedvoid doGet(HttpServletRequest request, HttpServletResponse  response) throws ServletException,IOException {
       //调用本类的doPost()方法
this.doPost(request, response);
    }
    protectedvoid doPost(HttpServletRequest request, HttpServletResponse  response) throws ServletException,IOException {
       //获取登录界面中表单域的输入的值
String name = request.getParameter("name");
       String pass = request.getParameter("pass");
       //实例化UserDaoImpl对象,用来调用
       UserDao  ud = new UserDaoImpl();
       //将获取到的表单域中输入的值传参到UserDaoImpl的LoginUser()方法中,用来调用数据库中的值,如果
与数据库中的name与pass没有匹配的,则返回空
       User u = ud.LoginUser(name, pass);
       if(u==null){
            //判断为空的话,转发到zuoyelogin.jsp文件,及本页面文件
           RequestDispatcher  rd=request.getRequestDispatcher("zuoyelogin.jsp");
           rd.forward(request, response);
       }else{
           //判断不为空时,则说明与数据库中的值匹配,登录成功,跳转到welcome界面
           PrintWriter  out = response.getWriter();
           out.write("welcome"+u.getName());
       }   
    }
}

 

举报

相关推荐

0 条评论