MVC模型之用户登录系统
来源:互联网 发布:qqps源码 编辑:程序博客网 时间:2024/06/05 10:13
1、什么是MVC模型
2、用户登录系统的MVC模型
3、用户登录系统详解
3.1 登录界面 login.jsp
它主要完成用户登录界面,只是完成MVC中的V(view),也就是他只完成登录界面。
当提交登录按钮以后,把用户验证交给一个servlet去完成,因servlet的效率较高。
跳转的servlet通过loginClServlet完成。
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML><html> <head> <base href="<%=basePath%>"> <title>用户登录</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="login"><meta http-equiv="description" content="login page"> </head> <body bgcolor=pink><center><h1>用户登录</h1><form action="LoginClServlet" 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>
3.2 用户欢迎界面welcome.jsp
它也是MVC中的V(view)层。
他的数据来源分为两个servlet,分别是loginClServlet获取首次登录数据,UsersClServlet获取翻页后数据。
<%@ page language="java" import="java.util.*,java.sql.*,com.controller.*,com.ms.*" pageEncoding="gbk"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML><html> <head> <base href="<%=basePath%>"> <title>欢迎界面</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="welcome"><meta http-equiv="description" content="welcome page"> </head> <body bgcolor=pink> <h1>恭喜您,登录成功</h1><a href="login.jsp">返回重新登录</a><hr><h1>用户信息列表</h1><%//获取数据 Vector<UsersBean> v = (Vector<UsersBean>)request.getAttribute("result"); int pageCount = Integer.parseInt((String)request.getAttribute("pageCount")); int pageNow = Integer.parseInt((String)request.getAttribute("pageNow"));%><table border=1><tr><th>用户id</th><th>姓名</th><th>密码</th><th>Email</th><th>级别</th></tr><%for(int i = 0; i < v.size(); i++) {UsersBean ub = (UsersBean)v.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><% //上一页 if(pageNow != 1) out.println("<a href=UsersClServlet?pageNow="+(pageNow-1)+">上一页</a>"); //显示超链接 for(int i = 1; i <= pageCount; i++){out.println("<a href=UsersClServlet?pageNow="+i+">["+i+"]</a>"); } //下一页 if(pageNow != pageCount) out.println("<a href=UsersClServlet?pageNow="+(pageNow+1)+">下一页</a>");%> </body></html>
3.3 用户登录处理loginClServlet
用于验证用户是否合法,属于MVC中的C(controller)。
通过查询数据库验证,因此它需要调用MVC中的M(model),UsersBeanCl
/** * 控制器,完成对用户身份的验证 * 本身不完成业务逻辑(调用适当的model模型完成验证) */package com.controller;import com.ms.*;import java.io.IOException;import java.util.Vector;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginClServlet extends HttpServlet {/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//得到用户名和密码String u = request.getParameter("username");String p = request.getParameter("passwd");//使用模型(UsersBeanCl)完成对用户的验证//1 创建一个对象UsersBeanCl ubc = new UsersBeanCl();//2 调用方法if(ubc.checkUser(u, p)){Vector<UsersBean> v = ubc.getUsersByPage(1);int pageCount = ubc.getPageCount();request.setAttribute("result", v);request.setAttribute("pageCount", pageCount+"");request.setAttribute("pageNow", "1");//合法//转向的方法,效率不是很高//response.sendRedirect("welcome.jsp");//常常使用转发的方法,效率高并且request中对象还可以在下一页面使用request.getRequestDispatcher("welcome.jsp").forward(request, response);}else{request.getRequestDispatcher("login.jsp").forward(request, response);}}/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
3.4 用户跳转处理UsersClServlet
它主要用于获取数据库中的分页数据,属于MVC中的C(controller)。
因为要获取数据库中的数据,因此也要调用UsersBeanCl。
package com.controller;import com.ms.*;import java.io.IOException;import java.io.PrintWriter;import java.util.Vector;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UsersClServlet extends HttpServlet {/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {try {int pageNow = Integer.parseInt(request.getParameter("pageNow"));UsersBeanCl ubc = new UsersBeanCl();//在跳转到welcome.jsp之前把显示数据准备好Vector<UsersBean> v = ubc.getUsersByPage(pageNow);int pageCount = ubc.getPageCount();request.setAttribute("result", v);request.setAttribute("pageCount", pageCount+"");request.setAttribute("pageNow", pageNow+"");request.getRequestDispatcher("welcome.jsp").forward(request, response);} catch (Exception e) {e.printStackTrace();}}/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}
3.5 用户处理类UsersBeanCl
他主要完成数据库的数据查询,完成于数据库有关的操作。
属于MVC中的M(model)。
/** * 主要分装对users表的操作 */package com.ms;import java.sql.*;import java.util.*;public class UsersBeanCl {private Connection ct = null;private PreparedStatement ps = null;private ResultSet rs = null;//分页显示的功能 private int pageSize = 3;//一页显示几条记录 private int pageNow = 1;//希望显示第几页 private int rowCount = 0;//共有几条记录 private int pageCount = 0;//一共有几页 //验证用户是否合法public boolean checkUser(String u,String p) {boolean b = false;try {ct = new ConnDB().getConn(); //4查询ps = ct.prepareStatement("select passwd from users where userName='"+u+"'"); rs = ps.executeQuery(); //根据情况判断 if(rs.next()) { //用户名存在 if(rs.getString(1).equals(p)) { b = true; } }} catch (Exception e) {e.printStackTrace();} finally {//关闭资源this.close();}return b;}//返回数据库内数据public Vector<UsersBean> getUsersByPage(int pageNow) {Vector<UsersBean> v = new Vector<UsersBean>();try {ct = new ConnDB().getConn();ps = ct.prepareStatement ("select top "+pageSize+" * from users where userId not in (select top " +pageSize*(pageNow - 1)+" userId from users)"); rs = ps.executeQuery(); while(rs.next()){ UsersBean ub = new UsersBean(); 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)); //将UsersBean放入Vector v.add(ub); }} catch (Exception e) {e.printStackTrace();} finally {this.close();}return v;}//返回数据库数据数量public int getPageCount() {//.....try {ct = new ConnDB().getConn(); //4查询ps = ct.prepareStatement("select count(*) from users"); rs = ps.executeQuery(); //根据情况判断 if(rs.next()) { //用户名存在 rowCount = rs.getInt(1); }} catch (Exception e) {e.printStackTrace();} finally {this.close();}//计算pageCount if(rowCount%pageSize == 0) { pageCount = rowCount/pageSize; }else { pageCount = rowCount/pageSize + 1; }return pageCount;}//关闭资源函数public void close() {//关闭资源try {if(rs!=null) {rs.close();rs = null;}if(ps!=null) {ps.close();ps = null;}if(ct!=null) {ct.close();ct = null;}} catch (Exception e2) {e2.printStackTrace();}}}
3.6 用户类 UsersBean
他主要完成对用户数据的封装,实现一个用户类。
package com.ms;public class UsersBean {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;}}
3.7 数据库连接ConnDB
他主要用于完成数据库的连接。
package com.ms;import java.sql.*;public class ConnDB {private Connection ct = null;public Connection getConn() {try {//1加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2得到连接 ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1","sa","****");} catch (Exception e) {e.printStackTrace();}return ct;}}
4、演示
- MVC模型之用户登录系统
- JSP系统开发学习之三用户登录系统改进MVC模式开发
- YII MVC之用户注册和用户登录(一)
- 机房收费系统之用户登录
- 使用MVC模型的用户登录及注册(登录部分)
- 使用MVC模型的用户登录及注册(验证用户是否存在)
- 使用MVC模型的用户的注册和登录(注册部分)
- 使用MVC模型的用户登录及注册(注销部分)
- 使用MVC模型的用户登录及注册(注册验证)
- MVC 用户登录状态检测
- 使用MVC实现用户登录注册系统—银行管理系统
- 字典-用户登录系统
- 用户登录系统实现
- 系统登录用户表
- 模拟用户登录系统
- Java 用户登录系统
- 用户登录系统
- JSP系统开发学习之四关于用户登录界面的补充——通过request页面传值&wel.jsp的MVC的实现
- [译]Kinect for Windows SDK开发入门(二):基础知识 上
- learning by doing 系列一 概览
- VS2010下编译OpenCV2.4.6静态库
- 创建一个导航的抽屉---DrawerLayout从左抽出
- python 日期处理
- MVC模型之用户登录系统
- 将json转换为java集合对象
- oracle 查询数据信息
- GPS nmealib学习笔记
- 目标检测的图像特征提取之(一)HOG特征
- adb 问题解决
- 李开复谈成功的人生
- Cocos2d-x-html5分析与调试
- POJ 1019 Number Sequence