当前位置:   article > 正文

【JSP课程设计】个人信息管理系统(代码保姆级)【更新】

个人信息管理系统

目录

开发工具及开发环境

WEB系统注册与登录功能模块需求

1.1 注册功能

1.2 登录功能

登陆时的过程:

1.3 填写补充信息功能

1.3 查看注册信息功能

1.4 修改用户信息功能

1.5 用户退出

1.6 其它功能

项目流程结构及源码

项目编写的流程(参考)

系统功能展示


项目源码

JSP个人信息管理系统: JSP课设个人信息管理系统 - Gitee.com

以前的源码丢了,但是一直有小伙伴求源码,最近比较空,抄了本文代码凑了一份能跑的源码

开发工具及开发环境

Eclipse EE (IDEA)、Mysql、Navicat for MySQL、Tomcat-9.0.60、windows 10系统

WEB系统注册与登录功能模块需求

1.1 注册功能

  • 注册时需提供以下信息:
  • 用户名
    • 长度必须大于等于6位,小于10位
    • 用户名不能重名
    • 必选项
  • 登录密码
    • 必须至少有1个数字、1个大写字母、1个小写字母和其它字符共同组成
    • 长度必须大于6位,小于12位
    • 需要用户输入两次相同的密码才能确认注册
    • 必选项
  • 邮件地址
    • 用户邮件地址,需要校验邮件格式###@####,后台校验
    • 邮件地址不能重复
    • 必选项
  • 单位
    • 最大长度50位
    • 可选项
    • 注册提交后:
    • 所有信息都合法,则返回显示注册成功字样的页面,内含返回登录界面的链接。
    • 若有部分信息不合法,则返回显示注册失败字样的页面,内含指明哪条注册信息错误的提醒,同时内含返回重新填写的链接
    • 注册成功后:系统将自动获得用户的成功注册时间,包括:年月日时分秒

1.2 登录功能

登陆时的过程:

  1. 输入用户名和密码
  2. 提交登陆
  3. 登陆提交后:
  • 若有该用户名,密码不正确,则返回包含登录密码错误字样的页面,内含返回重新登录的链接
  • 若无该用户名,则返回包含“用户名或密码错误”字样的页面,内含返回重新登录的链接
  • 若登陆成功,则返回包含“登录成功”字样的页面,内含返回用户注册信息的链接和退出登录链接

1.3 填写补充信息功能

  • 只有登录用户可以填写补充信息
  • 补充信息包括

(1)真实姓名,必填,只能包含不含空格的2-4个中文字符,或20个字符以内的英文字符

(2)电话号码,选填,11位数字

(3)出生年份与日期,必填,允许输入格式包括1977-12-14,或1977年12月14日。年份最早不能早于1900年,最晚不能晚于填写当天

1.3 查看注册信息功能

  • 只有登录用户才能查看注册信息
  • 登录用户可以查看自己的注册详情和自己的补充信息
  • 查看注册信息包含所有注册的信息和注册日期信息
  • 查看注册信息页面包含退出登录链接

1.4 修改用户信息功能

  • 注册用户信息页面提供链接对自己的注册信息进行修改
  • 可以对密码和邮箱信息进行修改
  • 修改每项信息时提供单独页面
  • 修改密码时要求用户输入旧密码、新密码、新密码确认
  • 修改信息时进行信息正确性校验
  • 如果输入格式错误,修改不成功,则给出错误提示
  • 修改成功则提示修改成功信息

1.5 用户退出

  • 只有成功登录的用户才能退出
  • 退出后不能进行查看注册用户信息功能

1.6 其它功能

  • 所有页面的显著位置显示:项目-项目人-当前日期/时间

如:JSP课设-Evanpatchouli℃-2021-6-17/11:07

  • 所有功能结果页面都要具备可测试性,及结果页面需要有明确标志,表示功能成功与否。

项目流程结构及源码

1.项目文件结构

 

2.jar包

 

有小伙伴可能不知道去哪弄 jar 包,可以直接去 maven 官网,手动搜索它们并下载 jar 包。

3.数据库表结构

基本的表结构如图,各属性由实际要求所定 

                          (用户名主键的同时,将email设置为唯一索引,保证两者都不重复)

项目编写的流程(参考)

一、根据需求,建立数据库和表

使用navicat的sql可视化界面:

1.建立连接

        如下图所示,点击“连接”,创建主机名localhost,埠3306的连接(连接名不设置,默认为localhost_3306)

用户名和密码自己设置,测试连接成功即可(我的设置为root, root)

 2.建立数据库

        如下图所示,右键连接名创建数据库,设置数据库名为usermanager,字符集为UTF8(防止存入中文字符导致乱码)

                        

3.建立表

        如下图,点击“创建表”,并建立所需的字段。该系统用数据库存储用户的用户名、密码、邮箱、单位、注册时间、真名、电话和生日这8条信息,所以创建8个字段:username, userpassword, email, unit, registertime, realname, phone, birth。前四个为必填项,设为非空(not null);要求用户名和邮箱不得重复,因为设置用户名username为主键,邮箱email为唯一索引。

 

 二、编写web应用

1.确定应用流程思路

2.编写代码

StringUtil.java:字符串工具类

定义几个字符串方法,在用户操作进行校验时被调度(严谨校验的使用程度高,推荐这样在外定义一个方法以便被多次调用)。

  1. package utils;
  2. public class StringUtil {
  3. public static boolean isEmpty(String str) {
  4. if ("".equals(str) || str == null) {
  5. return true;
  6. } else {
  7. return false;
  8. }
  9. }
  10. public static boolean isNotEmpty(String str) {
  11. if (!"".equals(str) && str != null) {
  12. return true;
  13. } else {
  14. return false;
  15. }
  16. }
  17. public static String nullString(Object object){
  18. if(object==null){
  19. return "";
  20. }else {
  21. return object.toString();
  22. }
  23. }
  24. }

