要求:
- 一个注册页面 (form表单,servlet)
-
username (文本框)
-
password:密码 (密码框)
-
passwordYes :再次输入密码(密码框)
-
sex (单选框)
-
hobby (多选框)
-
info (文本域)
-
- servlet处理注册信息
- 判断两次密码是否相同
- 相同则跳到成功页面,并且在成功页面显示SeesionID;
- 不同则注册失败,重定向到注册页面
- 判断两次密码是否相同
- 成功页面
- 显示登陆成功的用户名,密码,爱好,性别和信息;
- 显示一个注销按钮
- 如果注销后,或者没登录,不能直接进入成功页面,跳转到注销成功的界面
项目结构:
首页index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/register.jsp">注册</a>
</body>
</html>
表单页面register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script>
var status = '${sessionScope.pwdFail}';
if (status=='yes'){
alert("两次密码输入不一样,请重新输入")
}
</script>
</head>
<body>
<h1>注册页面</h1>
<hr>
<div>
<form action="${pageContext.request.contextPath}/register.do" method="post">
<p>用户名:<input type="text" name="username" required></p>
<p>密码: <input type="password" name="password" required></p>
<p>确认密码: <input type="password" name="passwordTwo" required></p>
<p>性别:
<input type="radio" name="sex" value="boy" checked>男
<input type="radio" name="sex" value="girl">女
</p>
<p>爱好:
<input type="checkbox" name="hobby" value="basketball">篮球
<input type="checkbox" name="hobby" value="code">代码
<input type="checkbox" name="hobby" value="movie">电影
<input type="checkbox" name="hobby" value="music">音乐
</p>
<p>个人简介:
<textarea name="info"></textarea>
</p>
<p>
<input type="submit" value="提交">
<input type="reset" value="重置">
</p>
</form>
</div>
</body>
</html>
处理表单提交处理的sevlet类RegisterServlet
package com.ck.servlet;
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 java.io.IOException;
import java.util.Arrays;
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决乱码问题
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获得用户提交的数据
String username = request.getParameter("username");
String password = request.getParameter("password");
String passwordTwo = request.getParameter("passwordTwo");
String sex = request.getParameter("sex");
String info = request.getParameter("info");
String[] hobbies = request.getParameterValues("hobby");
//判断密码是否正确
if(password.equals(passwordTwo)){ //相同,重定向到成功页面
//把用户消息放进session中
HttpSession session = request.getSession();
session.setAttribute("s_username",username);
session.setAttribute("s_password",password);
session.setAttribute("s_sex",sex);
session.setAttribute("s_info",info);
session.setAttribute("s_hobbies",Arrays.toString(hobbies));
//重定向到成功页面
response.sendRedirect("success.jsp");
}else {//如果没有成功!通知用户密码输入不一样
request.getSession().setAttribute("pwdFail","yes");
response.sendRedirect("register.jsp");
//response.getWriter().println("用户密码输入不一样");
}
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
注销处理的sevlet类LoginOutServlet
package com.ck.servlet;
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 java.io.IOException;
import java.util.Arrays;
public class LoginOutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取session
HttpSession session = req.getSession();
if (session==null){ //如果没有session了,就跳回到首页
resp.sendRedirect("index.jsp");
return;
}
//注销session或者移除session中的数据
session.removeAttribute("s_username");
session.removeAttribute("s_password");
session.removeAttribute("s_sex");
session.removeAttribute("s_info");
session.removeAttribute("s_hobbies");
//注销session
//session.invalidate();
//注销成功后。回到成功页面
resp.sendRedirect("success.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
注销成功页面
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>成功</title>
<style>
p>span{
font-weight: bold;
}
</style>
<%
HttpSession loginSession = request.getSession();
if (loginSession.getAttribute("s_username")==null){ //发现session中没有信息,就说明未注册或者已注销
//转发
request.getRequestDispatcher("/errorpage/noLogin.jsp").forward(request,response);
}
%>
noLogin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>没有session信息</title>
</head>
<body>
<h1>
没有session信息,未注册或者已注销,请先注册
</h1>
<a href="${pageContext.request.contextPath}/register.jsp">注册</a>
</body>
</html>
运行截图