jsp中如何使用session
Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟.
我们使用seesion功能,可以达到多个jsp程序从操作同一个java bean, 那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.)
在项目实践中,我们Jsp程序中很多参数需要从数据库中读取,有的参数实际读取一次就可以,如果设计成每个用户每产生一个页面都要读取数据库,很显然,数据库的负载很大,同时也浪费时间,虽然可能有数据库连接池优化,但是尽量少使用数据库是我们编程的原则.
比如,我们的test.jsp 和test1.jsp都需要得到一个参数userdir,这个userdir是从数据库中得知,使用session将大大优化性能,程序如下:
设计一个javabean 存储userdir.
public class UserEnv {
private String userdir = "";
private String userurl = "";
public UserEnv(){
//构建方法初始化userdir,可以从数据库中读取,这里简单给值ppp
userdir="pppp";
System.out.println("init userdir, one time");
}
public String getUserdir() throws Exception{
return userdir;
}
}
test1.jsp程序:
this is test1.jsp:
test2.jsp程序:
this is test2.jsp:
无论用户先调用test1.jsp还是test2.jsp, java bean UserEnv总是先初始化一次, 由于这个bean存在周期是seesion,因此该用户第二次以后只要在seesion有效期内再调用,myenv.getUserdir()将直接从bean内存中读取变量,不必再初始化.这样提高速度,又减少数据库访问量.
这样,我们就有了一个jsp程序之间共享变量或方法 的实现办法.
JSP session只能有一个吗
一个用户登录网站使用过程中只产生一个session,request.getSession();不管在哪个地方获取都是同一个,里面所放的对象属性也是一样的,这个sessin可以就代表目前用户对话
Jsp中Session 怎么用啊!?
设置session的方法: session.setAttribute("变量名","变量值"); 获取session的方法: session.getAttribute("变量名"); 必须先setsetAttribute才能有getAttribute!!! session.removeAttribute()的作用,就是删除属性! 例如:session.removeAttribute("lao bai"); //把session中"lao bai"这个属性(及其值)删除 session.invalidata(); //使session失效 session.setMaxInactiveInterval(10); //使session在10秒后失效以上一般用做实现用户退出(logout),使用户信息失效! session.putVaule()和session.setAttribute()的区别: session.putVaule()是以前的用法,现在用session.setAttribute(),没什么区别!
Session对象:是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态.Session的信息保存在服务端,Session的ID保存在客户机的Cookie中.事实上,在许多服务器上,如果浏览器支持Cookies的话就直接使用Cookies.但是如果不支持或废除了Cookies的话就自动转化为URL-rewriting , Session自动为每一个流程提供了方便地存储信息的方法.不同的用户对应的Session对象一般是不同的.例如当用户登录站点时,系统就会为他建立一个与其他不相的Session对象,以便于区别其他用户.这个Session对象记录该用户的个人信息,而当该用户退出网站时,该Session对象就会随之消失.
jsp中怎么获取session
一种方式:
<%
HttpSession session = request.getSession(); //获取session
Object obj= session.getAttribute("key");
%>
另一种方式:
EL表达式:${sessionScope.key}