java程序设计与j2ee中间件技术/软件开发技术(III)-实验六-采用MVC模式实现用户注册和管理员查询功能

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: java程序设计与j2ee中间件技术/软件开发技术(III)-实验六-采用MVC模式实现用户注册和管理员查询功能

1 题目说明

采用MVC模式实现用户注册和管理员查询功能

用户直接注册,以手机号作为主键,不允许重复

管理员可以看到所有注册的用户列表

注册信息至少包括:手机号、姓名、密码、邮箱

2 实验设计

2.1 表设计

2.2 工程结构

工程结构:采用MVC模式,使用jsp+servlet+javabean。后端还使用jdbc的数据库。M是业务模型。业务模型定义了用户类,使用java bean,java bean中的User类有每个用户类模型的定义、getter、setter。在数据库中,用户有多个字段,分别为手机号(不能重复)、密码、邮箱、姓名,以及数据库后端隐藏的id号作为主键。V是用户视图。用户前端中,register.jsp是用户进行信息填写与注册的前端页面。若用户注册成功,则跳转到res.jsp页面。若用户注册失败(因为手机号重复),则跳转到duplicate.jsp页面。在register.jsp页面点击“管理用户名单”,跳转到manage.jsp并查看用户信息。

C是控制器。使用servlet,用户注册时交给AddServlet处理,查看用户名单时交给ShowServlet处理。每个Servlet都会将与数据库相关的业务服务通过调用UserService进行处理。UserService会链接数据库,调用DBConn,利用jdbc链接mysql数据库,并执行sql语句进行进一步处理。

3 运行界面截图与说明

在register.jsp中,可以进行注册。注册时输入手机号、密码、用户名、邮箱,并点击“提交”。也可以不注册,直接查看管理用户名单。

在提交注册表单后,系统会根据手机号信息查询,若查到数据库中已有重复手机号,则提示用户手机号重复且注册失败,跳转到duplicate.jsp。

在提交注册表单后,系统会根据手机号信息查询,若查到数据库中没有重复手机号,则提示用户注册成功,并向数据库中添加相应信息。

在提交注册表单时,若填写的信息不全,有空的数据项,则系统跳出提示“注册信息不得为空!”在前端的jsp页面和后端执行数据库的插入时都会判断一次,以保证数据库的安全性与完整性,不出现空信息。

(此部分涉及隐私信息,不放出)

在点击“管理用户名单”后,可以查看每个用户的手机号、密码、姓名与邮箱等完整信息。实现了管理员查询的功能。

4 代码

4.1 User.java

package bean;
public class User {
  private int id;
  private String username;
  private String password;
  private String cellphone;
  private String email;
  public int getId() {
    return id;
  }
  public void setId(int i) {
    this.id = i;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getCellphone() {
    return cellphone;
  }
  public void setCellphone(String cellphone) {
    this.cellphone=cellphone;
  }
  public String getEmail() {
    return email;
  }
  public void setEmail(String email) {
    this.email=email;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
}

4.2 DBConn.java

package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConn {
  public Connection getConnection() {
    String URL = "jdbc:mysql://localhost:3306/lab6?characterEncoding=utf-8";
    String USER = "root";
    String PASSWORD = "111111";
    // 1.加载驱动程序
    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
      Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
      return conn;
  } catch (ClassNotFoundException e) {      
    e.printStackTrace();
  }catch (SQLException e) {     
    e.printStackTrace();
  } 
    return null;
  }
}

4.3 UserService.java

package service;
import java.sql.*;
import java.util.*;
import db.DBConn;
import bean.User;
public class UserService {
//  ****************************************登录service**********************************************
  public boolean checkLogin(User bean) {
//    从JavaBean中获得属性值
    String cellphone=bean.getCellphone();
    String password=bean.getPassword();
//    创建连接
    try {
      DBConn db=new DBConn();
      Connection conn = db.getConnection();
      PreparedStatement pre=conn.prepareStatement("select * from lab6table where cellphone='"+cellphone+"' and password='" + password+"'");
      ResultSet rs=pre.executeQuery();
      if(rs.next()){
        pre.close();
        rs.close();
          return true;
      }
      else
          return false;
      } catch (SQLException e) {
        System.out.println("数据库连接出错!");
      return false;
    } 
  }
//  ****************************************注册和查询service**********************************************
  public boolean add(User bean) {
    String cellphone=bean.getCellphone();
    String email=bean.getEmail();
    String username=bean.getUsername();
    String password=bean.getPassword();
    try {
      DBConn db=new DBConn();
      Connection conn = db.getConnection();
      PreparedStatement pre=conn.prepareStatement("select * from lab6table where cellphone=?");
      pre.setString(1,cellphone);
      ResultSet rs=pre.executeQuery();
      if(!rs.next()){
        PreparedStatement pre1=conn.prepareStatement("insert into lab6table(cellphone,password,username,email) VALUES(?,?,?,?)");
        pre1.setString(1,cellphone);
        pre1.setString(2,password);
        pre1.setString(3,username);
        pre1.setString(4,email);
          pre1.executeUpdate();
          conn.close();
          pre.close();
          pre1.close();
          return true;
          }
      else
          return false;
      } catch (SQLException e) {
        System.out.println("数据库连接出错!");
        return false;
      }
  }
  public List<User> select() {
    try {
      List<User> list=new LinkedList<User>();
      DBConn db=new DBConn();
      Connection conn=db.getConnection();
      PreparedStatement pre=conn.prepareStatement("select * from lab6table");
      ResultSet resultSet=pre.executeQuery();
      while(resultSet.next()){
        String cellphone=resultSet.getString(1);
        String password=resultSet.getString(2);
        String username=resultSet.getString(3);
        String email=resultSet.getString(4);
        int id=resultSet.getInt(5);
        User bean=new User();
        bean.setCellphone(cellphone);
        bean.setPassword(password);
        bean.setUsername(username);
        bean.setEmail(email);
        list.add(bean);
      }
      return list;
    }catch(SQLException e) {
      System.out.println("数据库链接出错!");
      return null;
    }
  }
}

4.4 AddServlet.java

package servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import db.DBConn;
import bean.User;
import service.UserService;
public class AddServlet extends HttpServlet {
@Override
public void init() throws ServletException {
  super.init();
}
@Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  req.setCharacterEncoding("UTF-8");
  String username = req.getParameter("username");
  String password = req.getParameter("password");
  String email=req.getParameter("email");
  String cellphone=req.getParameter("cellphone");
  if(username.length()>0&&password.length()>0&&email.length()>0&&cellphone.length()>0){
//  写入JavaBean
  User bean=new User();
  HttpSession session=req.getSession(true);
  session.setAttribute("bean",bean);
  bean.setUsername(username);
  bean.setPassword(password);
  bean.setEmail(email);
  bean.setCellphone(cellphone);
  UserService addservice = new UserService();
//  判断是否注册成功
  if(addservice.add(bean)){ 
//    转发
    RequestDispatcher dis=req.getRequestDispatcher("res.jsp"); 
    dis.forward(req, resp); 
  }else{
//    重定向
    resp.sendRedirect("duplicate.jsp"); 
  }
  }else
    resp.sendRedirect("register.jsp?Null=yes"); 
  }
@Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
  }
}

