简单的用户登录页面与后台数据库的交互

来源:互联网 发布:国家卫生系统网络直报 编辑:程序博客网 时间:2024/06/07 04:30

思路为:当用户登录时,如果用户名和密码都正确的时候会进入成功页面。在validate.jsp里会先获得用户名,然后再数据里查找此用户名是否已经存在,若存在则再与所对应的密码进行对比,若都相同则返回flag为2,成功登录,若用户名存在而密码不正确,则返回flag为1,提示密码错误;若在数据库里找不到对应的用户名,则返回flag为0,提示用户名错误。
代码实现部分:
login.jsp

<body>    <form action="validate.jsp" method="post">    <table>        <tr>            <td>用户名:</td>            <td><input type="text" name="loginName"></td>            <td><font color="red"><%=request.getAttribute("loginNameError")==null ? "":request.getAttribute("loginNameError") %></font></td>        </tr>        <tr>            <td> 密码:</td>            <td><input type="password" name="loginPass"></td>            <td><font color="red"><%=request.getAttribute("loginPassError")==null?"":request.getAttribute("loginPassError") %></font></td>        </tr>        <tr>            <td><input type="submit" value="提交"></td>            <td><input type="reset" value="重置"></td>        </tr>     </table>    </form></body>

validate.jsp

<body>   <%    String loginName=request.getParameter("loginName");    String loginPass=request.getParameter("loginPass");    User user=new User();    user.setUsername(loginName);    user.setPassword(loginPass);    LoginDao loginDao=new LoginDaoImpl();    int flag=loginDao.login(user);    if(flag==2){        session.setAttribute("loginName", loginName);        response.sendRedirect(request.getContextPath()+"/index.jsp");    }else {        if(flag==1){            request.setAttribute("loginPassError", "loginPass is error");        }else if(flag==0){            request.setAttribute("loginNameError", "loginName is error");        }        request.getRequestDispatcher("/login.jsp").forward(request, response);    }    %>  </body>

//编写一个接口,只定义方法,具体实现让实现它的接口去完成。
LoginDao.java

package com.dao.dao;import com.jdbc.jdbc.User;public interface LoginDao {    int login(User user);}

//实现接口的类,实现了具体的操作
LoginDaoImpl.java

package com.impls.impls;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.jdbc.common.ConnectionUtils;import com.dao.dao.LoginDao;import com.jdbc.jdbc.User;public class LoginDaoImpl implements LoginDao{    Connection con=null;    PreparedStatement pstm=null;    ResultSet rs=null;    public int login(User user) {        //连接数据库        con=ConnectionUtils.getConnection();        int flag=0;        try {            //发送sql文            String sql="select t_name,t_pass from t_user where t_name=?";            pstm=con.prepareStatement(sql);            pstm.setString(1, user.getUsername());            rs=pstm.executeQuery();            //处理结果集            while(rs.next()){                String temp=rs.getString("t_pass");                if(temp.equals(user.getPassword())){                    flag=2; //用户名和密码都正确                }else{                    flag=1;//密码错误                }            }        } catch (SQLException e) {            e.printStackTrace();        }finally{            //资源释放(逆序释放)            ConnectionUtils.close(rs, pstm, con);           }           return flag;    }}

具体的公共类ConnectionUtils.java可以参考JDBC连接数据库及具体代码实现

1 0