JdbcUtil.java:数据库工具类

包含两个方法,连接数据库和释放;数据库连接方法getConnection()内定义好数据库链接,用户名和密码以及驱动器,并反回创建好的连接;释放,释放conn, resultSetstatment.

  1. package utils;
  2. import java.sql.*;
  3. public class JdbcUtil {
  4. //(1)获取connection
  5. public static Connection getConnection() throws Exception{
  6. String url="jdbc:mysql://localhost:3306/usermanager";
  7. String name="root";
  8. String pwd="root";
  9. String driver="com.mysql.jdbc.Driver";
  10. Class.forName(driver);//连接驱动
  11. Connection conn = DriverManager.getConnection(url,name,pwd);//连接数据库
  12. return conn;
  13. }
  14. //(2)释放资源
  15. public static void release(ResultSet resultSet, Statement statement, Connection connection) {
  16. if (resultSet != null) {
  17. try {
  18. resultSet.close();
  19. } catch (SQLException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. if (statement != null) {
  24. try {
  25. statement.close();
  26. } catch (SQLException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. if (connection != null) {
  31. try {
  32. connection.close();
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. }
  38. }

User.java:用户类。用户包含总共8条数据,以此设计用户类和相对应的方法即可。

  1. package domain;
  2. import java.util.*;
  3. public class User {
  4. private String username;
  5. private String password;
  6. private String email;
  7. private String unit;
  8. private String registertime;
  9. private String realname;
  10. private String phone;
  11. private String birth;
  12. /**
  13. * @return the username
  14. */
  15. public String getUsername() {
  16. return username;
  17. }
  18. /**
  19. * @param username the username to set
  20. */
  21. public void setUsername(String username) {
  22. this.username = username;
  23. }
  24. /**
  25. * @return the password
  26. */
  27. public String getPassword() {
  28. return password;
  29. }
  30. /**
  31. * @param password the password to set
  32. */
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36. /**
  37. * @return the email
  38. */
  39. public String getEmail() {
  40. return email;
  41. }
  42. /**
  43. * @param email the email to set
  44. */
  45. public void setEmail(String email) {
  46. this.email = email;
  47. }
  48. /**
  49. * @return the unit
  50. */
  51. public String getUnit() {
  52. return unit;
  53. }
  54. /**
  55. * @param unit the unit to set
  56. */
  57. public void setUnit(String unit) {
  58. this.unit = unit;
  59. }
  60. /**
  61. * @return the registertime
  62. */
  63. public String getRegistertime() {
  64. return registertime;
  65. }
  66. /**
  67. * @param registertime the registertime to set
  68. */
  69. public void setRegistertime(String registertime) {
  70. this.registertime = registertime;
  71. }
  72. /**
  73. * @return the realname
  74. */
  75. public String getRealname() {
  76. return realname;
  77. }
  78. /**
  79. * @param realname the realname to set
  80. */
  81. public void setRealname(String realname) {
  82. this.realname = realname;
  83. }
  84. /**
  85. * @return the phone
  86. */
  87. public String getPhone() {
  88. return phone;
  89. }
  90. /**
  91. * @param phone the phone to set
  92. */
  93. public void setPhone(String phone) {
  94. this.phone = phone;
  95. }
  96. /**
  97. * @return the birth
  98. */
  99. public String getBirth() {
  100. return birth;
  101. }
  102. /**
  103. * @param birth the birth to set
  104. */
  105. public void setBirth(String birth) {
  106. this.birth = birth;
  107. }
  108. @Override
  109. public int hashCode() {
  110. return Objects.hash(birth, email, password, phone, realname, registertime, unit, username);
  111. }
  112. @Override
  113. public boolean equals(Object obj) {
  114. if (this == obj)
  115. return true;
  116. if (obj == null)
  117. return false;
  118. if (getClass() != obj.getClass())
  119. return false;
  120. User other = (User) obj;
  121. return Objects.equals(birth, other.birth) && Objects.equals(email, other.email)
  122. && Objects.equals(password, other.password) && Objects.equals(phone, other.phone)
  123. && Objects.equals(realname, other.realname) && Objects.equals(registertime, other.registertime)
  124. && Objects.equals(unit, other.unit) && Objects.equals(username, other.username);
  125. }
  126. @Override
  127. public String toString() {
  128. return "User [username=" + username + ", password=" + password + ", email=" + email + ", unit=" + unit
  129. + ", registertime=" + registertime + ", realname=" + realname + ", phone=" + phone + ", birth=" + birth
  130. + "]";
  131. }
  132. }

UserDao.java:用户Dao接口

该接口类包含了对用户最基本的方法:登录、注册、查找、改密和补充,在UserDaoImpl中实现。

  1. package dao;
  2. import domain.User;
  3. public interface UserDao {
  4. //登陆
  5. User login(String username,String password);
  6. //注册
  7. User register(User user);
  8. //查找
  9. boolean select(String username, String email);
  10. //修改信息(密码)
  11. void updateUser(User user);
  12. //补充信息
  13. void addxinxi(User user);
  14. //
  15. }

UserDaoImpl.javaUserDao的具体实现类

UserDaoImpl中建立数据库连接,对用户信息进行增删改查,并将操作结果记录到字符串message中,由back()函数接收,以便后续测试时使用。

  1. package dao.impl;
  2. import dao.UserDao;
  3. import domain.User;
  4. import utils.JdbcUtil;
  5. import java.sql.*;
  6. /*
  7. * 用户Dao实现类
  8. */
  9. public class UserDaoImpl implements UserDao {
  10. String message;
  11. public String Back() {
  12. return message;
  13. }
  14. public User login(String username,String password) {
  15. User user=null;
  16. Connection conn=null;
  17. Statement stmt = null;
  18. ResultSet rs = null;
  19. try {
  20. conn = JdbcUtil.getConnection();
  21. String sql = "select * from user where username = ? and userpassword= ?";
  22. PreparedStatement prpstmt = null;
  23. prpstmt = conn.prepareStatement(sql);
  24. prpstmt.setString(1, username);
  25. prpstmt.setString(2, password);
  26. rs = prpstmt.executeQuery();
  27. if(rs.next()){
  28. user = new User();
  29. user.setUsername(rs.getString("username"));
  30. user.setPassword(rs.getString("userpassword"));
  31. user.setEmail(rs.getString("email"));
  32. user.setUnit(rs.getString("unit"));
  33. user.setRegistertime(rs.getString("registertime"));
  34. user.setRealname(rs.getString("realname"));
  35. user.setPhone(rs.getString("phone"));
  36. user.setBirth(rs.getString("birth"));
  37. message="登录成功";
  38. System.out.println(message + user.toString());
  39. }else {
  40. message="用户名或者密码错误";
  41. System.out.println(message);
  42. }
  43. }catch(Exception e) {
  44. e.printStackTrace();
  45. }finally {
  46. JdbcUtil.release(rs, stmt, conn);
  47. }
  48. return user;
  49. }
  50. public User register(User user){
  51. Connection conn = null;
  52. PreparedStatement prpstmt = null;
  53. ResultSet rs = null;
  54. @SuppressWarnings("unused")
  55. int result = 0;
  56. try {
  57. conn = JdbcUtil.getConnection();
  58. String sql = "insert into user(username, userpassword, email, unit, registertime) values (?, ?, ?, ?, ?);";
  59. prpstmt = conn.prepareStatement(sql);
  60. prpstmt.setString(1, user.getUsername());
  61. prpstmt.setString(2, user.getPassword());
  62. prpstmt.setString(3, user.getEmail());
  63. prpstmt.setString(4, user.getUnit());
  64. prpstmt.setString(5, user.getRegistertime());
  65. result = prpstmt.executeUpdate();
  66. } catch (Exception e) {
  67. e.printStackTrace();
  68. } finally {
  69. JdbcUtil.release(rs, prpstmt, conn);
  70. }
  71. System.out.println(result);
  72. if(result!=0) {
  73. message="注册成功";
  74. }else {
  75. message="注册失败";
  76. }
  77. return user;
  78. }
  79. public boolean select(String username, String email) {
  80. Connection conn = null;
  81. PreparedStatement ps = null;
  82. ResultSet rs = null;
  83. String sql_1 = "select count(*) from user where username = ?";
  84. String sql_2 = "select count(*) from user where email = ?";
  85. int count = 0;
  86. try {
  87. conn = JdbcUtil.getConnection();
  88. ps = conn.prepareStatement(sql_1);
  89. ps.setString(1, username);
  90. rs = ps.executeQuery();
  91. rs.next();
  92. count = rs.getInt(1);
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. }finally {
  96. JdbcUtil.release(rs, ps, conn);
  97. }
  98. try {
  99. conn = JdbcUtil.getConnection();
  100. ps = conn.prepareStatement(sql_2);
  101. ps.setString(1, email);
  102. rs = ps.executeQuery();
  103. rs.next();
  104. count += rs.getInt(1);
  105. if(count > 0){
  106. return true;
  107. }
  108. } catch (Exception e) {
  109. e.printStackTrace();
  110. }finally {
  111. JdbcUtil.release(rs, ps, conn);
  112. }
  113. return false;
  114. }
  115. public void updateUser(User user) {
  116. Connection conn = null;
  117. PreparedStatement ps = null;
  118. String sql = "update user set userpassword=? where username=?";
  119. int rs = 0;
  120. try {
  121. conn = JdbcUtil.getConnection();
  122. ps = conn.prepareStatement(sql);
  123. ps.setString(1, user.getPassword());
  124. ps.setString(2, user.getUsername());
  125. rs=ps.executeUpdate();
  126. } catch (Exception e) {
  127. e.printStackTrace();
  128. } finally {
  129. JdbcUtil.release(null, ps, conn);
  130. }
  131. if(rs!=0) {
  132. message=user.getPassword();
  133. }
  134. System.out.println(rs);
  135. }
  136. @Override
  137. public void addxinxi(User user) {
  138. Connection conn = null;
  139. PreparedStatement ps = null;
  140. String sql = "update user set realname=?, phone=?, birth=? where username=?";
  141. @SuppressWarnings("unused")
  142. int rs = 0;
  143. try {
  144. conn = JdbcUtil.getConnection();
  145. ps = conn.prepareStatement(sql);
  146. ps.setString(1, user.getRealname());
  147. ps.setString(2, user.getPhone());
  148. ps.setString(3, user.getBirth());
  149. ps.setString(4, user.getUsername());
  150. rs=ps.executeUpdate();
  151. } catch (Exception e) {
  152. e.printStackTrace();
  153. } finally {
  154. JdbcUtil.release(null, ps, conn);
  155. }
  156. }
  157. }

UserService.java:用户服务接口,由UserServiceImpl实现

(UserService->UserServiceImpl->UserDao->UserDaoImpl,直接放进UserDao也可以)

  1. package service;
  2. import domain.User;
  3. public interface UserService {
  4. // 新增用户时查重
  5. boolean checkUsername(String username, String email);
  6. // 修改用户信息
  7. void saveUser(User user);
  8. //补充用户信息
  9. void addInfo(User user);
  10. }

UserServiceImpl:(UserService并入UserDao,则UserServiceImpl并入UseerDaoImpl)

  1. package service.impl;
  2. import java.sql.*;
  3. import java.util.List;
  4. import dao.UserDao;
  5. import dao.impl.UserDaoImpl;
  6. import domain.User;
  7. import service.UserService;
  8. import utils.JdbcUtil;
  9. /**
  10. * UserService用户服务实现类
  11. */
  12. @SuppressWarnings("unused")
  13. public class UserServiceImpl implements UserService{
  14. private UserDao userDao = new UserDaoImpl();
  15. public boolean checkUsername(String username, String email) {
  16. return userDao.select(username, email);
  17. }
  18. @Override
  19. public void saveUser(User user) {
  20. userDao.updateUser(user);
  21. }
  22. @Override
  23. public void addInfo(User user) {
  24. userDao.addxinxi(user);
  25. }
  26. }

系统要求每个页面都实时显示信息和时间,因此准备一个time.jsp,其余jsp可视页面均采用include指令标<%@ include file="time.jsp" %>)将time.jsp嵌入到自身页面中。

time.jsp:创建一个div,设置其iddatetime,在script标记中,定义showtime()函数在该div元素中动态地显示时间信息,并调用自定义check()函数给单位数加上"0";setInterval(showtime(), 1000)设置显示时间函数每秒运行(刷新实时时间)。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.time.LocalTime" %> <!-- jsp指令标记 -->
  4. <%@ page import="java.time.LocalDate" %> <!-- jsp指令标记 -->
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Show time</title>
  10. </head>
  11. <script>
  12. function showtime(){
  13. nowtime=new Date();
  14. y=nowtime.getFullYear();
  15. mo=nowtime.getMonth()+1;
  16. d=nowtime.getDate();
  17. h=nowtime.getHours();
  18. mi=nowtime.getMinutes();
  19. s=nowtime.getSeconds();
  20. mo=checkTime(mo);
  21. d=checkTime(d);
  22. mi=checkTime(mi);
  23. s=checkTime(s);
  24. document.getElementById("datetime").innerText="JSP课设-Evanpatchouli℃-"+y+"-"+mo+"-"+d+"/"+h+":"+mi+":"+s;
  25. }
  26. setInterval("showtime()", 1000);
  27. function checkTime(i) {
  28. if (i<10){
  29. i="0" + i;
  30. }
  31. return i;
  32. }
  33. </script>
  34. <body >
  35. <div id="datetime" style="font-size:24px;font-weight:bold;text-align:center; padding-left: 90px;" ></div>
  36. </body>
  37. </html>

各个页面都需要进行登录检测,以防未登录,框架如下:不同页面为迎合自己的功能会有略改。

  1. <%
  2. Object obj = session.getAttribute("user");
  3. User user = (User)obj;
  4. if(null==obj) {
  5. %>
  6. 您尚未登陆,请登录!
  7. <a href="login.jsp" name="login">去登录</a>
  8. <a href="register.jsp" name="register">跳转注册</a>
  9. <%
  10. } else {
  11. %>
  12. <!-- 该页内容 -->
  13. <%}%>

register.jsp:用户注册页,用form表单+servlet提交注册信息。表单action请求RegisterServlet,表单含用户名、密码、邮箱、单位,提供重置(reset)和注册(submit)按钮,具体格式见下。由于对各个注册信息有长度限制,有三种方法:1.设置好input标记的minlengthmaxlength属性;2.在script中定义一个函数,注册框的onclick属性设置成"return check()",在点击注册时被调度,读取输入框并检查内容的合法性;3.提交给servlet后,在servlet中检验并返回结果。对于长度这样简单的限制采取第1种方法极为方便,而大小写等复杂的格式校验则需要采用后2种方法。

前2种属于前端校验,第3种属于后端校验,前两者用户体验感更好。项目需求中要求信息违法转到失败页面并显示,原则上第3种最符合要求。

第1种:                                                                第2种:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="time.jsp" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>用户注册</title>
  9. </head>
  10. <body style="text-align:left;">
  11. <script type="text/javascript">
  12. function check(){
  13. var flag = 0;//flag为0代表密码没有问题
  14. var Uname=document.getElementById('uname').value;//首先通过文本框的id获取它的值然后进行判断
  15. if(Uname.length<6){//如果输入信息有误,弹出提示框
  16. alert("用户名最短长度为6");
  17. flag = 1;
  18. }
  19. var Upwd=document.getElementById('upwd').value;
  20. var regLower = /^.*[a-z]{1,}.*$/;//包含小写字母
  21. var regUpper = /^.*[A-Z]{1,}.*$/;//包含大写字母
  22. var regSpecial = /^.*[^a-zA-Z0-9]{1,}.*$/;//包含特殊字符
  23. var regNum = /^.*[0-9]{1,}.*$/;//包含数字
  24. //如果密码纯数字、纯小写字母、纯大写字母、纯特殊字符,禁止注册
  25. if(!regLower.test(Upwd) || !regUpper.test(Upwd) || !regSpecial.test(Upwd) || !regNum.test(Upwd)){
  26. alert("密码必须至少有1个数字、1个大写字母、1个小写字母和其它字符共同组成!");
  27. flag = 1;
  28. }
  29. if(flag==0)
  30. return true;
  31. else
  32. return false;
  33. }
  34. </script>
  35. <form action="RegisterServlet" method="post">
  36. <table align="center">
  37. <div style="text-align:center;">
  38. <h2>用户注册</h2>
  39. </div>
  40. <tr>
  41. <td>用&nbsp;&nbsp;户&nbsp;&nbsp;名:</td>
  42. <%--<td><input name="username" type="text" size="21" minlength="6" maxlength="9" placeholder="用户名长度6-9位"></td>--%>
  43. <td><input id="uname" name="username" type="text" size="21" maxlength="9" placeholder="用户名长度6-9位"></td>
  44. </tr>
  45. <tr>
  46. <td align="justify">密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
  47. <td><input id="upwd" name="password" type="password" size="21" minlength="7" maxlength="11" placeholder="密码长度7-11位"></td>
  48. </tr>
  49. <tr>
  50. <td align="justify">确认密码:</td>
  51. <td><input name="ckpassword" type="password" size="21" minlength="7" maxlength="11" placeholder="密码长度7-11位"></td>
  52. </tr>
  53. <tr>
  54. <td align="justify">E&nbsp;&nbsp;-&nbsp;&nbsp;mail:</td>
  55. <td><input name="email" type="text" size="21" maxlength="21"></td>
  56. </tr>
  57. <tr>
  58. <td align="justify">单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位:</td>
  59. <td><input name="unit" type="text" size="21" maxlength="50" placeholder="填写单位名称"></td>
  60. </tr>
  61. </table>
  62. <table align="center" cellspacing="12">
  63. <tr>
  64. <td align="justify"><input type="submit" name="submit" value="注册" onclick="return check();"></td>
  65. <td align="justify"><input type="reset" name="reset" value="重置"></td>
  66. </tr>
  67. </table>
  68. </form>
  69. <div align="center">
  70. <a href="login.jsp" name="login">跳转登录</a>
  71. </div>
  72. </body>
  73. </html>

RegisterServlet.java:接受register.jsp提交的表单的注册信息,生成注册时间,同时对其他的不合法行为进行检测,如查重、查空等,检验过程中调用了StringUtil中对字符串的方法(不必要)和UserService中的checkUsername()进行查重等操作。

检验合法后,创建一个User对象和UserDao对象,注册User,将用户信息存入数据库内(UserDao实现类中实现)。然后在session中创建一个关键字"usernamePrepared",将注册好的用户名赋给它,用于后续登录时预置用户名,以增强用户体验(不必要),然后跳转到注册成功的页面;如果不合法,在request中创建一个关键字"message",存入错误信息,并跳转到注册失败的页面。

  1. package servlet;
  2. import dao.UserDao;
  3. import dao.impl.UserDaoImpl;
  4. import domain.User;
  5. import service.UserService;
  6. import service.impl.UserServiceImpl;
  7. import utils.StringUtil;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import javax.servlet.http.HttpSession;
  14. import java.io.IOException;
  15. import java.text.SimpleDateFormat;
  16. import java.util.Date;
  17. /**
  18. * RegisterServlet实现类
  19. */
  20. @WebServlet("/RegisterServlet")
  21. public class RegisterServlet extends HttpServlet {
  22. private static final long serialVersionUID = 1L;
  23. private UserService userService = new UserServiceImpl();
  24. /**
  25. * @see HttpServlet#HttpServlet()
  26. */
  27. public RegisterServlet() {
  28. super();
  29. }
  30. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  31. doPut(request, response);
  32. }
  33. protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  34. HttpSession session = request.getSession();
  35. request.setCharacterEncoding("UTF-8");
  36. response.setContentType("text/html;charset=UTF-8");
  37. Date date = new Date();
  38. SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
  39. String rs = "";
  40. String username = request.getParameter("username");
  41. String password = request.getParameter("password");
  42. String ckpassword = request.getParameter("ckpassword");
  43. String email = request.getParameter("email");
  44. String unit = request.getParameter("unit");
  45. String registertime=formatter.format(date);
  46. System.out.println(registertime);
  47. if(StringUtil.isEmpty(username)||StringUtil.isEmpty(password)||StringUtil.isEmpty(ckpassword)||StringUtil.isEmpty(email)||StringUtil.isEmpty(unit)) {
  48. rs = "注册信息填写不完整!";
  49. }
  50. // 两次输入密码是否一致
  51. if (!password.equals(ckpassword)) {
  52. rs = "两次密码输入不一致!";
  53. }
  54. boolean IsUserExist = userService.checkUsername(username,email);
  55. if(IsUserExist==true) {
  56. rs = "账号已存在!";
  57. }
  58. if(StringUtil.isEmpty(rs)) {
  59. User user = new User();
  60. user.setUsername(username);
  61. user.setPassword(password);
  62. user.setEmail(email);
  63. user.setUnit(unit);
  64. user.setRegistertime(registertime);
  65. System.out.println(user.getRegistertime());
  66. UserDao userDao = new UserDaoImpl();
  67. userDao.register(user);
  68. System.out.println("注册成功");
  69. session.setAttribute("usernamePrepared", username);
  70. request.getRequestDispatcher("register_success.jsp").forward(request,response);
  71. }else {
  72. System.out.println("注册失败"+rs);
  73. request.setAttribute("message", "注册失败!"+rs);
  74. request.getRequestDispatcher("/register_fail.jsp").forward(request,response);
  75. }
  76. }
  77. }

 register_success.jsp:注册成功页面

显示注册成功信息;包含2个链接,分别跳转到登录页和注册页。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="time.jsp" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>注册成功</title>
  9. </head>
  10. <body style="text-align:center;">
  11. <h1>注册成功!
  12. <br>
  13. <a href="login.jsp" name="login">跳转登录</a>
  14. <a href="register.jsp" name="register">继续注册</a>
  15. </h1>
  16. </body>
  17. </html>

register_fail.jsp:注册失败页

显示注册失败字样,从RegisterServlet接收并显示失败原因;内含1个链接跳转到注册页。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="time.jsp" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>注册失败</title>
  9. </head>
  10. <body style="text-align:center;">
  11. <h2>注册失败!</h2>
  12. <font color="red" face="bold" size=5>
  13. <%
  14. if(request.getAttribute("message")!= null){
  15. out.print(request.getAttribute("message"));
  16. }
  17. %>
  18. </font>
  19. <br>
  20. <h2><a href="register.jsp" name="register">重新注册</a></h2>
  21. </body>
  22. </html>

Login.jsp:用户登录页

定义Uname(uP, uL)函数作为用户名预置,其值为刚注册的用户名或者刚退出登录的用户名。表单内username文本框,默认值即为Uname()的返回值。

(在撰写文档的时候发现一个小BUG,点清空,预置的用户名不消失,一种解决方法是Uname函数中加上一个条件判断:是否点击过清空)

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="time.jsp" %>
  4. <%@ page import="domain.User" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>用户登陆</title>
  10. </head>
  11. <body style="text-align:center;">
  12. <%!
  13. public String Uname(String uP,String uL){
  14. if(uL!=null){
  15. return uL;
  16. }else{
  17. return uP;
  18. }
  19. }
  20. %>
  21. <%
  22. Object obj = session.getAttribute("user");
  23. String unameP = (String)session.getAttribute("usernamePrepared");
  24. String unameL = (String)request.getParameter("usernameLogined");
  25. String UName = Uname(unameP,unameL);
  26. System.out.println("unameL:"+unameL);
  27. if(null==obj) {
  28. %>
  29. <h2>登录页面</h2>
  30. <form action="LoginServlet" method="post">
  31. <table align="center">
  32. <tr>
  33. <td>
  34. 用户名:</td>
  35. <td style="text-align:center"><input type="text" size="21" name="username" value="<%=UName%>"/></td>
  36. </tr>
  37. <tr>
  38. <td>
  39. &nbsp;&nbsp;&nbsp;&nbsp;码:</td>
  40. <td><input type="password" size="21" name="password"/></td>
  41. </tr>
  42. </table>
  43. <table align="center" cellspacing="5">
  44. <tr>
  45. <td><input type="submit" name="submit" value="登录"/></td>
  46. <td><input type="reset" name="reset" value="清空"/></td>
  47. </tr>
  48. </table>
  49. </form>
  50. <a href="register.jsp" name="register">跳转注册</a>
  51. <%
  52. } else {
  53. %>
  54. <%
  55. User u = (User)obj;
  56. %>
  57. 用户:<%=u.getUsername() %><br/>您已经登录,无需再登录
  58. <br/><a href="exit.jsp" name="exit">退出登录</a>
  59. <br/><a href="login_success.jsp" name="success">返回</a>
  60. <%}%>
  61. </body>
  62. </html>

LoginServlet.java

获取登录页提交的信息,查库,登录成功则在session中创建user关键字保存user对象,用以作登录检测;如果登录失败,将错误信息存入request关键字message中,传递给登录失败页。

  1. package servlet;
  2. import dao.UserDao;
  3. import dao.impl.UserDaoImpl;
  4. import domain.User;
  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. import javax.servlet.http.HttpSession;
  11. import java.io.IOException;
  12. /**
  13. * LoginServlet实现类
  14. */
  15. @WebServlet("/LoginServlet")
  16. public class LoginServlet extends HttpServlet {
  17. private static final long serialVersionUID = 1L;
  18. public LoginServlet() {
  19. super();
  20. }
  21. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  22. doPost(request, response);
  23. }
  24. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  25. HttpSession session = request.getSession();
  26. request.setCharacterEncoding("UTF-8");
  27. response.setContentType("text/html;charset=UTF-8");
  28. // 获取前端页面传过来的值
  29. String username = request.getParameter("username");
  30. String password = request.getParameter("password");
  31. // 执行查询数据库逻辑
  32. UserDao userDao = new UserDaoImpl();
  33. User user = userDao.login(username, password);
  34. // 如果根据用户名和密码能查得到值
  35. if (user!= null) {
  36. session.setAttribute("user", user); //登录成功
  37. request.getRequestDispatcher("/login_success.jsp").forward(request,response);
  38. } else { // 用户名或者密码错误执行以下代码
  39. request.setAttribute("message", "用户名或者密码错误");
  40. request.getRequestDispatcher("/defeat.jsp").forward(request,response);
  41. }
  42. }
  43. }

login_success.jsp:登录成功页(内含链接:显示信息、信息补充和退出登录)

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="domain.User" %>
  4. <%@ include file="time.jsp" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>登陆成功</title>
  10. </head>
  11. <body style="text-align:center;">
  12. <%
  13. Object obj = session.getAttribute("user");
  14. User user = (User)obj;
  15. if(null==obj) {
  16. %>
  17. 您尚未登陆,请登录!
  18. <a href="login.jsp" name="login">去登录</a>
  19. <a href="register.jsp" name="register">跳转注册</a>
  20. <%
  21. } else {
  22. %>
  23. <%--<h2>登录成功!</h2>--%>
  24. <font color="blue" size="5" family="Microsoft JhengHei">
  25. 登录成功!<br/>
  26. <%
  27. String username = user.getUsername();
  28. session.setAttribute("user", user);
  29. %>
  30. 欢迎您:<%=username %><br/>
  31. <a href="showUserRegisterInfo.jsp" name="show">显示信息</a><br>
  32. <a href="AddInfo.jsp" name="add">信息补充</a><br>
  33. <a href="exit.jsp" name="exit">退出登录</a>
  34. </font><br>
  35. <%}%>
  36. </body>
  37. </html>

defeat.jsp:登录失败页

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="time.jsp" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>登录失败</title>
  9. </head>
  10. <body style="text-align:center;">
  11. <h2>登录失败!</h2>
  12. <font color="red" face="bold" size=5>
  13. <%
  14. if(request.getAttribute("message")!= null){
  15. out.print(request.getAttribute("message"));
  16. }
  17. %>
  18. </font>
  19. <br>
  20. <h2><a href="login.jsp" name="login">重新登录</a></h2>
  21. </body>
  22. </html>

exit.jsp:退出登录

先获取当前登录的用户名,存到预置用户名内,然后销毁session

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="domain.User" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>退出登录</title>
  9. </head>
  10. <body>
  11. <%
  12. Object obj = session.getAttribute("user");
  13. User u = (User)obj;
  14. String unameLogined = (String)u.getUsername();
  15. System.out.println(unameLogined);
  16. session.invalidate();
  17. %>
  18. <jsp:forward page="login.jsp">
  19. <jsp:param value="<%=unameLogined%>" name="usernameLogined" />
  20. </jsp:forward>
  21. </body>
  22. </html>

showUserRegisterInfo.jsp:显示用户信息页(内含修改密码链接)

session中获取登录的user对象,并读取各用户信息即可,不用额外的连接数据库。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@page import="java.util.List"%>
  4. <%@page import="java.util.Iterator"%>
  5. <%@page import="domain.User" %>
  6. <%@ include file="time.jsp" %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <meta charset="UTF-8">
  11. <title>显示用户信息</title>
  12. </head>
  13. <body style="text-align:center;">
  14. <%
  15. Object obj = session.getAttribute("user");
  16. User user = (User)obj;
  17. if(null==obj) {
  18. %>
  19. 您尚未登陆,请登录!
  20. <a href="login.jsp" name="login">去登录</a>
  21. <a href="register.jsp" name="register">跳转注册</a>
  22. <%
  23. } else {
  24. %>
  25. <div style="text-align:center;">
  26. 当前用户:<%=user.getUsername() %>
  27. <a href="exit.jsp" name="exit">退出登录</a>
  28. <a href="login_success.jsp" name="success">返回</a>
  29. </div>
  30. <h1>用户注册信息表</h1>
  31. <table border="1px" align="center">
  32. <tr>
  33. <th>用户名</th>
  34. <th>密码</th>
  35. <th>邮箱</th>
  36. <th>单位</th>
  37. <th>注册时间</th>
  38. </tr>
  39. <tr>
  40. <td><%=user.getUsername()%></td>
  41. <td><%=user.getPassword()%></td>
  42. <td><%=user.getEmail()%></td>
  43. <td><%=user.getUnit()%></td>
  44. <td><%=user.getRegistertime()%></td>
  45. </tr>
  46. </table>
  47. <h1>用户补充信息表</h1>
  48. <table border="1px" align="center">
  49. <tr>
  50. <th>真名</th>
  51. <th>电话</th>
  52. <th>生日</th>
  53. </tr>
  54. <tr>
  55. <td><%=user.getRealname()%></td>
  56. <td><%=user.getPhone()%></td>
  57. <td><%=user.getBirth()%></td>
  58. </tr>
  59. </table>
  60. <br>
  61. <h1><a href="updateInfo.jsp" name="changepwd">修改密码</a></h1>
  62. <%}%>
  63. </body>
  64. </html>

AddInfoServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;
  9. import dao.UserDao;
  10. import dao.impl.UserDaoImpl;
  11. import domain.User;
  12. import service.UserService;
  13. import service.impl.UserServiceImpl;
  14. import utils.StringUtil;
  15. /**
  16. * AddInfo实现类
  17. */
  18. @WebServlet("/AddInfoServlet")
  19. public class AddInfoServlet extends HttpServlet {
  20. private static final long serialVersionUID = 1L;
  21. private UserDao userDao = new UserDaoImpl();
  22. private UserService userService = new UserServiceImpl();
  23. public AddInfoServlet() {
  24. super();
  25. // TODO Auto-generated constructor stub
  26. }
  27. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  28. doPost(request, response);
  29. }
  30. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  31. //request.setCharacterEncoding("utf-8");
  32. HttpSession session = request.getSession();
  33. User user = ((User) session.getAttribute("user"));
  34. String realname = request.getParameter("realname");
  35. String phone = request.getParameter("phone");
  36. String birth = request.getParameter("birth");
  37. user.setRealname(realname);
  38. user.setPhone(phone);
  39. user.setBirth(birth);
  40. //request.getAttribute("user");
  41. userService.addInfo(user);
  42. request.setAttribute("AddInfoResult", "补充信息成功!");
  43. request.getRequestDispatcher("/AddInfo.jsp").forward(request, response);
  44. return;
  45. }
  46. }

UpdateInfoServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import dao.UserDao;
  9. import dao.impl.UserDaoImpl;
  10. import domain.User;
  11. import service.UserService;
  12. import service.impl.UserServiceImpl;
  13. import utils.StringUtil;
  14. /**
  15. * UpdateInfoServlet实现类
  16. */
  17. @WebServlet("/UpdateInfoServlet")
  18. public class UpdateInfoServlet extends HttpServlet {
  19. private static final long serialVersionUID = 1L;
  20. private UserDao userDao = new UserDaoImpl();
  21. private UserService userService = new UserServiceImpl();
  22. public UpdateInfoServlet() {
  23. super();
  24. // TODO Auto-generated constructor stub
  25. }
  26. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  27. doPost(request, response);
  28. }
  29. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  30. //修改密码
  31. String username = request.getParameter("username");
  32. String oldPassword = request.getParameter("oldPassword");
  33. String newPassword = request.getParameter("newPassword");
  34. User user = userDao.login(username, oldPassword);
  35. String changePWDResult="";
  36. if(user==null) {
  37. changePWDResult="旧密码错误!";
  38. }
  39. if(StringUtil.isEmpty(oldPassword)||StringUtil.isEmpty(newPassword)) {
  40. changePWDResult="旧密码和新密码不能为空!";
  41. }
  42. if(StringUtil.isEmpty(changePWDResult)) {
  43. user.setPassword(newPassword);
  44. userService.saveUser(user);
  45. changePWDResult="密码修改成功!";
  46. }
  47. request.setAttribute("changePasswordResult", changePWDResult);
  48. request.getRequestDispatcher("/updateInfo.jsp").forward(request, response);
  49. return;
  50. }
  51. }

