JSP数据交互:内置对象session和include指令
什么是会话?
session一词的原义是指有始有终的一系列动作,在实际应用中通常翻译成会话。
会话机制是一种服务器端的机制,当用户向服务器发出第一次请求时,服务器会为该用户创建唯一的会话,会话将一直延续到用户访问结束。
session对象
作为JSP提供的内置对象之一,session对象允许用户访问会话的相关信息,以及绑定数据到会话(在服务器端使用类似于哈希表的结构来保存信息)。绑定到会话的数据可以在多次请求之间持续有效。
session对象的常用方法
会话的失效
会话也是有时效的,使会话失效的方式有两种。一种是会话超时,另一种是手动调用方法设置失效。
(1)通过session对象的setMaxInactiveInterval()方法设置,代码段如下。
session.setAttribute("login","admin");
//参数600的单位是秒,表示在10分钟后session对象失效
session. setMaxInactiveInterval(600);
response. sendRedirect("admin. jsp");
(2)在项目的web.xml中设置代码段如下。
<session-config>
<session- timeout> 10</session-timeout>
</session-config>
单位是分钟。设置为0或负数,表示永不超时。
(3)在应用服务器中设置,在Tomcat目录/cont/web xml中找到Ssession-config>元素,其中<session- timeout>元素中的30就是默认的时间,单位是分钟,可以修改其值。
手动调用方法设置失效是通过调用session对象的invalidatel )方法实现的,主要应用于用户注销的场合。但如果只想清空会话中绑定的某个数据对象。则可以调用session.removeAttribute(String key)方法,将指定的对象从会话中清除,而会话仍然有效。
用户名:<input type="text" name="name">
密码:<input type="password" name="pwd">
<input type="submit" value="确定">
</form>
User封装类代码:
package cn.bdqn.lq;
import java.io.Serializable;
public class User implements Serializable{
private int uid;
private String uname;
private String upwd;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
}
indexJsp.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="cn.bdqn.lq.User"%>
<%
request.setCharacterEncoding("UTF-8");
String name= request.getParameter("name");
String pwd = request.getParameter("pwd");
if("lucky".equals(name)&&"123456".equals(pwd)){
User user =new User();
user.setUname(name);
user.setUpwd(pwd);
//把对象存到session里面
session.setAttribute("user", user);
}
if(session.getAttribute("user")!=null){
//正常进入
request.getRequestDispatcher("NewJsp.jsp").forward(request, response); //转发
}else{
//拼接
response.sendRedirect("index.jsp");//重定向
}
%>
NewJsp.jsp代码:
<%@page import="cn.bdqn.lq.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ include file="newsJsp.jsp" %>
<%
if(session.getAttribute("user")==null){
response.sendRedirect("index.jsp");
}else{
User user=(User)session.getAttribute("user");
out.print(user.getUname()+user.getUpwd());
}
%>
newsJsp.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html>
<body>
<h4>玲珑骰子安红豆,入骨相思知不知!</h4>
</body>
</html>
实现效果图: