新闻详情

新闻详情

首页 / 资讯中心 / 详情

IDEA按照JSP Model2思想实现用户注册功能

发布时间:2026/9/27 9:31:02来源:尧图网络
IDEA按照JSP Model2思想实现用户注册功能
【任务目标】按照JSP Model2思想编写一个用户注册程序。组件关系图如下1UserBean: 封装用户信息的JavaBean。2RegisterFormBean是封装注册表单信息的JavaBeanl用于校验从ControllerServlet中获取到的注册表单信息中的各个属性3DBUtil是用于访问数据库的辅助类4ControllerServlet是控制器它负责处理用户注册的请求如果注册成功就会跳转到loginSuccess.jsp页面如果注册失败则重新跳转回到register.jsp5register.jsp是用户注册表单页面交给ControllerServlet处理6loginSuccess.jsp是用户登录成功后进入的页面代码下载地址1百度网盘通过网盘分享的文件jspModel2(用户注册模型).zip链接: https://pan.baidu.com/s/1EIOGaJuF6ihVPyGCQGg4FA?pwdsspx 提取码: sspx2夸克网盘我用夸克网盘给你分享了「jspModel2(用户注册模型).zip」点击链接或复制整段内容打开「夸克APP」即可获取。/0dd33b6hpK链接https://pan.quark.cn/s/dd3c7dd8993e?pwdATvk提取码ATvk1、创建项目参考这篇文章IDEA(2020版)实现Servlet程序创建一个Servlet空白模板项目名称为jspModel2创建完项目后右击src文件夹选择New—Package包名假定为com.demo08在demo08文件夹底下再创建两个文件夹一个叫domain、一个叫util生成后项目结构如下2、编写JavaBean右击domain文件夹选择New—Java Class名字为UserBeanUserBean的参考代码如下public class UserBean{private String name;//定义用户名 private String password;//定义密码 private String email;//定义邮箱 public StringgetName(){returnname;}public void setName(String name){this.namename;}public StringgetPassword(){returnpassword;}public void setPassword(String password){this.passwordpassword;}public StringgetEmail(){returnemail;}public void setEmail(String email){this.emailemail;}}3、编写RegisterFormBean类右击domain文件夹选择New—Java Class名字为RegisterFormBean代码参考如下package com.demo08.domain;importjava.util.HashMap;importjava.util.Map;public class RegisterFormBean{private String name;//定义用户名 private String password;//定义密码 private String password2;//定义确认密码 private String email;//定义邮箱 // 定义成员变量errors,用于封装表单验证时的错误信息 private MapString, Stringerrorsnew HashMapString, String();public StringgetName(){returnname;}public void setName(String name){this.namename;}public StringgetPassword(){returnpassword;}public void setPassword(String password){this.passwordpassword;}public StringgetPassword2(){returnpassword2;}public void setPassword2(String password2){this.password2password2;}public StringgetEmail(){returnemail;}public void setEmail(String email){this.emailemail;}public booleanvalidate(){boolean flagtrue;if(namenull||name.trim().equals()){errors.put(name,请输入姓名.);flagfalse;}if(passwordnull||password.trim().equals()){errors.put(password,请输入密码.);flagfalse;}elseif(password.length()12||password.length()6){errors.put(password,请输入6-12个字符.);flagfalse;}if(password!null!password.equals(password2)){errors.put(password2,两次输入的密码不匹配.);flagfalse;}// 对email格式的校验采用了正则表达式if(emailnull||email.trim().equals()){errors.put(email,请输入邮箱.);flagfalse;}elseif(!email .matches([a-zA-Z0-9_-][a-zA-Z0-9_-](\\.[a-zA-Z0-9_-]))){errors.put(email,邮箱格式错误.);flagfalse;}returnflag;}// 向Map集合errors中添加错误信息 public void setErrorMsg(String err, String errMsg){if((err!null)(errMsg!null)){errors.put(err, errMsg);}}// 获取errors集合 public MapString, StringgetErrors(){returnerrors;}}4、创建工具类DBUtil右击util文件夹选择New—Java Class名字为DBUtil 主要用来模拟数据库操作。代码参考如下package com.demo08.util;importcom.demo08.domain.UserBean;importjava.util.HashMap;public class DBUtil{private static DBUtil instancenew DBUtil();// 定义users集合用于模拟数据库 private HashMapString,UserBeanusersnew HashMapString,UserBean();privateDBUtil(){// 向数据库(users)中存入两条数据 UserBean user1new UserBean();user1.setName(Jack);user1.setPassword(12345678);user1.setEmail(jackit315.org);users.put(Jack ,user1);UserBean user2new UserBean();user2.setName(Rose);user2.setPassword(abcdefg);user2.setEmail(roseit315.org);users.put(Rose ,user2);}public static DBUtilgetInstance(){returninstance;}// 获取数据库(users)中的数据 public UserBean getUser(String userName){UserBean user(UserBean)users.get(userName);returnuser;}// 向数据库(users)插入数据 public boolean insertUser(UserBean user){if(usernull){returnfalse;}String userNameuser.getName();if(users.get(userName)!null){returnfalse;}users.put(userName,user);returntrue;}}5、创建Servlet主要用来接收用户的请求信息拿到用户的用户名和密码然后进行校验。右击demo08文件夹选择New—Package文件夹的名字为web继续右击刚才创建的web文件夹选择New—Create New Servlet名字为ControllerServlet代码参考如下package com.demo08.web;importcom.demo08.domain.RegisterFormBean;importcom.demo08.domain.UserBean;importcom.demo08.util.DBUtil;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;WebServlet(nameControllerServlet, urlPatterns/ControllerServlet)public class ControllerServlet extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setHeader(Content-type,text/html;charsetGBK);response.setCharacterEncoding(GBK);// 获取用户注册时表单提交的参数信息 String namerequest.getParameter(name);Stringpasswordrequest.getParameter(password);Stringpassword2request.getParameter(password2);Stringemailrequest.getParameter(email);// 将获取的参数封装到注册表单相关的RegisterFormBean类中 RegisterFormBean formBeannew RegisterFormBean();formBean.setName(name);formBean.setPassword(password);formBean.setPassword2(password2);formBean.setEmail(email);// 验证参数填写是否符合要求如果不符合转发到register.jsp重新填写 if(!formBean.validate()){request.setAttribute(formBean, formBean);request.getRequestDispatcher(/register.jsp).forward(request, response);return;}// 参数填写符合要求则将数据封装到UserBean类中 UserBean userBeannew UserBean();userBean.setName(name);userBean.setPassword(password);userBean.setEmail(email);// 调用DBUtil类中的insertUser()方法执行添加操作并返回一个boolean类型的标志 boolean bDBUtil.getInstance().insertUser(userBean);// 如果返回为false表示注册的用户已存在则重定向到register.jsp重新填写 if(!b){request.setAttribute(DBMes,你注册的用户已存在);request.setAttribute(formBean, formBean);request.getRequestDispatcher(/register.jsp).forward(request, response);return;}response.getWriter().print(恭喜你注册成功3秒钟自动跳转);// 将成功注册的用户信息添加到Session中 request.getSession().setAttribute(userBean, userBean);// 注册成功后3秒跳转到登录成功页面loginSuccess.jsp response.setHeader(refresh,3;urlloginSuccess.jsp);}}6、创建注册界面register.jsp右击底部的web文件夹选择New—JSP/JSPX这里jsp文件的名字就叫register参考代码如下% pagelanguagejavapageEncodingGBK%!DOCTYPE html PUBLIC-//W3C//DTD HTML 4.01 Transitional//ENhttp://www.w3.org/TR/html4/loose.dtdhtmlheadtitle用户注册/titlestyletypetext/cssh3{margin-left: 100px;}zhuc#outer {width: 750px;}span{color:#ff0000}div{height:20px;margin-bottom: 10px;}.ch{width: 80px;text-align: right;float: left;}.ip{width: 500px;float: left}.ipinput{margin-right: 20px}#bt {margin-left: 50px;}#btinput {margin-right: 30px;}/style/headbodyformaction/demo8/ControllerServletmethodposth3用户注册/h3dividouterdivdivclassch姓名:/divdivclassipinputtypetextnamenamevalue${formBean.name }/span${formBean.errors.name}${DBMes}/span/div/divdivdivclassch密码:/divdivclassipinputtypetextnamepasswordspan${formBean.errors.password}/span/div/divdivdivclassch确认密码:/divdivclassipinputtypetextnamepassword2span${formBean.errors.password2}/span/div/divdivdivclassch邮箱:/divdivclassipinputtypetextnameemailvalue${formBean.email }span${formBean.errors.email}/span/div/divdividbtinputtyperesetvalue重置 /inputtypesubmitvalue注册//div/div/form/body/html7、编程loginSuccess.jsp文件这个文件表示用户登录成功的显示界面右击底部的web文件夹选择New—JSP/JSPX这里jsp文件的名字就叫loginSucces参考代码如下% page languagejava pageEncodingGBK importcom.tom.domain.UserBean%!DOCTYPEhtmlPUBLIC-//W3C//DTD HTML 4.01 Transitional//ENhttp://www.w3.org/TR/html4/loose.dtdhtmlheadtitlelogin successfully/titlestyletypetext/css#main{width:500px;height:auto;}#main div{width:200px;height:auto;}ul{padding-top:1px;padding-left:1px;list-style:none;}/style/headbody% if (session.getAttribute(“userBean”)null) { %jsp:forwardpage”register.jsp”/% return; } %divid”main”divid”welcome”恭喜你登录成功/divhr/div您的信息/divdivulli您的姓名:{user.name}/lili您的邮箱:{userBean.email }/li/ul/div/div/body/html8、运行结果
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

