初始界面
提交后跳转到doUser来处理信息
在<%%>内可以写进java代码,来获得表单内部用户提交的信息
<%
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String sex=request.getParameter("sex");
//爱好
String[] loves=request.getParameterValues("love");
%>
如果姓名不为张三则进入注册失败的页面
使用的是重定向:
response.sendRedirect(request.getContextPath()+"/shibai.jsp");
其中request.getContextPath()为,返回上一级目录
因为request的作用域只有一次请求内,重定向进行了两次请求,而session的作用域是一整个会话,所以这里使用了session来保存用户的信息,
(session保存的本质是键值对,这里的爱好是一个字符数组,是不建议保存在session里的)
姓名为张三则进入注册成功页面
使用的是转发:
request.getRequestDispatcher("chengg.jsp").forward(request,response);
<%
if (!name.equals("张三")){
session.setAttribute("name",name);
session.setAttribute("pwd",pwd);
session.setAttribute("sex",sex);
session.setAttribute("loves",loves);
// request.setAttribute("mess","注册失败");
response.sendRedirect(request.getContextPath()+"/shibai.jsp");
}
else{
request.setAttribute("mess","注册成功");
request.getRequestDispatcher("chengg.jsp").forward(request,response);
}
%>
session:
ession更像服务器用来记录客户状态的一种机制
每一个sessin都有个自己的ID,可以区别每个用户的操作并且区分开
一次session就叫一次会话
一次会话就是用户访问一次服务器的过程
会话比请求(request)范围更大,会话可以包含多个请求
同一个机器同一个浏览器是同一个session
不一样的浏览器是不一样的session
可以用
out.print(session.getId());
来查看当前的session的id
以进入失败页面为例:
因为注册成功时成功页面的跳转使用的方法是转发,只进行了一次请求(request)所以可以在进入成功页面后再使用request来获取用户信息,除了可以使用request这个区别,其他的和失败页面类似
进入失败页面后
因为session里保存的是键值对,所以使用键名来获得值
访问次数:使用application
application内数据也是键值对
先创建一个cont,若是第一次访问,这时cont为null,给它赋值为1
第一次之后的访问时cont不为null,set application内的cont值加一
application的数据是整个项目共享的,而且不同的session可以操作同一个数据
所以不同的session访问这个项目的网页都会增加访问次数
若是重启服务器,则application里的数据会重置
<%
Object name=session.getAttribute("name");
Object pwd=session.getAttribute("pwd");
Object sex=session.getAttribute("sex");
Object aihao=session.getAttribute("loves");
// Object[] loves=request.getParameterValues("love");
Object cont=application.getAttribute("cont");
if(cont==null){
application.setAttribute("cont",1);
}else {
Integer i=(Integer)cont;
application.setAttribute("cont",i+1);
}
Integer i=(Integer)application.getAttribute("cont");
out.println("访问次数:"+i);
%>
<br/>
用户名:<%=name%><br/>
密码:<%=pwd%><br/>
性别:<%=sex%><br/>
爱好:<%
String[] str=(String[])aihao;
for (String hobby:str){
String hobb=(String)hobby ;
out.print(hobb+",");
}%>
session是放服务器端的,所以东西尽量不放在session里,会影响服务器的性能,所以可以对session做清除和过期的操作
方法一:会话失效:
session.invalidate();
方法二:通过键名移除session内的属性
session.removeAttribute("username");
方法三:服务器主动清除长期没有发出请求的会话
public void setMaxinactiveInterval(int interval);
Servlet 容器指示该 session 会话无效之前,指定客户端请求之间的时间,以秒为单位。
方法四:在配置文件中(web.xml)里更改会话过期时间
<session-config>
<session-timeout> 30</session-timeout>
</session-config>
单位为分钟
四个jsp的源码:
初始页面
<%@ page import="javax.xml.crypto.Data" %>
<%@ page import="java.time.LocalDate" %><%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="./css/css.css">
<script type="text/javascript" src="./js/jquery-3.5.1.js"></script>
<script src="./js/js.js"type="text/javascript"></script>
</head>
<body>
<div class="zong">
<div class="head">
<p>注册 | 登录 | 帮助</p>
<%
String hello="hello world";
LocalDate date = LocalDate.now();
%>
<% out.print("当前时间是:"+date); %>
</div>
<div class="register">
<form action="doUser.jsp" id="userform" name="userform" method="get">
<p>
<label for="">编     号:</label><input name="code" disabled="disabled" value="10010" <!-- required -->/>
</p>
<p>
<label for="">姓     名:</label><input type="text" id="Name" value="请输入你的练习时长" name="name" pattern="[\u4e00-\u9fa5]{2,6}" /> <span class="name">2-6位中文组成</span>
</p>
<p>
<label for="">请 输 入 密 码:</label><input type="password" name="pwd"> <span class="pwd">请输入6-12位密码</span>
</p>
<p>
<label for="">请再次输入密码:</label><input type="password" name="pwd1" value="请输入正确的邮箱"> <span class="pwd1">请再次输入密码</span>
</p>
<p>
<label for="">性     别:</label><input type="radio" value="男" name="sex" checked/>男
<input type="radio" value="女" name="sex"/>女
</p>
<p>
<label for="">爱好:</label>
<input type="checkbox" checked="checked"name="love" value="唱"> 唱
<input type="checkbox" checked name="love" value="跳">跳
<input type="checkbox" name="love" value="rap">rap
<input type="checkbox" name="love" value="篮球">篮球
<input type="checkbox" name="love" value="music">music
</p>
<p>
<label for="">家     乡:</label>
<select name="hometown">
<option value="1" selected="selected">北京</option>
<option value="2">上海</option>
<option value="3">广东</option>
</select>
</p>
<p>
<label for="">Email:     </label> <input type="text" name="email" value=""> <span class="email">ex:123456@qq.com</span>
</p>
</p>
<p>
<label for="">电     话:</label><input type="text" name="tel" value="请输入您的电话号码" required "> <span class="tel">请输入11位电话号码</span>
</p>
<p>
<input type="submit" value="登录" name="btn" id="submit">
<%
// out.print(session.getId());
%>
</p>
</form>
</div>
</div>
</body>
<script>
</script>
</html>
初始页面的css
.head
{
width: 100%;
text-align: center;
border-bottom: solid;
border-bottom-color:#154e79;
margin: 0px;
}
.register
{
width: 100%;
text-align: center;
}
.zong
{
background-color:#7591ad;
margin: 0%;
width:40%;
border: solid;
border-radius: 10px;
border-color:#154e79;
position: relative;
left: 30%;
}
label
{
margin-left: 10%;
text-align: left;
}
.register p
{
width: 100%;
text-align: left;
}
#submit
{
margin-left: 30%;
}
doUser
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String sex=request.getParameter("sex");
//爱好
String[] loves=request.getParameterValues("love");
%>
用户名:<%=name%><br/>
密码:<%=pwd%><br/>
性别:<%=sex%><br/>
<%
if (!name.equals("张三")){
session.setAttribute("name",name);
session.setAttribute("pwd",pwd);
session.setAttribute("sex",sex);
session.setAttribute("loves",loves);
// request.setAttribute("mess","注册失败");
response.sendRedirect(request.getContextPath()+"/shibai.jsp");
}
else{
request.setAttribute("mess","注册成功");
request.getRequestDispatcher("chengg.jsp").forward(request,response);
}
%>
</body>
</html>
chengg
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
注册成功!
<%
Object cont=application.getAttribute("cont");
if(cont==null){
application.setAttribute("cont",1);
}else {
Integer i=(Integer)cont;
application.setAttribute("cont",i+1);
}
Integer i=(Integer)application.getAttribute("cont");
out.println("访问次数:"+i);
out.println("用户选择了:");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String sex=request.getParameter("sex");
String[] loves=request.getParameterValues("love");
%>
<br/>
用户名:<%=name%><br/>
密码:<%=pwd%><br/>
性别:<%=sex%><br/>
爱好:<%
for (String hobby:loves){
out.print(hobby+",");
}%>
</body>
</html>
shibai
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
注册失败!
<%
Object name=session.getAttribute("name");
Object pwd=session.getAttribute("pwd");
Object sex=session.getAttribute("sex");
Object aihao=session.getAttribute("loves");
// Object[] loves=request.getParameterValues("love");
Object cont=application.getAttribute("cont");
if(cont==null){
application.setAttribute("cont",1);
}else {
Integer i=(Integer)cont;
application.setAttribute("cont",i+1);
}
Integer i=(Integer)application.getAttribute("cont");
out.println("访问次数:"+i);
%>
<br/>
用户名:<%=name%><br/>
密码:<%=pwd%><br/>
性别:<%=sex%><br/>
爱好:<%
String[] str=(String[])aihao;
for (String hobby:str){
String hobb=(String)hobby ;
out.print(hobb+",");
}%>
</body>
</html>