一. 注册要求

1. 一个注册页面

  • username (文本框)
  • password:密码 (密码框)
  • passwordYes :再次输入密码(密码框)
  • hobby (多选框)
  • sex (单选框)
  • info (文本域)

2. servlet处理注册信息,判断两次密码是否相同

  • 相同则跳到成功页面
  • 不同则注册失败,重定向到注册页面

3. 成功页面

  • 显示登陆成功的用户名,密码,爱好,性别和信息;
  • 显示一个注销按钮

4. 如果注销后,或者没登录,不能直接进入成功页面,跳转到失败界面

二. 具体操作步骤

1:在index.jsp(首页)写一个超链接,让跳转到注册界面

2:写好注册界面后,提交给ServeltRegister处理

3:跳转到ServletRegister注册界面,把用户消息放进session中,并判断输入的密码是否正确

4:如果密码成功,跳转到成功界面,并在成功界面显示用户填写的信息

5:在成功页面设置注销按钮,按下注销按钮后,跳转到ServletOut注销界面



6:当用户消息注销后,让其回到成功页面,然后提示用户未注册或者已注销,请先注册

7:在提示页面设置注册按钮,让其重新注册,回到注册页面

8:如果密码输出错误,让其回到注册页面,并用弹框提醒



三. 代码

1:首页 index.jsp

<html>
<head>
<title>首页</title>
<style>
body{
margin: 0 auto;
text-align: center;
}
</style>
</head>

<body>

<h1>首页</h1>

<hr>

<a href="${pageContext.request.contextPath}/register.jsp">注册</a>

</body>

</html>

2:注册页 register.jsp

<html>
<head>
<title>注册</title>
<script>
var status = '${sessionScope.pwdFail}';
if (status=='yes'){
alert("两次密码输入不一样,请重新输入")
}
</script>
</head>
<body>
<h1>注册</h1>
<form action="${pageContext.request.contextPath}/Register" method="post">
<p>用户名: <input type="text" name="username" required ></p>
<p>密码:<input type="password" name="password1" required></p>
<p>确认密码:<input type="password" name="password2" required></p>
<p>爱好:
<input type="checkbox" name="hobby" value="movie">电影
<input type="checkbox" name="hobby" value="TV">电视
<input type="checkbox" name="hobby" value="music">音乐
</p>
<p>性别:
<input type="radio" name="sex" value="boy">男
<input type="radio" name="sex" value="girl">女
</p>
<p>个人简介:
<textarea name="info"></textarea>
</p>
<p>
<input type="submit">
<input type="reset">
</p>
</form>
</body>
</html>

3:成功页 success.jsp

<html>
<head>
<title>注册成功</title>
<%
HttpSession session1 = request.getSession();
if(session1.getAttribute("username")==null){
request.getRequestDispatcher("loss.jsp").forward(request,response);
}
%>
</head>
<body>
<h1>注册成功!</h1>
<%--通过sessionScope得到信息--%>
<p> 用户名:${sessionScope.username}</p>
<p> 密码:${sessionScope.password1}</p>
<p> 性别:${sessionScope.sex}</p>
<p> 爱好:${sessionScope.hobbies}</p>
<p> 简介:${sessionScope.info}</p>
<a href="${pageContext.request.contextPath}/Out">注销</a>
</body>
</html>

4:提示页 loss.jsp

<html>
<head>
<title>失败</title>
</head>
<body>
<h1>
没有session信息,未注册或者已注销,请先注册
</h1>
<a href="${pageContext.request.contextPath}/register.jsp">注册</a>
</body>
</html>

5:web.xml

    <servlet>
<servlet-name>ServletRegister</servlet-name>
<servlet-class>com.sunzhen.ServletRegister</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletOut</servlet-name>
<servlet-class>com.sunzhen.ServletOut</servlet-class>
</servlet>
<span class="hljs-tag">&lt;<span class="hljs-name">servlet-mapping</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">servlet-name</span>&gt;</span>ServletOut<span class="hljs-tag">&lt;/<span class="hljs-name">servlet-name</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">url-pattern</span>&gt;</span>/Out<span class="hljs-tag">&lt;/<span class="hljs-name">url-pattern</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">servlet-mapping</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">servlet-mapping</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">servlet-name</span>&gt;</span>ServletRegister<span class="hljs-tag">&lt;/<span class="hljs-name">servlet-name</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">url-pattern</span>&gt;</span>/Register<span class="hljs-tag">&lt;/<span class="hljs-name">url-pattern</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">servlet-mapping</span>&gt;</span>

6:注册 ServletRegister

        request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
    <span class="hljs-comment">//获得用户提交的数据</span>