新闻采集源码wordpress速查手册:报价拆解与域名避坑指南 2026/9/27 10:21:39

新闻采集源码wordpress速查手册:报价拆解与域名避坑指南

新闻采集源码wordpress速查手册:报价拆解与域名避坑指南 域名解析报错,服务器SSL证书过期,后台登录直接白屏。这三个场景,是不是让你抓狂?很多老板以为买套“新闻采集源码wordpress”就能自动赚钱,结果卡在部署环节,对着控制台发…

阅读更多 →
CAN数据帧和过滤器 2026/9/27 10:21:31

CAN数据帧和过滤器

一、can通信的数据帧起始位 识别码 RTR 1位(0) 11位(每个设备都有属于自己的识别码) 1位(数据帧0,远程请求帧1)控制码:IDE …

阅读更多 →
rsuite Dropdown 自定义触发器与面板:用 renderToggle、panel 与 Separator 打造个性化下拉菜单 2026/9/27 10:21:31

rsuite Dropdown 自定义触发器与面板:用 renderToggle、panel 与 Separator 打造个性化下拉菜单

前端UI组件 【免费下载链接】rsuite &#x1f9f1; A suite of React components . 项目地址&#xff1a; https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 本指南聚焦 rsuite 中 <Dropdown> 组件的进阶定制能力&#xff1a;通过 renderToggle 将默认按钮…

