Jsp中使用JavaBean是利用useBean标签来实现的,具体实现方法:
<jsp:useBean id="JavaBeanId" class="Class类" scope="" />
我在Jsp项目中创建了一个com.po包,包中建立了一个实体用户类,取名为Users,具体如下:
Users类中具体代码如下(其实无非就是两个私有属性,getter和setter方法,我只截了一部分图):
下面用jsp来实现JavaBean,JavaBean中的scope属性可以存放有四个值:
page、request、session、application。
page表示当前页面有效,request表示请求转发时保留数据请求重定向不保存数据。这两个都好说,重点是session和application。
session和application的共同点就是在进行请求重定向的时候数据会保留,不会消失(超链接或者是response.sendRedirect()),下面来看下区别:
先测试一下session属性:
这里我写了一个login.jsp,里面有一个表单,填写相关属性,表单提交到dologin.jsp去处理。
在dologin.jsp中使用JavaBean的setProperty将表单中的数据赋值到Users中
<jsp:useBean id="myUsers" class="com.po.Users" scope="session"/>
将scope属性设置为session
<jsp:setProperty property="username" name="myUsers"/>
<jsp:setProperty property="password" name="myUsers"/>
(这里username和password都是login.jsp中表单里的用户名和密码,一 一 对 应)
然后写一个超链接,测试其区别
<a href="testScope.jsp">测试session与application的区别</a>
testScope.jsp核心代码如下:
<jsp:useBean id="myUsers" class="com.po.Users" scope="session" />
用户名:<jsp:getProperty property="username" name="myUsers"/><br>
密码:<jsp:getProperty property="password" name="myUsers"/><br>
这里通过getProperty获取属性值
同样将scope属性设置为session。启动Tomcat服务器,页面效果如下:
用户名:xiaonan
密码:123456
点击登录。
这里登录成功,我们来看一下testScope.jsp中的页面显示,点击超链接。
这里请求重定向也能保存数据,然后我把浏览器关了,再打开,直接访问testScope.jsp,看看能不能获取到数据。(这里没有关闭Tomcat服务器)
数据已经没了。
我们再来测试一下application。
其他内容不变,将scope属性中的session改为application即可。
<jsp:useBean id="myUsers" class="com.po.Users" scope="application" />
(其他内容略写)
再来看一下效果
(在dologin.jsp中也能获取到数据)
(请求重定向之后testScope.jsp也有数据)
再把浏览器关了过一会儿再打开直接访问testScope.jsp。
数据还在。
重启Tomcat服务器,再访问testScope.jsp。
没有数据了。
总的来说session和application的区别就是:
session只保存当前会话中存储的数据,当前会话关闭以后再打开新的会话数据就会消失。
application是无论当前会话关闭与否,是否开启新的会话,数据只要没被修改,就会一直保存,直到关闭服务器之后,数据才会消失。