AddInfo.jsp:信息补充页

同样是form+servlet的方式;script内有一个显示补充结果的函数;补充信息的格式校验我没有做,方法可参考注册时讲到的3种校验,需要用到正则表达式。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <%@ page import="domain.User" %>
  5. <%@ include file="time.jsp" %>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>补充信息</title>
  10. <script type="text/javascript">
  11. $(function() {
  12. if ($("#AddInfoResult").length > 0) {
  13. alert($("#AddInfoResult").text());
  14. }
  15. });
  16. </script>
  17. </head>
  18. <body style="text-align:center;">
  19. <%
  20. Object obj = session.getAttribute("user");
  21. User user = (User)obj;
  22. if(null==obj) {
  23. %>
  24. 您尚未登陆,请登录!
  25. <a href="login.jsp" name="login">去登录</a>
  26. <a href="register.jsp" name="register">跳转注册</a>
  27. <%
  28. } else {
  29. %>
  30. <form action="AddInfoServlet" method="post">
  31. <input type="hidden" name="username" value=<%=user.getUsername() %>>
  32. <div style="text-align:center; padding-right: 10px;">
  33. 当前用户:<%=user.getUsername() %>
  34. <a href="exit.jsp" name="exit">退出登录</a>
  35. <a href="login_success.jsp" name="success">返回</a>
  36. </div>
  37. <table border="1px" align="center">
  38. <div align="center">
  39. <h2>补充信息</h2></div>
  40. <tr align="center">
  41. <td align="justify">
  42. 真名:&nbsp;<input type="text" name="realname" size=10 maxlength=20/><br/></td>
  43. <td align="justify">
  44. 电话:&nbsp;<input type="text" name="phone" size=12 maxlength=16/>(11位手机号)<br/></td><!-- 限长16允许带+ -->
  45. <td align="justify">
  46. 生日:&nbsp;<input type="text" name="birth" size=11 maxlength=11/>(格式:1977-12-14或者1977年12月14日)<br/></td>
  47. <td align="justify">
  48. <input type="submit" value="提交" name= "submit">
  49. &nbsp;&nbsp;<input type="reset" value="重置" name="reset"></td>
  50. </tr>
  51. </table>
  52. </form>
  53. <%
  54. Object result = request.getAttribute("AddInfoResult");
  55. if (result != null) {
  56. %>
  57. <br>
  58. <h2><%=(String)result%></h2>
  59. <%
  60. }
  61. %>
  62. <%}%>
  63. </body>
  64. </html>