阅读更多 →
STM32实验室消防预警系统:开源硬件+三级阈值+嘉立创实测 2026/9/27 10:21:24

STM32实验室消防预警系统:开源硬件+三级阈值+嘉立创实测

1. 项目概述&#xff1a;一个能真正跑在实验室里的消防预警系统你有没有遇到过这样的场景&#xff1a;实验室里几台恒温箱、烘箱、电炉同时开着&#xff0c;空气里飘着淡淡的焦糊味&#xff0c;但没人察觉&#xff1b;或者深夜值班时&#xff0c;烟雾传感器误报&#xff0c;警报…

阅读更多 →
STM32消防预警系统:开源硬件+状态机驱动的实验室安全方案 2026/9/27 10:21:24

STM32消防预警系统:开源硬件+状态机驱动的实验室安全方案

1. 这不是个玩具项目&#xff0c;是实验室真能用的消防预警系统STM32项目开源&#xff1a;实验室消防预警控制系统&#xff08;代码 原理图 仿真&#xff09;——这个标题里藏着三个硬核关键词&#xff1a;STM32、消防预警、开源交付。它不是教学Demo&#xff0c;不是课程作业…

阅读更多 →
智能家居硬件开源项目实战:从ESP32到固件安全的完整学习路径 2026/9/27 10:21:13

智能家居硬件开源项目实战:从ESP32到固件安全的完整学习路径

1. 从一堆热搜词里&#xff0c;我看到了智能家居硬件开源的真实需求智能家居硬件开源项目去哪里找&#xff0c;这个问题看起来简单&#xff0c;但真正动手做过的人都知道&#xff0c;找项目只是第一步&#xff0c;找到能跑通、能复现、能学到东西的项目才是关键。我接触智能家居…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