model1模式变为mv模式,实现业务逻辑和画面的分离
增加UserBeanCl类
1 /** 2 * 这是一个处理user表的类,操作UserBean 3 * 业务逻辑在这里 4 */ 5 package com; 6 7 import java.sql.Connection; 8 import java.sql.DriverManager; 9 import java.sql.PreparedStatement; 10 import java.sql.ResultSet; 11 import java.sql.SQLException; 12 import java.util.ArrayList; 13 14 public class UserBeanCl { 15 // 业务逻辑 16 private Connection connection = null; 17 private PreparedStatement preStatement = null; 18 private ResultSet rs = null; 19 private int pageCount = 0; 20 21 // 用户验证 22 public boolean checkUser(String username, String passwd) { 23 boolean flag = false; 24 // 得到连接 25 ConnDB cd = new ConnDB(); 26 connection = cd.getConnection(); 27 28 try { 29 String sql = "select password from db_users where username=?"; 30 preStatement = connection.prepareStatement(sql); 31 preStatement.setString(1, username); 32 rs = preStatement.executeQuery(); 33 if (rs.next()) { 34 String dpasswd = rs.getString(1); 35 if (dpasswd.equals(passwd)) { 36 flag = true; 37 } 38 } 39 } catch (SQLException e) { 40 // TODO Auto-generated catch block 41 e.printStackTrace(); 42 } finally { 43 this.close(); 44 } 45 return flag; 46 } 47 48 // 关闭资源 49 public void close() { 50 if (rs != null) { 51 try { 52 rs.close(); 53 rs = null; 54 } catch (SQLException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 } 58 } 59 if (preStatement != null) { 60 try { 61 preStatement.close(); 62 preStatement = null; 63 } catch (SQLException e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } 67 } 68 if (connection != null) { 69 try { 70 connection.close(); 71 connection = null; 72 } catch (SQLException e) { 73 // TODO Auto-generated catch block 74 e.printStackTrace(); 75 } 76 } 77 } 78 79 // 分页显示 80 public ArrayList getResultByPage(int pageNow, int pageSize) { 81 ArrayList aList = new ArrayList(); 82 int rowCount = 0; 83 84 try { 85 ConnDB cd = new ConnDB(); 86 connection = cd.getConnection(); 87 preStatement = connection.prepareStatement("select count(*) from db_users"); 88 rs = preStatement.executeQuery(); 89 if (rs.next()) { 90 rowCount = rs.getInt(1); 91 } 92 // 计算pageCount 93 if (rowCount % pageSize == 0) { 94 pageCount = rowCount / pageSize; 95 } else { 96 pageCount = rowCount / pageSize + 1; 97 } 98 99 preStatement = connection.prepareStatement("select * from db_users limit ?,?"); 100 // 给?赋值 101 preStatement.setInt(1, pageSize * (pageNow - 1)); 102 preStatement.setInt(2, pageSize); 103 rs = preStatement.executeQuery(); 104 105 while(rs.next()) 106 { 107 // 将rs中的每条记录封装到UserBean中 108 UserBean ub = new UserBean(); 109 ub.setUserId(rs.getInt(1)); 110 ub.setUserName(rs.getString(2)); 111 ub.setPassWord(rs.getString(3)); 112 113 aList.add(ub); 114 } 115 } catch (Exception e) { 116 // TODO Auto-generated catch block 117 e.printStackTrace(); 118 }finally { 119 this.close(); 120 } 121 return aList; 122 } 123 124 public int getPageCount() 125 { 126 return this.pageCount; 127 } 128 }
增加ConnDB类
1 package com; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 6 public class ConnDB { 7 8 private Connection connection=null; 9 public Connection getConnection() 10 { 11 try { 12 Class.forName("com.mysql.jdbc.Driver"); 13 connection =DriverManager.getConnection("jdbc:mysql://localhost/dbjdbc","root","123456"); 14 } catch (Exception e) { 15 // TODO Auto-generated catch block 16 e.printStackTrace(); 17 } 18 return connection; 19 20 } 21 22 }
增加UserBean类
1 package com; 2 3 public class UserBean { 4 5 private int userId; 6 private String userName; 7 private String passWord; 8 public int getUserId() { 9 return userId; 10 } 11 public void setUserId(int userId) { 12 this.userId = userId; 13 } 14 public String getUserName() { 15 return userName; 16 } 17 public void setUserName(String userName) { 18 this.userName = userName; 19 } 20 public String getPassWord() { 21 return passWord; 22 } 23 public void setPassWord(String passWord) { 24 this.passWord = passWord; 25 } 26 27 28 }
优化后的LoginCl类
1 package com; 2 3 import javax.servlet.http.Cookie; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import javax.servlet.http.HttpSession; 8 9 public class LoginCl extends HttpServlet { 10 11 public void doGet(HttpServletRequest req, HttpServletResponse res) { 12 13 try { 14 req.setCharacterEncoding("gbk"); 15 res.setContentType("text/html;charset=gbk"); 16 17 String username = req.getParameter("username"); 18 String password = req.getParameter("password"); 19 String sex = req.getParameter("sex"); 20 // 用户合法性check 21 UserBeanCl ubc = new UserBeanCl(); 22 if (ubc.checkUser(username, password)) { 23 // 用户合法 24 // 得到Session 25 HttpSession hs = req.getSession(true); 26 // 修改Session存在时间 27 hs.setMaxInactiveInterval(30); 28 // Session添加属性pass 29 hs.setAttribute("pass", "ok"); 30 31 String keep = req.getParameter("keep"); 32 if (keep != null) { 33 // 创建Cookie 34 Cookie name = new Cookie("myname", username); 35 Cookie pass = new Cookie("mypass", password); 36 // 设置时间 37 name.setMaxAge(14 * 24 * 3600); 38 pass.setMaxAge(14 * 24 * 3600); 39 // 回写到客户端 40 res.addCookie(name); 41 res.addCookie(pass); 42 } 43 res.sendRedirect("welcome?uname=" + username + "&upassw=" + password + "&sx=" + sex); 44 } else { 45 // 说明密码错误 46 res.sendRedirect("login?info=error1"); 47 } 48 } catch (Exception e) { 49 // TODO Auto-generated catch block 50 e.printStackTrace(); 51 } 52 53 } 54 55 public void doPost(HttpServletRequest req, HttpServletResponse res) { 56 this.doGet(req, res); 57 } 58 59 }
优化后的Welcome类
1 package com; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.sql.Connection; 6 import java.sql.DriverManager; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultSet; 9 import java.sql.Statement; 10 import java.util.ArrayList; 11 import java.util.concurrent.CountDownLatch; 12 13 import javax.servlet.http.Cookie; 14 import javax.servlet.http.HttpServlet; 15 import javax.servlet.http.HttpServletRequest; 16 import javax.servlet.http.HttpServletResponse; 17 import javax.servlet.http.HttpSession; 18 19 import com.sun.corba.se.impl.encoding.CodeSetConversion.CTBConverter; 20 import com.sun.org.apache.bcel.internal.generic.Select; 21 22 import javafx.css.PseudoClass; 23 24 public class Welcome extends HttpServlet { 25 26 public void doGet(HttpServletRequest req, HttpServletResponse res) { 27 28 try { 29 req.setCharacterEncoding("gbk"); 30 res.setContentType("text/html;charset=gbk"); 31 HttpSession hs = req.getSession(true); 32 String val = (String) hs.getAttribute("pass"); 33 String sessionId = hs.getId(); 34 String name = ""; 35 String passwd = ""; 36 if (val == null) { 37 // 如果Session中没有用户信息,再看看有没有Cookie信息 38 // 从客户端读取Cookie信息 39 Cookie[] allCookies = req.getCookies(); 40 int i = 0; 41 // 如果allCookies不为空 42 if (allCookies != null) { 43 // 从中取出Cookie 44 for (i = 0; i < allCookies.length; i++) { 45 // 依次取出Cookie 46 Cookie tempCookie = allCookies[i]; 47 if (tempCookie.getName().equals("myname")) { 48 name = tempCookie.getValue(); 49 } else if (tempCookie.getName().equals("mypass")) { 50 passwd = tempCookie.getValue(); 51 } 52 } 53 if (!name.equals("") && !passwd.equals("")) { 54 55 // System.out.println("准备跳转logincl页面,username="+name+",password="+passwd); 56 res.sendRedirect("logincl?username=" + name + "&password=" + passwd); 57 } 58 } 59 } 60 61 //res.sendRedirect("login?info=error1"); 62 String u = req.getParameter("uname"); 63 String p = req.getParameter("upassw"); 64 String s = req.getParameter("sx"); 65 66 PrintWriter pw = res.getWriter(); 67 pw.println("<body><center>"); 68 pw.println("<img src=imgs/521.jpg><br>"); 69 pw.println("welcom to my world,u=" + u + ",p=" + p + ",s=" + s + ",sessionId=" + sessionId); 70 71 // ------------------开始分页-------------------- 72 int pageSize = 3; 73 int pageNow = 1; 74 String sPageNow = req.getParameter("pageNow"); 75 if (sPageNow != null) { 76 pageNow = Integer.parseInt(sPageNow); 77 } 78 79 // 调用分页函数 80 UserBeanCl ubc = new UserBeanCl(); 81 ArrayList arrayList = ubc.getResultByPage(pageNow, pageSize); 82 83 // 显示结果 84 // 显示表头 85 pw.println("<table border=1>"); 86 pw.println("<tr><th>id</th><th>username</th><th>password</th></tr>"); 87 for (int i = 0; i < arrayList.size(); i++) { 88 UserBean ub = (UserBean) arrayList.get(i); 89 pw.println("<tr>"); 90 pw.println("<td>" + ub.getUserId() + "</td>"); 91 pw.println("<td>" + ub.getUserName() + "</td>"); 92 pw.print("<td>" + ub.getPassWord() + "</td>"); 93 pw.println("</tr>"); 94 } 95 pw.println("</table>"); 96 // 显示上一页 97 if (pageNow != 1) { 98 pw.println("<a href=welcome?pageNow=" + (pageNow - 1) + ">" + "上一页</a>"); 99 } 100 101 // 显示超链接 102 for (int i = pageNow; i <= ubc.getPageCount(); i++) { 103 pw.println("<a href=welcome?pageNow=" + i + ">" + i + "</a>"); 104 } 105 if (pageNow != ubc.getPageCount()) { 106 pw.println("<a href=welcome?pageNow=" + (pageNow + 1) + ">" + "下一页</a>"); 107 } 108 pw.println("</center></body>"); 109 } catch (Exception e) { 110 // TODO: handle exception 111 e.printStackTrace(); 112 } 113 114 } 115 116 public void doPost(HttpServletRequest req, HttpServletResponse res) { 117 this.doGet(req, res); 118 } 119 120 }
posted on 2017-08-16 22:34 John_Baker 阅读(245) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!