一、
1、<c:if>标签
在程序开发中,经常需要使用d语句进行条件判断,如果要在JSP页面中进行条件判断,就需要使用Core标签库提供的<:1>标签,该标签专门用于完成JSP页面中的条件判断,它有两种语法格式,如下。
语法1:没有标签体的情况
<c:主f test="testCondition" var="result"
[iscope="{page | reques | session | application}"]/>
语法2:有标签体的情况,在标签体中指定要输出的内容
<c:if test-"testCondition" var="result"
[scope="(page IrequestIsessionlapplication}"]>
body content
</c:if>
<c:if>标签有3个属性:
(1)test属性用于设置逻辑表达式
(2)var属性用于指定逻辑表达式中变量的名字
(3)scope属性用于指定var变量的作用范围,默认值为page。如果属性test的计算结果为tue,那么标签体将被执行,否则标签体不会被执行。
2、在WebContent目录下创建一个名为 c_if.jsp的文件。
3、 <c:choose>标签
在程序开发中不仅需要使用if条件语句,还经常会使用if-else语句。为了在JSP页面中也可以完成同样的功能,Core 标签库提供了<c:choose>标签,该标签用于指定多个条件选择的组合边界,它必须与<c:when>、<c:otherwise>标签一 起使用。
(1)<c:choose>标签没有属性,在它的标签体中只能嵌套一个或多 个<c:when>标签和零个或一个<c:otherwise>标签,并且同一个<c:choose>标签中所有的<c:when>子标签必须出现在<c:otherwise>子标签之前,其语法格式如下。
<c: choose>
Body content (<when> and <otherwise> subtags)
</c:choose>
(2)<c:when>标签只有一个test属性,该属性的值为布尔类型。test 属性支持动态值,其值可以是一个条件表达式,如果条件表达式的值为true, 就执行这个<c:when>标签体的内容,其语法格式如下。
<c:when test="testCondition">
Body content
</c:when>
(3)<c:otherwise>标签没有属性,它必须作为<c:choose>标签最后分支出现。当所有的<c:when>标签的test条件都不成立时,才执行和输出<c:otherwise>标签体的内容,其语法格式如下。
<c:otherwise>
conditional block
</c:otherwise>
4、在WebContent目录下创建一个名为c_choose.jsp的文件。
5、<c:forEach>标签
在JSP页面中,经常需要对集合对象进行循环迭代操作,为此,Core 标签库提供了一个<c:forEach>标签,该标签专门用于迭代集合对象中的元素,如Set、List、 Map、数组等,并且重复执行标签体中的内容。
语法1:迭代包含多个对象的集合
<c:forEach [var="varName"] items="collection" [varStatus="varStaatusName"]
[begin="begin"] [end="end"] [step-"step")>
body content
</c:forEach>
语法2:迭代指定范围内的集合
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
body content
</c: forEach>
●var属性用于指定将当前迭代到的元素保存到page域中的名称。
●items属性用于指定将要迭代的集合对象。
●varStatus属性用于指定当前迭代状态信息的对象保存到page域中的名称。
●begin属性用于指定从集合中第几个元素开始进行迭代,begin的索引值从0开始。如果没有指定items属性,就从begin指定的值开始迭代,直到迭代结束为止。
●step属性用于指定迭代的步长,即迭代因子的增量。
6、c_foreach1.jsp
7、c_foreach2.jsp
8、c_foreach3.jsp
9、c_url.jsp
10、Filter 过滤器
Fiter被称作过滤器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Serviet进行响应处理前后实现些特殊功能。 这就好比现实中的污水净化设备, 它可以看作一个过滤器,专门用于过滤污水杂质。
( 1)首先在Eclipse中创建- -个名为chapter08的Web项目,然后在该项目的src目录下创建一个名为cn.itcast.chapter08.filter包,最后在该包下创建一个名为MyServlet的Servlet类,该类用于访问时在浏览器中输出“Hello MyServlet"。
MyServlet 类的具体代码如下:
Web.xml
(2)在cn.itcast.chapter08.filter 包中创建一-个名为MyFilter 的Filter 类,该类用于拦截MyServlet程序。MyFilter 的实现代码及web.xml中的代码和运行图:
11、Filter 映射
1、 (1)使用通配符“.” 拦截用户的所有请求
Filter的<filter -mapping>元素用于配置过滤器拦截的资源信息,如果想让过滤器拦截所有的请求访问,那么需要使用通配符“*” 来实现。
(2)拦截不同方式的访问请求
在webxn文件中,一个<filter-mapper>无素用于配置一个Filer 所负责拦截的资源。
2、在chaper8项目的cn icast chapter08 iter包中,创建一个名为FowarSerlet的Seviel类.该类用于将请求转发给frstjsps页面。
实现代码及web.xml中的代码和运行图:
3、为了拦截ForwardServlet通过forward()方法转发的first.jsp 页面,需要在web.xml文件中的对应过滤器配置信息中增加一个<dispatcher>子元素,将该元素的值设置为FORWARD,修改后的Forwardilter的映射如下。