一、jsp作用域
概念
作用域,就是传递变量的一个区间,是整个服务器开发的通用概念。 在Java Web容器中有四个对象代表了这四个作用域
pageContext,作用范围:仅在当前页面起作用
request,作用范围:在一起请求中起作用
session,作用范围:在一次会话(包含了若干请求/响应)中,即第一次请求到浏览器关闭
application,作用范围:应用程序级作用域,即从服务器启动至服务器关闭
以上四个对象都有相同的两个方法
setAttribute("变量名", "变量值")---在作用域中添加变量
getAttribute("变量名")---从作用域中取出变量
案例
pageContext
只在本页面存值取值,不常用
request
t08.jsp
t08a.jsp
这里报了一个错,空指针异常,我们一会再处理,但request就是这样进行传值的
session
t09.jsp
t09a.jsp,同时,不需要继续set即可继续传参
t09b.jsp
application
t10.jsp
t10a.jsp,打开后,看到传值,复制网址,将浏览器关闭,输入网址依旧可以访问
小结
作用域的选取原则
pageContext,作用域太小,没用,不用
request,使用率最高,因为服务器不需要负载压力
session,使用次高,服务器需要负载压力
application,作用域太大,存值无法释放资源
能用request的尽量用request,必须用session的再用session
二、两种跳转
概念
生活中情景
A通过B寄包裹给C
方式1:A先寄给B,B再寄给C
方式2:A先寄给B,B跑去交给C
这两种方式的区别在于,包裹上的快递单号的地址是B还是C
程序中的跳转
重定向,也叫客户端跳转,经历了2个请求2个响应
转发,也叫服务器跳转,经历了1个请求1个响应
案例
重定向
输入t11.jsp的网址会直接显示t11a.jsp的页面
转发
仍然是t12.jsp的网址,但是内容却是t12a.jsp的
小结
使用request作用于传值,只能用转发
三、关于集合
单值集合,集合元素是一个单值
Collection接口
List接口,特点,元素有下标有序可重复
ArrayList类(使用率最高95%以上)
Set接口,特点,元素无下标无序不可重复
HashSet类
键值集合,集合元素是键值对
Map接口
HashMap类
四、EL表达式
在页面中编写<%...%>的形式繁琐,不易修改,不符合“显示和业务逻辑分离”原则(MVC),所以我们可以使用EL表达式+JSTL来解决。
具体的语法是,${变量名}
使用原则:会自动从作用域(从小到大)中找对应的变量,会自动进行转化
案例
基本使用
创建一个实体类Book作为测试
可以在输出的第一行中看到,name参数的值是赵六,而不是super赵六,要想拿到与request同名的参数,可以xxxScope.参数名即本案例中的sessionScope.name
指定作用域
即上文的xxxScope.参数名来指定该参数名的作用域是哪个
五、JSTL
在项目的lib目录下放入JSTL的jar包
jsp的标准标签库(JSTL)一般需要结合EL表达式来使用
该案例模拟从数据库中循环遍历得到数据
写在最后:
项目内容开始有一点综合性了,如果有人跟着做的话会发现项目里面可能存在一些问题,其实我也是第一次系统的做项目,包括一边做一边写博客,里面会有一些不合适的地方,大家可以选择性的浏览。如果网盘链接失效了,就去我最新的文章里面找链接。
网盘链接:链接: pan.baidu.com/s/1pMyP6uLH… 提取码: 1234