4.5 ShowServlet.java

package servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import db.DBConn;
import bean.User;
import service.UserService;
import java.util.*;
public class ShowServlet extends HttpServlet {
@Override
  public void init() throws ServletException {
    super.init();
  }
@Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("UTF-8");
    HttpSession session=req.getSession(true);
    UserService selectService = new UserService();
//  判断是否注册成功
//    转发
    List<User> users=selectService.select();
    req.setAttribute("users", users);
    RequestDispatcher dis=req.getRequestDispatcher("manage.jsp"); 
    dis.forward(req, resp); 
  }
}

4.6 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>ch7_test</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
      <servlet-name>addServlet</servlet-name>
      <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>addServlet</servlet-name>
    <url-pattern>/AddServlet</url-pattern>
  </servlet-mapping>
    <servlet>
      <servlet-name>showServlet</servlet-name>
      <servlet-class>servlet.ShowServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>showServlet</servlet-name>
    <url-pattern>/ShowServlet</url-pattern>
  </servlet-mapping>
   <servlet>
      <servlet-name>loginServlet</servlet-name>
      <servlet-class>web.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>loginServlet</servlet-name>
    <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
</web-app>

4.7 duplicate.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<jsp:useBean id="bean" class="bean.User" scope="session"/>
<html>
<head>
    <title>查询</title>
</head>
<body>
<h2 align="center">注册失败!手机号重复!</h2>
   </body>
</html>

4.8 manage.jsp

<%@page import="bean.*"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>manage.jsp</title>
</head>
<body>
<%
List<User> users=(List<User>)request.getAttribute("users");
%>
<table border="1">
<tr>
  <th>手机号</th>
  <th>密码</th>
  <th>姓名</th>
  <th>邮箱</th>
</tr>
<%for(User user:users){%>
<tr>
  <td><%=user.getCellphone()%></td> 
  <td><%=user.getPassword()%></td> 
  <td><%=user.getUsername()%></td>
  <td><%=user.getEmail()%></td>
<tr>
<%}%>
</table>
</body>
</html>

4.9 register.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
  <head>
    <title>register.jsp</title>
  </head>
  <body>
  <font size=3>
    <h1>请注册</h1>
    <form action="AddServlet" method="post">
    <table>
        <tr>
          <td>手机号:</td>
          <td><input type="text" name="cellphone"></td>
        </tr>
        <tr>
          <td>密 码:</td> 
          <td><input type="password" name="password"></td>
        </tr>
        <tr>
          <td>姓 名:</td> 
          <td><input type="text" name="username"></td>
        </tr>
        <tr>
          <td>邮 箱:</td> 
          <td><input type="text" name="email"></td>
        </tr>
        <tr>
        <td><input type="submit" value="提交"></td>
      </tr>
    </table>
    </form>
    </font>
    <form action="ShowServlet" method="post">
          <input type="submit" value="管理用户名单">
    </form>
    <script>
     var Null= '<%=request.getParameter("Null")%>';
    if(Null=='yes'){
        alert("注册信息不得为空!");
    }
    </script>
  </body>
</html>

4.10 res.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<jsp:useBean id="bean" class="bean.User" scope="session"/>
<html>
<head>
    <title>查询</title>
</head>
<body>
<h2 align="center">注册成功!</h2>
   </body>
</html>


目录
相关文章
|
21天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
46 11
|
30天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
64 7
|
12天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
27天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
86 34
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
66 0
|
8月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
218 0
|
8月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
89 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
177 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
115 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
188 0