jsp学习笔记3——用户登录系统(mv模式)

(一)纯jsp开发框图

 

jsp学习笔记3——用户登录系统(mv模式)_第1张图片

 

 

(二)mv模式框图

 

jsp学习笔记3——用户登录系统(mv模式)_第2张图片

 

 

(三)技术关键点

jsp学习笔记3——用户登录系统(mv模式)_第3张图片

 

 

 

jsp学习笔记3——用户登录系统(mv模式)_第4张图片

 

以上代码如下:

(1)实现1号线和2号线

// 分页功能,思考——为什么不是返回ResultSet结果集 public ArrayList<UserBean> getUsersByPage(int pageNow) { ArrayList<UserBean> al = new ArrayList<UserBean>(); try { ConnDB cd = new ConnDB(); ct = cd.getConn(); sm = ct.createStatement(); rs = sm.executeQuery("select * from users limit " + (pageNow - 1) * pageSize + "," + pageSize); // 把结果集封装到ArrayList中 while (rs.next()) { // 将rs中的每一条记录封装到UserBean ub,实现一号线 UserBean ub = new UserBean(); ub.setUserId(rs.getInt(1)); ub.setUsername(rs.getString(2)); ub.setPasswd(rs.getString(3)); ub.setEmail(rs.getString(4)); ub.setGrade(rs.getInt(5)); al.add(ub);// 实现第二根线,将ub放入到ArrayList中 } } catch (Exception e) { e.printStackTrace(); } finally { this.closeResource(); } return al; }

(2)实现3号线