updateInfo.jsp:修改密码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <%@ page import="domain.User" %>
  5. <%@ include file="time.jsp" %>
  6. <%@ page import="java.util.*" %>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11. <script type="text/javascript" src="js/jquery.js"></script>
  12. <title>修改密码</title>
  13. <script type="text/javascript">
  14. $(function() {
  15. if ($("#changePasswordResult").length > 0) {
  16. alert($("#changePasswordResult").text());
  17. }
  18. });
  19. </script>
  20. </head>
  21. <body style="text-align:center;">
  22. <%
  23. Object obj = session.getAttribute("user");
  24. User user = (User)obj;
  25. if(null==obj) {
  26. %>
  27. 您尚未登陆,请登录!
  28. <a href="login.jsp" name="login">去登录</a>
  29. <a href="register.jsp" name="register">跳转注册</a>
  30. <%
  31. } else {
  32. %>
  33. <div style="text-align:center">
  34. 当前用户:<%=user.getUsername() %>
  35. <a href="exit.jsp" name="exit">退出登录</a>
  36. <a href="login_success.jsp" name="success">返回</a><br>
  37. <h1>修改密码</h1>
  38. </div>
  39. <form action="UpdateInfoServlet" method="post">
  40. <input type="hidden" name="username" value=<%=user.getUsername() %>>
  41. <table align="center">
  42. <tr>
  43. <td>旧密码:</td>
  44. <td><input type="password" id="oldPassword" name="oldPassword"></td>
  45. </tr>
  46. <tr>
  47. <td>新密码:</td>
  48. <td><input type="password" id="newPassword" name="newPassword"></td>
  49. </tr>
  50. </table>
  51. <table align="center" cellspacing="12">
  52. <tr>
  53. <td align="left"><input type="submit" value="提交"></td>
  54. <td align="left"><a href="exit.jsp" name="exit2">退出登陆</a></td>
  55. </tr> </table>
  56. </form>
  57. <%
  58. Object result = request.getAttribute("changePasswordResult");
  59. if (result != null) {
  60. %>
  61. <div style="text-align:center">
  62. <br/>
  63. <h2><%=(String)result%></h2>
  64. </div>
  65. <%
  66. }
  67. %>
  68. <%}%>
  69. </body>
  70. </html>

