基于MVC的用户登录程序

目前对MVC的认识:
V层:网页上看得到的,用户所接触的。用到jsp,html,css等,供用户提供数据,也可显示数据给用户。
C层:做控制的,数据拿过来,怎么做什么处理,网页将如何跳转等等。做控制就是servlet了,它又有三种工作方式,一般用带了doget,dopost方法的那种。
M层:一些具体实现的方法,工具,比如做数据库方面的dbHelper等,总之就是最下边的东西,可以直接拿来调用的。

具体的web project文件布局:
webroot下放.jsp,当然也可以自己在webroot下建立文件夹放在下边。
src下面的包,一般是servlet一个包,db一个包,filter一个包,其他可以自己再建立。

表名user
字段:username,password,real_name

login.jsp

<form  method="post" action="LoginServlet">
        <table>
            <tr>
                <td>用户名:</td><td><input type="text" name="username"/></td>
            </tr>
            <tr>
                <td>密 码 :</td><td><input type="password" name="password"/></td>
            </tr>
            <tr>
                <td><input type="submit" name="Submit" value="提交" /></td>
                <td><input type="reset" name="Submit2" value="重置" /></td>
            </tr>
        </table>                                
    </form>

loginServlet:

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String username = request.getParameter("username"); // 获取表单数据
        int password = Integer.parseInt(request.getParameter("password"));
        //System.out.println("here1");
        sqlBean bean = new sqlBean(); //
        boolean haslogin = bean.islogin(username, password,request);
        if (haslogin) {
            request.getSession().setAttribute("loginUser", username);  //创建Session信息
            request.getRequestDispatcher("/user/main.jsp").forward(request,response);
        }
        else {
            request.setAttribute("errorMsg","用户名或密码错误,或者不匹配!");
            request.getRequestDispatcher("/user/error.jsp").forward(request,response);
        }
    }

sqlBean.class

public class sqlBean {    //类定义
    public Connection conn=null;
    public ResultSet rs=null;
    Statement st=null;
    public sqlBean(){     //构造方法
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/test?user=root&password=123456";
            conn=DriverManager.getConnection(url);
            st=conn.createStatement();
        }
        catch(java.lang.ClassNotFoundException e){
            System.out.print("连接MySQL服务器出错!"+e.getMessage());  
        } catch (SQLException e) {
            e.printStackTrace();  
        }
    }

    public User executeQuery(String username){  //查询结果对象
        User user = new User();   //创建对象
        try{
            rs=st.executeQuery("select * from user where username='"+username+"'");

            while(rs.next()){
                user.setUsername(username);   //设置对象属性
                user.setReal_name(rs.getString("real_name"));
                user.setPassword(Integer.parseInt(rs.getString("password")));
            }
        }
        catch(SQLException e){
            System.out.print("执行查询错误:"+e.getMessage());
        }
        return user;
    }   

    public boolean islogin(String username, int password,HttpServletRequest request) { // 是否存在记录
        User user = new User(); //
        try {
            rs = st.executeQuery("select * from user where username='"+username+"' and password='"+password+"'");

            if (rs.next()) { //
                user.setUsername(username); // 建立session信息
                user.setReal_name(rs.getString("real_name"));
                user.setPassword(password);
                request.getSession().setAttribute("user", user);
                return true;
            } else {
                return false;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    public int executeInsert(String sql){      //插入记录方法
        int num=0;
        try{
            num=st.executeUpdate(sql);
        }
        catch(SQLException e){
            System.out.print("记录插入错误:"+e.getMessage());
        }
        return num;
    }   

    /*public int Update(String sql){      //更新记录方法
        int num=0;
        try{
            num=st.executeUpdate(sql);
        }catch(SQLException ex){
            System.out.print("执行修改错误:"+ex.getMessage());
        }
        return num;
    }*/

    public int Update(String username) {
        int num=0;
        String sql="update user set password='123456' where username='"+username+"'";
        try{
            num=st.executeUpdate(sql);
        }catch(SQLException ex){
            System.out.print("执行修改错误:"+ex.getMessage());
        }
        return num;
    }
    public int executeDelete(String username){     //删除记录方法
        int num=0;
        String sql="delete from user where username='"+username+"'";
        try{
            num=st.executeUpdate(sql);
        }
        catch(SQLException e){
            System.out.print("删除记录错误:"+e.getMessage());
        }
        CloseDataBase();
        return num;
    }
    /*  public User executeQuery_sql(String sql,HttpServletRequest request){  //选择查询
    User user = new User();   //创建对象
    try{
        rs=st.executeQuery(sql);
        request.setAttribute("realName", rs.getString("real_name"));
    }
    catch(SQLException e){
        System.out.print("执行查询错误:"+e.getMessage());
    }
    return user;
}*/
    public void CloseDataBase(){     //关闭数据库连接方法
        try{
            conn.close();
            st.close();
        }
        catch(Exception ex){
            System.out.print("关闭Connection对象错误:"+ex.getMessage());
        }
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值