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

发布时间:2026/9/27 9:31:13

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、运行结果
延伸阅读

更多相关文章

2026/9/27 9:31:13

网站业务员好做吗?拆解3个最佳实践避坑指南

网站业务员好做吗?拆解3个最佳实践避坑指南 网站做好了没人访问,这大概是做建站销售最头疼的事。很多新人觉得,只要网站做得漂亮,客户就会买单,结果发现根本卖不出去。其实,这背后涉及的是 最佳实践…

2026/9/27 9:26:13

搞懂网站建设策划书论文,建站到底要花多少钱

搞懂网站建设策划书论文,建站到底要花多少钱 备案流程一头雾水,是不是让你抓耳挠腮?很多创业团队负责人拿着方案去问价,对方报价从几千到几万不等,心里直打鼓: 网站建设策划书论文 里写的功能,落地到底 多少钱 能搞定?别被忽悠,也别省错地方。…

2026/9/27 10:16:17

嵌入式开发如何‘混进去’:最小可行交付能力构建指南

1. 这句话不是玩笑,是嵌入式行业十年真实生存图谱“其实嵌入式开发岗位,都是先混进去再说!”——这句话最近在技术社区、校招群和应届生论坛里反复刷屏,表面看像一句自嘲的牢骚,但背后藏着整个嵌入式领域人才供需结构的…

2026/9/27 10:16:17

STM32调试失效的五大根源:BOOT0、NRST、串口、ST-Link与时钟树

1. 项目概述:为什么STM32调试总像在拆炸弹?“STM32开发调试经验总结:那些年踩过的坑”——这标题不是段子,是无数嵌入式工程师用烧坏的芯片、反复复位的板子、凌晨三点盯着串口乱码时的真实写照。我从2012年用STM32F103C8T6点灯开…

2026/9/27 10:16:17

STM32调试核心:BOOT0与NRST硬件原理与实战避坑

1. 项目概述:为什么STM32调试总像在拆炸弹?“STM32开发调试经验总结:那些年踩过的坑”——这标题不是调侃,是实打实的血泪史。我带过三届嵌入式方向的毕业设计,手把手陪学生调过200个STM32项目,从F0系列到H…

2026/9/27 10:16:17

区域名网站建设公司的销售好做吗?揭秘报价内幕与免费工具避坑指南

区域名网站建设公司的销售好做吗?揭秘报价内幕与免费工具避坑指南 找建站公司最怕什么?不是技术牛不牛,而是怕被坑高价,最后掏了十万块,做出来的东西还不如花三千块找的兼职大学生。很多老板一开口就问:“你们这个区域名网站建设公司的销售好做吗?”这…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