web.xml:欢迎页和servlet配置映射

将欢迎页设置为登录页;

Servlet 3.0 版本以上,在servlet文件中以@WebServlet("/LoginServlet")的形式即可完成配置;在低版本的Servlet中,需要按如下格式配置web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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_4_0.xsd" id="WebApp_ID" version="4.0">
  3. <display-name>UserManager</display-name>
  4. <welcome-file-list>
  5. <welcome-file>login.jsp</welcome-file>
  6. </welcome-file-list>
  7. <servlet>
  8. <servlet-name>LoginServlet</servlet-name>
  9. <servlet-class>servlet.LoginServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>LoginServlet</servlet-name>
  13. <url-pattern>/LoginServlet</url-pattern>
  14. </servlet-mapping>
  15. <servlet>
  16. <servlet-name>RegisterServlet</servlet-name>
  17. <servlet-class>servlet.RegisterServlet</servlet-class>
  18. </servlet>
  19. <servlet-mapping>
  20. <servlet-name>RegisterServlet</servlet-name>
  21. <url-pattern>/RegisterServlet</url-pattern>
  22. </servlet-mapping>
  23. <servlet>
  24. <servlet-name>UpdateInfoServlet</servlet-name>
  25. <servlet-class>servlet.UpdateInfoServlet</servlet-class>
  26. </servlet>
  27. <servlet-mapping>
  28. <servlet-name>UpdateInfoServlet</servlet-name>
  29. <url-pattern>/UpdateInfoServlet</url-pattern>
  30. </servlet-mapping>
  31. <servlet>
  32. <servlet-name>AddInfoServlet</servlet-name>
  33. <servlet-class>servlet.AddInfoServlet</servlet-class>
  34. </servlet>
  35. <servlet-mapping>
  36. <servlet-name>AddInfoServlet</servlet-name>
  37. <url-pattern>/AddInfoServlet</url-pattern>
  38. </servlet-mapping>
  39. </web-app>

系统功能展示

Demo Vedio of UM System

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/185284
推荐阅读
相关标签
  

闽ICP备14008679号