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
  • 相关阅读:
    360给腾讯造的盗梦空间
    C 语言 运算符优先级
    CorelDraw, Adobe Illustrator 转换到 Photoshop 形状路径
    用户体验经典解释
    禁用Windows XP的自动播放功能
    ObjectiveC ARC下的内存管理(一)
    ARC下的内存管理(二)对象及成员的引用关系
    天天撞墙
    PS: 操作不实时显示的解决办法
    摩托罗拉 Milestone新手刷机教程
  • 原文地址:https://www.cnblogs.com/Lia-633/p/7930458.html
Copyright © 2011-2022 走看看