<table border="1"> <tr><td>用户id</td><td>用户名</td><td>密码</td><td>邮件地址</td><td>用户级别</td></tr> <% for(int i=0;i<al.size();i++){//从al中取出UserBean UserBean ub=(UserBean)al.get(i); %> <tr><td><%=ub.getUserId()%></td><td><%=ub.getUsername()%></td><td><%=ub.getPasswd()%></td><td><%=ub.getEmail()%></td><td><%=ub.getGrade()%></td></tr> <% } %> </table>

 

(四)具体代码

1.模型层

UserBean.java

//这是一个javabean,对应users表,代表数据 //其一个实例(对象),对应users表中的一条记录 package com.model1; public class UserBean { private int userId; private String username; private String passwd; private String email; private int grade; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } }

UserBeanCl.java

//这是一个处理类,有些人把它叫做bo, //主要是封装对users表的各种操作 //主要是增、删、改 package com.model1; import java.sql.*; import java.util.*; public class UserBeanCl { private Statement sm = null; private ResultSet rs = null; private Connection ct = null; private int pageSize = 3; private int rowCount = 0; private int pageCount = 0; // 验证用户是否合法 public boolean checkUser(String u, String p) { boolean b = false; try { ConnDB cd = new ConnDB(); ct = cd.getConn(); sm = ct.createStatement(); rs = sm.executeQuery("select passwd from users where username='" + u + "'"); if (rs.next()) { if (rs.getString(1).equals(p)) { b = true; } } } catch (Exception e) { e.printStackTrace(); } finally { this.closeResource(); } return b; } // 关闭资源 public void closeResource() { // 关闭打开的各种资源 try { if (rs != null) { rs.close(); rs = null; } if (sm != null) { sm.close(); sm = null; } if (ct != null) { ct.close(); ct = null; } } catch (SQLException e) { e.printStackTrace(); } } // 分页功能,思考——为什么不是返回ResultSet结果集 public ArrayList<UserBean> getUsersByPage(int pageNow) { ArrayList<UserBean> al = new ArrayList<UserBean>(); try { ConnDB cd = new ConnDB(); ct = cd.getConn(); sm = ct.createStatement(); rs = sm.executeQuery("select * from users limit " + (pageNow - 1) * pageSize + "," + pageSize); // 把结果集封装到ArrayList中 while (rs.next()) { // 将rs中的每一条记录封装到UserBean ub,实现一号线 UserBean ub = new UserBean(); ub.setUserId(rs.getInt(1)); ub.setUsername(rs.getString(2)); ub.setPasswd(rs.getString(3)); ub.setEmail(rs.getString(4)); ub.setGrade(rs.getInt(5)); al.add(ub);// 实现第二根线,将ub放入到ArrayList中 } } catch (Exception e) { e.printStackTrace(); } finally { this.closeResource(); } return al; } // 返回分页总页数 public int getPageCount() { try { // 得到连接 ct = new ConnDB().getConn(); sm = ct.createStatement(); rs = sm.executeQuery("select count(*) from users"); // 计算pageCount if (rowCount % pageSize == 0) { pageCount = rowCount / pageSize; } else { pageCount = rowCount / pageSize + 1; } } catch (Exception e) { e.printStackTrace(); } finally { this.closeResource(); } return pageCount; } }

ConnDB.java  //连接数据库

//得到数据库的连接 package com.model1; import java.sql.*; public class ConnDB { private Connection ct=null; public Connection getConn(){ try{ //1.加载驱动 Class.forName("com.mysql.jdbc.Driver");// 加载驱动 // 2.得到连接 ct = DriverManager.getConnection( "jdbc:mysql://localhost:3306/spdb", "root", "root"); }catch(Exception e){ e.printStackTrace(); } return ct; } }

2.视图层

Login.jsp

<%@page contentType="text/html;charset=UTF-8" %> <html> <head> </head> <body bgcolor="pink"> <center> 用户登录 <br> <hr> <form action="loginCl.jsp" method="post"> 用户名:<input type="text" name="username" ><br> 密  码:<input type="password" name="passwd"><br> <input type="submit" value="登录"> <input type="reset" value="重置"> </form> </center> </body> </html>

LoginCl.jsp

<%@page contentType="text/html;charset=UTF-8" import="java.sql.*,java.util.*,com.model1.*"%> <html> <head> </head> <body> <% //接受用户名和密码,完成对用户的验证 String u=request.getParameter("username"); String p=request.getParameter("passwd"); //到数据库中验证,交给UserBeanCl.java的方法处理 UserBeanCl ubc=new UserBeanCl(); if(ubc.checkUser(u,p)){ response.sendRedirect("wel.jsp"); }else{ response.sendRedirect("login.jsp"); } %> </body> </html>

Wel.jsp

<%@page contentType="text/html;charset=UTF-8" import="java.sql.*,java.util.*,com.model1.*"%> <html> <body> 登录成功! <br> <%= request.getParameter("user")%><br> <a href="login.jsp" mce_href="login.jsp">返回重新登录</a> <hr> <center> <h1>用户信息列表</h1><br> <% //=================分页功能================ //1.定义四个分页会用到的变量 int pageNow=1;//默认显示第一页 //接收用户希望显示的页数(pageNow) String s_pageNow=request.getParameter("pageNow"); if(s_pageNow!=null){ //确实接收到pageNow pageNow=Integer.parseInt(s_pageNow); } //调用UserBeanCl()的方法(创建一个UserBean的实例,然后调用它的某个方法),完成分页显示 UserBeanCl ubc=new UserBeanCl(); ArrayList al=ubc.getUsersByPage(pageNow); //5.显示 %> <table border="1"> <tr><td>用户id</td><td>用户名</td><td>密码</td><td>邮件地址</td><td>用户级别</td></tr> <% for(int i=0;i<al.size();i++){//从al中取出UserBean UserBean ub=(UserBean)al.get(i); %> <tr><td><%=ub.getUserId()%></td><td><%=ub.getUsername()%></td><td><%=ub.getPasswd()%></td><td><%=ub.getEmail()%></td><td><%=ub.getGrade()%></td></tr> <% } %> </table> <% //6.显示超链接 int pageCount =ubc.getPageCount(); if(pageNow!=1){ out.print("<a href="wel.jsp?pageNow=1" mce_href="wel.jsp?pageNow=1">首页</a>"); out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow-1)+">上一页</a>"); } for(int i=pageNow;i<=pageNow+3;i++){ out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+i+">["+i+"]</a>"); } if(pageNow!=pageCount){ out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow+1)+">下一页</a>"); out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+pageCount+">尾页</a>"); } //=================分页功能================ %> </center> </body> </html>

你可能感兴趣的:(jsp学习笔记3——用户登录系统(mv模式))