zoukankan      html  css  js  c++  java
  • 基于设计模式的用户管理

    基于DAO模式和MVC模式完成一个用户管理程序,包括用户注册、用户登录、浏览用户列表和删除用户等四个功能。
    要求:1)JSP页面中不允许出现Java代码,使用标签实现显示逻辑
              2)HTTP请求发送给Servlet,由Servlet负责调用DAO类,并转发给JSP页面
              3)浏览用户列表页面要支持分页功能

    DBCon.java类:与数据库admin表连接,有插入,删除等动作;

     1 package db_admin;
     2 
     3 import java.sql.*;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 
     9 public class DBCon {
    10     private String dbDriver = "com.mysql.jdbc.Driver";
    11     private String dbUrl = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8";
    12     private String dbUser = "root";
    13     private String dbPwd = "123456";
    14     private Connection conn = null;
    15 
    16     public Connection getConnection() {
    17         try {
    18             Class.forName(dbDriver);
    19             conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
    20         } catch (ClassNotFoundException e) {
    21             e.printStackTrace();
    22         } catch (SQLException e) {
    23             e.printStackTrace();
    24         }
    25         return conn;
    26     }
    27 
    28     public ResultSet doQurey(String sql) {
    29         ResultSet rs = null;
    30         conn = this.getConnection();
    31         try {
    32             Statement stmt = conn.createStatement();
    33             rs = stmt.executeQuery(sql);
    34         } catch (Exception e) {
    35             e.printStackTrace();
    36         }
    37         return rs;
    38     }
    39 
    40     public int doUpdate(String sql) {
    41         int res = 0;
    42         conn = this.getConnection();
    43         try {
    44             Statement stmt = conn.createStatement();
    45             res = stmt.executeUpdate(sql);
    46         } catch (Exception e) {
    47             e.printStackTrace();
    48         }
    49         return res;
    50     }
    51 
    52     public String checkUser(String username, String password) {
    53         boolean has_username = false;
    54         boolean password_correct = false;
    55         ResultSet rs = null;
    56         try {
    57             rs = doQurey("select * from admin");
    58         } catch (Exception e) {
    59             e.printStackTrace();
    60         }
    61 
    62         try {
    63             while (rs.next()) {
    64                 String temp_username = rs.getString("username");
    65                 String temp_password = rs.getString("password");
    66                 if (username.equals(temp_username)) {
    67                     has_username = true;
    68                     if (password.equals(temp_password)) {
    69                         password_correct = true;
    70 
    71                         return "hasUserNameAndPasswordCorrect";
    72 
    73                     }
    74 
    75                     return "hasUserNameButPasswordInCorrect";
    76 
    77                 }
    78 
    79             }
    80 
    81         } catch (SQLException e) {
    82 
    83             e.printStackTrace();
    84 
    85         }
    86 
    87         return "hasNoUserName";
    88 
    89     }
    90 
    91     public void close() throws SQLException {
    92         try {
    93             conn.close();
    94         } catch (Exception e) {
    95             e.printStackTrace();
    96         }
    97     }
    98 }
    View Code

    LoginControl.java:Servlet类,做登录验证,查看用户是否存在,密码是否正确;

     1 package servletLogin;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.RequestDispatcher;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.annotation.WebServlet;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import db_admin.DBCon;
    12 
    13 /**
    14  * Servlet implementation class LoginControl
    15  */
    16 @WebServlet("/LoginControl")
    17 public class LoginControl extends HttpServlet {
    18     private static final long serialVersionUID = 1L;
    19 
    20     /**
    21      * @see HttpServlet#HttpServlet()
    22      */
    23     public LoginControl() {
    24         super();
    25         // TODO Auto-generated constructor stub
    26     }
    27 
    28     /**
    29      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    30      *      response)
    31      */
    32     protected void doGet(HttpServletRequest request, HttpServletResponse response)
    33             throws ServletException, IOException {
    34         // TODO Auto-generated method stub
    35         String username = request.getParameter("username");
    36         String password = request.getParameter("password");
    37 
    38         DBCon dbc = new DBCon();
    39         String result = dbc.checkUser(username, password);
    40         if (result.equals("hasUserNameAndPasswordCorrect")) {
    41             System.out.println("用户名及密码正确");
    42             RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
    43             rd.forward(request, response);
    44         } else if (result.equals("hasUserNameButPasswordInCorrect")) {
    45             System.out.println("密码不正确");
    46             RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
    47             rd.forward(request, response);
    48         } else if (result.equals("hasNoUserName")) {
    49             System.out.println("该用户不存在");
    50             RequestDispatcher rd = request.getRequestDispatcher("error2.jsp");
    51             rd.forward(request, response);
    52         }
    53 
    54 
    55     }
    56 
    57     /**
    58      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    59      *      response)
    60      */
    61     protected void doPost(HttpServletRequest request, HttpServletResponse response)
    62             throws ServletException, IOException {
    63         // TODO Auto-generated method stub
    64         doGet(request, response);
    65     }
    66 
    67 }
    View Code

    regist.jsp:注册页面;

      1 <%@ page language="java" contentType="text/html; charset=UTF-8"
      2     pageEncoding="UTF-8"%>
      3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      4 <html>
      5 <head>
      6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      7 <title>注册页面</title>
      8 <style>
      9 @charset "utf-8";
     10 #frm {
     11     padding: 20px;
     12     margin-top: 10px;
     13     height: 1000px;
     14     background-color: #F0FFFF;
     15 }
     16 #main{
     17 margin-top:30px;
     18 margin-left:200px;
     19     background-color: #FFDAB9;
     20     border:1px solid;
     21     padding:10px 40px; 
     22     300px;
     23     overflow:auto;
     24     text-align:center;
     25 }
     26 .divcls {
     27     border-bottom: 1px dashed blue;
     28     margin-bottom: 10pt;
     29     padding-bottom: 10pt;
     30 }
     31 #mytop{
     32     text-align:left;
     33       margin-bottom:10pt;
     34       font-size:15pt;
     35     }
     36 #mytop a{
     37 font-size:10pt;
     38 color:bule;
     39 }
     40 #mytop span{
     41     font-size:10px;
     42     font-weight:bolder;
     43     }
     44 .info {
     45     margin-left: 25%;
     46     padding: 14px 16px;
     47     height: 1000px;
     48 }
     49 .myrow {
     50     margin: 10pt 0;
     51 }
     52 .myrow label {
     53     display: block;
     54      100pt;
     55     font-weight: bolder;
     56 }
     57 .myrow note {
     58     font-size: 10px;
     59     font-weight: bloder;
     60 }
     61 .noignore {
     62     color: red;
     63 }
     64 .submit {
     65  style:100%;
     66     text-align: center;
     67 }
     68 .agree {
     69     color: red;
     70     font-size: 15px;
     71 }
     72 </style>
     73 <script type="text/javascript">
     74 function nme(){
     75     var result = true;
     76     var nameDOM = document.getElementById('uname').value;
     77     if (nameDOM == '') {
     78         document.getElementById('name').innerHTML = '<span style="color:red;">用户名不能为空!</span>';
     79         result = false;
     80     }else {
     81         document.getElementById('name').innerHTML = '<span style="color:green;">正确!</span>';
     82         result = true;
     83     }
     84 
     85     return result;
     86 }
     87 /*密码验证*/
     88 function Password(){
     89     var result = true;
     90     var pwdDOM = document.getElementById('upwd').value;
     91     if (pwdDOM == ''){
     92         document.getElementById('pwd').innerHTML =  '<span style="color:red;">密码不能为空!</span>';
     93         result = false;
     94     }else {
     95         document.getElementById('pwd').innerHTML = '<span style="color:green;">正确!</span>';
     96         result = true;
     97     }
     98     return result;
     99 }
    100 /*确认密码验证*/
    101 function rePassword(){
    102     var result = true;
    103     var pwdDOM = document.getElementById('upwd').value;
    104     var repwdDOM = document.getElementById('reupwd').value;
    105     if (repwdDOM == ''){
    106         document.getElementById('repwd').innerHTML =  '<span style="color:red;">此项不能为空!</span>';
    107         result = false;
    108     }else {
    109         document.getElementById('repwd').innerHTML = '<span style="color:green;">正确!</span>';
    110         result = true;
    111     }
    112     return result;
    113 }
    114 function Rabbit(){
    115     var Rabit = new Array();
    116     Rabit[0] = nme();
    117     Rabit[1] = Password();
    118     return Rabit;
    119 
    120 }
    121 function myFunction(){
    122     var w = new Array();
    123     w = Rabbit();
    124     var a = 0;
    125     var s = 1;
    126     for (var i = 0; i < 2; i++) {
    127         if(w[i]==true){
    128             a++;console.warn(a);
    129         }
    130         console.warn(w[i]);
    131     }
    132 
    133     if (a == 2) {
    134         alert("注册成功");
    135     }
    136     else{
    137         alert('请按规定输入完整的注册资料!');
    138         var Rabit;
    139         Rabit = Password();
    140         if (Rabit == false) {
    141             var passwordfocus = document.getElementById('password');
    142             passwordfocus.focus();
    143         }
    144         Rabit = nme();
    145         if (Rabit == false) {
    146             var codefocus = document.getElementById('name');
    147             codefocus.focus();
    148         }
    149     }
    150 }
    151 </script>
    152 </head>
    153 <body>
    154 <form id="frm" action="do_insert.jsp" method="post">
    155   <div id="mytop" class="divcls">用户注册:
    156   <a href="login.jsp">已注册,点击登录</a>
    157   </div>
    158   <div id="main">
    159   <div class="myrow">
    160     <label for="uname">用户名&nbsp;:</label>
    161     <input type="text" id="uname" name="username" onClick="nme()"/>
    162     <span class="noignore">*</span> <span class="note" id="name">必填</span> </div>
    163   <div class="myrow">
    164     <label for="upwd">密&nbsp;&nbsp;&nbsp;码:</label>
    165     <input type="password" id="upwd" name="password" onClick="Password()"/>
    166     <span class="noignore">*</span> <span class="note" id="pwd">必填</span> </div>
    167   <div class="submit"> 
    168   <input id="mysubmit" type="submit" value="确认注册" onClick="myFunction()"/>
    169   <input id="mysubmit" type="reset" value="重置"/>
    170   </div>
    171    </div>
    172   </form>
    173 </body>
    174 </html>
    View Code

    do_insert.jsp:将输入的用户名与密码插入到数据库的admin表中;

     1 <%@ page import="db_admin.DBCon,java.sql.*" %>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8"
     3     pageEncoding="UTF-8"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>添加用户</title>
     9 </head>
    10 <body>
    11 <%
    12 response.setCharacterEncoding("utf-8");
    13 String username = request.getParameter("username");
    14 String password = request.getParameter("password");
    15 DBCon dbc = new DBCon();
    16 String sql = "insert into admin(username,password)values('"+ username +"','"+ password +"')";
    17 int res = dbc.doUpdate(sql);
    18 if(res>0){
    19     out.print("<script>alert('注册成功,单击跳转到登录页面!')</script>");
    20     response.setHeader("refresh", "1;url='login.jsp'");
    21 }else{
    22     out.print("<script>alert('注册失败,单击跳转到注册页面!')</script>");
    23     response.sendRedirect("regist.jsp");
    24 }
    25 %>
    26 </body>
    27 </html>
    View Code

    login.jsp:登录页面;

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>登录页面</title>
     8 <style>
     9 @charset "utf-8";
    10 #frm {
    11     padding: 20px;
    12     margin-top: 10px;
    13     height: 1000px;
    14     background-color: #F0FFFF;
    15 }
    16 #main{
    17 margin-top:30px;
    18 margin-left:200px;
    19     background-color: #FFDAB9;
    20     border:1px solid;
    21     padding:10px 40px; 
    22     300px;
    23     overflow:auto;
    24     text-align:center;
    25 }
    26 .divcls {
    27     border-bottom: 1px dashed blue;
    28     margin-bottom: 10pt;
    29     padding-bottom: 10pt;
    30 }
    31 #mytop{
    32     text-align:left;
    33       margin-bottom:10pt;
    34       font-size:15pt;
    35     }
    36 #mytop a{
    37 font-size:10pt;
    38 }
    39 #mytop span{
    40     font-size:10px;
    41     font-weight:bolder;
    42     }
    43 .myrow {
    44     margin: 10pt 0;
    45 }
    46 .myrow label {
    47     display: block;
    48      100pt;
    49     font-weight: bolder;`
    50 }
    51 .myrow note {
    52     font-size: 10px;
    53     font-weight: bloder;
    54 }
    55 .noignore {
    56     color: red;
    57 }
    58 .submit {
    59  style:100%;
    60     text-align: center;
    61 }
    62 .agree {
    63     color: red;
    64     font-size: 15px;
    65 }
    66 </style>
    67 </head>
    68 <body>
    69 <form id="frm" action="LoginControl" method="post">
    70 
    71   <div id="mytop" class="divcls">用户登录:
    72   <a href="regist.jsp">未注册,点击注册</a>
    73   </div>
    74   <div id="main">
    75   <div class="myrow">
    76     <label for="uname">用户名&nbsp;:</label>
    77     <input type="text" id="uname" name="username" onClick="nme()"/>
    78 </div>
    79   <div class="myrow">
    80     <label for="upwd">密&nbsp;&nbsp;&nbsp;码:</label>
    81     <input type="password" id="upwd" name="password" onClick="Password()"/>
    82 </div>
    83   <div class="submit"> 
    84   <input id="mysubmit" type="submit" value="登录"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    85   <input id="mysubmit" type="reset" value="重置"/>
    86   </div>
    87   </div>
    88   </form>
    89 </body>
    90 </html>
    View Code

    pager.jsp:分页显示admin中的数据;

     1 <%@page import="java.sql.*,db_admin.*"%>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8"
     3     pageEncoding="UTF-8"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>分页显示</title>
     9 <style type="text/css">
    10 body{
    11     background-color: #FFDAB9;
    12 }
    13 body.table{
    14 margin-top:30px;
    15 margin-left:200px;
    16 }
    17 </style>
    18 </head>
    19 <body>
    20     <%
    21         //总的页面数
    22         int pageCount = 0;
    23         //每页显示的记录数
    24         int pageSize = 5;
    25         //当前页面
    26         int currentP = 1;
    27         //表中的记录数
    28         int totalCount = 5;
    29         //数据库的连接
    30         DBCon dbc = new DBCon();
    31         //表中总记录数
    32         String sql = "select count(*) as t from admin";
    33         ResultSet rs = dbc.doQurey(sql);
    34         if (rs.next())
    35             totalCount = rs.getInt("t");
    36         //根据总的记录数来计算页面数
    37         if (totalCount / pageSize == 0)
    38             pageCount = (totalCount / pageSize);
    39         else
    40             pageCount = (totalCount / pageSize) + 1;
    41         //获得分页条上的当前页码
    42         String pStr = request.getParameter("p");
    43         if (pStr == null)
    44             pStr = "1";
    45         currentP = Integer.parseInt(pStr);
    46         //如果当前页大于总的页面数,当前页面赋值为总的页面数
    47         if (currentP > pageCount)
    48             currentP = pageCount;
    49         //如果当前页小于0,重置为第一页
    50         if (currentP < 0)
    51             currentP = 1;
    52         //分页查询,MySQL分页查询关键字limit,注意limit后有空格
    53         sql = "select * from admin limit " + (currentP - 1) * pageSize + "," + pageSize;
    54         rs = dbc.doQurey(sql);
    55     %>
    56     <table border="1">
    57             <tr>
    58         <th>id</th>
    59         <th>用户名</th>
    60         <th>密码</th>
    61         <th>功能</th>
    62         </tr>
    63         <%
    64             while (rs.next()) {
    65         %>
    66 
    67         <tr>
    68             <td><%= rs.getInt("id") %></td>
    69             <td><%= rs.getString("username") %></td>
    70             <td><%= rs.getString("password") %></td>
    71             <td><a href="do_edit.jsp?id=<%= rs.getInt("id")%>">编辑</a>
    72             <a href="do_delete.jsp?id=<%= rs.getInt("id")%>">删除</a>
    73             </td>
    74         </tr>
    75         <%
    76             }
    77         %>
    78     </table>
    79     <%
    80         if (currentP > 1) {
    81     %>
    82     <a href="pager.jsp?p=1">第一页</a>
    83     <a href="pager.jsp?p=<%= currentP - 1 %>">上一页</a>
    84     <%
    85         }
    86     %>
    87     <%
    88         if (currentP <= pageCount) {
    89     %>
    90     <a href="pager.jsp?p=<%= currentP + 1 %>">下一页</a>
    91     <a href="pager.jsp?p=<%= pageCount %>">最后一页</a>
    92     <%
    93         }
    94     %>
    95 </body>
    96 </html>
    View Code
  • 相关阅读:
    fn project 试用之后的几个问题的解答
    fn project 扩展
    fn project 生产环境使用
    fn project 对象模型
    fn project AWS Lambda 格式 functions
    fn project 打包Function
    fn project Function files 说明
    fn project hot functions 说明
    fn project k8s 集成
    fn project 私有镜像发布
  • 原文地址:https://www.cnblogs.com/Lia-633/p/7930458.html
Copyright © 2011-2022 走看看