项目总结整理

项目总结整理

项目描述:

写一个登录界面,输入账号密码,对比数据库里面的数据,如果匹配成功的话,跳转到显示“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 extends HttpServlet{

    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();

       //将获取到的表单域中输入的值传参到UserDaoImplLoginUser()方法中,用来调用数据库中的值,如果

与数据库中的namepass没有匹配的,则返回空

       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());

       }  

    }

}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值