初始界面
提交后跳转到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);
%>
用户名:<%=name%>
密码:<%=pwd%>
性别:<%=sex%>
爱好:<%
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)里更改会话过期时间
单位为分钟
四个jsp的源码:
初始页面
<%@ page import="javax.xml.crypto.Data" %>
<%@ page import="java.time.LocalDate" %><%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
注册 | 登录 | 帮助
<%
String hello="hello world";
LocalDate date = LocalDate.now();
%>
<% out.print("当前时间是:"+date); %>
初始页面的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" %>
Title
<%
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%>
密码:<%=pwd%>
性别:<%=sex%>
<%
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);
}
%>
chengg
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
注册成功!
<%
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");
%>
用户名:<%=name%>
密码:<%=pwd%>
性别:<%=sex%>
爱好:<%
for (String hobby:loves){
out.print(hobby+",");
}%>
shibai
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
注册失败!
<%
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);
%>
用户名:<%=name%>
密码:<%=pwd%>
性别:<%=sex%>
爱好:<%
String[] str=(String[])aihao;
for (String hobby:str){
String hobb=(String)hobby ;
out.print(hobb+",");
}%>