<span class="hljs-built_in">String</span> username = request.getParameter(<span class="hljs-string">"username"</span>);
<span class="hljs-built_in">String</span> password1 = request.getParameter(<span class="hljs-string">"password1"</span>);
<span class="hljs-built_in">String</span> password2 = request.getParameter(<span class="hljs-string">"password2"</span>);
<span class="hljs-built_in">String</span> sex = request.getParameter(<span class="hljs-string">"sex"</span>);
<span class="hljs-built_in">String</span> info = request.getParameter(<span class="hljs-string">"info"</span>);
<span class="hljs-built_in">String</span>[] hobbies = request.getParameterValues(<span class="hljs-string">"hobby"</span>); <span class="hljs-keyword">if</span>(password1.equals(password2)){
<span class="hljs-comment">//把用户消息放进session中</span>
HttpSession session = request.getSession();
session.setAttribute(<span class="hljs-string">"username"</span>,username);
session.setAttribute(<span class="hljs-string">"password1"</span>,password1);
session.setAttribute(<span class="hljs-string">"sex"</span>,sex);
session.setAttribute(<span class="hljs-string">"info"</span>,info);
session.setAttribute(<span class="hljs-string">" hobbies"</span>, Arrays.toString(hobbies)); response.sendRedirect(<span class="hljs-string">"success.jsp"</span>);
<span class="hljs-comment">//request.getRequestDispatcher("success.jsp").forward(request,response);</span>
}<span class="hljs-keyword">else</span> {
request.getSession().setAttribute(<span class="hljs-string">"pwdFail"</span>,<span class="hljs-string">"yes"</span>);
response.sendRedirect(<span class="hljs-string">"register.jsp"</span>);
}

7:注销 ServletOut

       HttpSession session = request.getSession();
//注销session或者移除session中的数据
session.removeAttribute("username");
session.removeAttribute("password1");
session.removeAttribute("sex");
session.removeAttribute("hobbies");
session.removeAttribute("info");
    response.sendRedirect(<span class="hljs-string">"success.jsp"</span>);

Servlet(4):一个简单的注册页面的更多相关文章

  1. 一个简单的注册页面,基于JS

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. AJAX实现简单的注册页面异步请求

    p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...

  3. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  4. Android笔记-4-实现登陆页面并跳转和简单的注册页面

    实现登陆页面并跳转和简单的注册页面   首先我们来看看布局的xml代码 login.xml <span style="font-family:Arial;font-size:18px; ...

  5. tkinter做一个简单的登陆页面

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  6. tkinter做一个简单的登陆页面(十六)

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  7. 使用Html和ashx文件实现其简单的注册页面

    记得上一次博客中实现的是其登录页面,其实学会了登录页面,注册页面自然就知道怎么写啦,都是一个意思的,但是今天不知道怎么个情况,写一个注册页面程序 中 一直在出错,大的问题小的问题一直出错,似乎是不在状 ...

  8. vue-cli3和element做一个简单的登陆页面

    1.先用vue-cli3创建一个项目 2.安装element模块 全局安装 npm i element-ui -S 3在main.js引入模块 import ElementUI from 'eleme ...

  9. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

随机推荐

  1. jenkins 生成HTML报表,邮件推送

    1.登录jenkins,系统管理=>插件管理 =>可选插件安装 安装成功: 2.打开任务,进入配置 3.添加构建后操作 4.配置页面 5.构建后report输出配置完成后点击立即构建,构建 ...

  2. SpringCloud升级之路2020.0.x版-31. FeignClient 实现断路器以及线程隔离限流的思路

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面一节,我们实现了 FeignClient 粘合 resilience4j 的 Ret ...

  3. 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。

    下面是傻瓜博主"曾经"犯过的错和一些心得:        ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...

  4. Python 全局变量和局部变量,global 和 nonlocal关键字

    全局变量和局部变量    全局变量:定义在函数外的变量    局部变量:定义在函数内部变量    获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获 ...

  5. Java包装类,以及Integer与int之间的比较

    一.Java的基本类型 Java语言中提供了八种基本类型,包括六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 整数型,包括byte.short.int.long,默认初始值是0 ...

  6. [gym102538H]Horrible Cycles

    将右侧$n$个点逆序排列,并将左侧的第$i$个点插入到右侧的$a_{i}$之前(左侧的点顺序任意) 换言之,一个左侧的点恰与(排列中)其之后所有右侧的点有边 对于一个简单环,仅保留(排列中)前$i$个 ...

  7. [cf1326F]Wise Men

    对答案序列求一个高维后缀和,再通过差分将其解出,后者复杂度为$o(n2^{n})$ 对于求后缀和后的结果,即01序列仅要求1处有边(不要求0处没有边),那么也即要求将原图划分为若干条长度给定且没有公共 ...

  8. [cf1392H]ZS Shuffles Cards

    考虑统计每一轮(以抽到小丑为一轮)的贡献,不难发现答案即期望轮数*每轮期望次数 关于期望轮数,当前牌堆里已经在$S$中的卡实际上没有意义,不妨将这一类卡从牌堆中删除 此时,定义$f_{i}$表示$S$ ...

  9. 高并发异步解耦利器:RocketMQ究竟强在哪里?

    上篇文章消息队列那么多,为什么建议深入了解下RabbitMQ?我们讲到了消息队列的发展史: 并且详细介绍了RabbitMQ,其功能也是挺强大的,那么,为啥又要搞一个RocketMQ出来呢?是重复造轮子 ...

  10. 听说你想把对象存储当 HDFS 用,我们这里有个方案...

    传统的大数据集群往往采用本地中心化的计算和存储集群.比如在谷歌早期的[三驾马车]中,使用 GFS 进行海量网页数据存储,用 BigTable 作为数据库并为上层提供各种数据发现的能力,同时用 MapR ...