session——是WEB 一个会话就是一个浏览器和服务器之间的通话,会话可以在多次请求中保存和使用数据


session :setAttribute() 作用域 一次会话

  会话:指的是 一个会话就是一个浏览器和服务器之间的通话,会话可以在多次请求中保存和使用数据

 

服务器端使用的记录客户端状态的机制————sessionID 有一个方法 session.getId();

session是单用户的、多页面共享的,session是保存再服务器端的

【清除session 与 过期 】

  方法1:程序主动清楚session数据

    *方式一:设置会话失效:session.invalidate();   【invalidate//使无效】

         public void setMaxInactiveInterval(int interval(秒));// inactive不活跃的           intrval 时间(秒)

    *方式二:

        设置项目上的配置文件 WEB_INF/web.xml

      <session-config>

          <session-timeout>30</session-timeout> <!--30分钟-->

      </session-config>

 

  方法2:移除会话属性

    public void removeAttribute(String name);

    session.setAttribute("name",input_name);//input_name 用户输入的实际值,name 设置属性的名称 遂以其

    session.removeAttribute("name");//移除属性名 

[登录页]

<%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/2
Time: 15:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="doLogin.jsp" method="get">
用户名:<input type="text" name="name" required/><br/> <%--这里的 required 属性是必填项的意思--%>
密码:&nbsp;<input type="password" name="pwd"/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love1">哟用、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love2">哈哈、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love3">呵呵、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love4">嘻嘻<br/>
&nbsp;&nbsp;&nbsp;<input type="submit" value="注册"/><br/>
<%
String register = (String)request.getAttribute("register");//获取转发后的值
if(register!=null){
out.print(register);
}
out.print(session.getId());
%>
</form>
</body>
</html>

【服务端页面】

<%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/9
Time: 11:32
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="java.net.URLEncoder" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎你
【中文乱码处理】 如:客户端以post方式提交的话
<%
request.setCharacterEncoding("UTF-8");//请求的编码方式设置为utf-8
%>
<%
response.setCharacterEncoding("utf-8");//设置相应时的编码方式为utf-8
%>

<%
//对面客户端提交数据给我这边,我现在要在这个服务端获取客户端提交的数据
//通过一个内置对象 getParameter获取单个值 getParameterValues()获取多个值
String name = request.getParameter("name");//获取单个值
String pwd = request.getParameter("pwd");//获取单个值
String[] xuan = request.getParameterValues("xuan");//获取多个值【区别 getParameter 多了个values】
%>


<br/> 获取到的信息如下:<%=name%> <br/><%=pwd%>
<br>用户选择的多个值内容是(爱好):
<%
if (xuan!=null){
for(String x:xuan){
out.print("<br/>"+x);
}
}else{
out.print("您没有选择多个值,如爱好");
}
%>
<%
//【练习】模拟登录后 欢迎谁谁登录成功
if(name.equals("admin")){//如果用户名是admin则注册失败,因为已经有了这个用户名
//提示用户注册失败
request.setAttribute("register","注册失败");
//跳转到原注册页面【转发】 通过请求对象 获得一个 内部的分发器,跳转到***.jsp去,并携带我的request && response
request.getRequestDispatcher("login.jsp").forward(request,response);
//原理注意,当使用dispatcher的时候,它的页面并不会直接到login.jsp去,而是服务器内部默认到login.jsp 去,实际
// 上你还是在本页面(doLogin.jsp)中访问 login.jsp 属于一次 请求 服务器行为

}else{//如果不是admin则注册成功,跳到注册成功页
//记录用户名或者密码,再到登录成功页面获取到这个值 并显示出来欢迎***登录本网页
session.setAttribute("name",name);//设置了session的属性和值
session.setMaxInactiveInterval(5);//session.setAttribute("name",name);在定义了session的值后,设置了它的有效期为5秒
response.sendRedirect("loginSucceed.jsp");
}
//request.getContextPath() 这个方法是获取当前页面的位置的上下文路径
%>




</body>
</html>

【验证成功页面】
<%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/9
Time: 14:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
注册成功页面<br>
欢迎你,
<%
Object name = session.getAttribute("name");//注意这里取出来的是Object类型的,所以需要转型
if(name!=null){
out.print(name.toString());
}
%>登录 <br>
<a href="loginOut.jsp">注销</a>让会用点击注销后 使session过期
打印sessionId<% out.print(session.getId());%>
</body>
</html>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM