1.<c:forEach>标签:遍历域对象中的数组和集合,和java类中的for循环很相似
基本语法:
第一种:<c:forEach var="yuanshu" items="数组或者集合中的值" begin="开始下标" end="结束的下标" step="遍历的增量"></c:forEach>
普通for:
for(int i=0;i<数组或集合的长度;i++){ yuanshu }
第二种:<c:forEach var="yuanshu" items="数组或者集合中的值"></c:forEach>
增强for:
for(String yuanshu: 数组或者集合){ yuanshu }
varStatus属性:count表示序号,index表示索引(下标),
first判断是否是第一个元素,last判断是否是最后一个元素
2.<c:param>标签和<c:url>标签:设置路径和传递参数。
基本语法:
<c:url var="变量名称" url="路径值">
<c:param name="属性名称" value="属性值"></c:param>
</c:url>
开发的访问路径:
绝对路径:
第一种:http://localhost:2222/chapter07/login.html
第二种:/chapter07/login.html
相对路径:
直接写访问的资源路径:比如 login.html
第八章
Filter过滤器:
基本功能对Servlet容器调用Servlet的过程进行拦截
浏览器—>请求过滤器filter—>访问web资源(jsp,Servlet,HTML)——>回到过滤器filter——>响应浏览器
实现第一个filter程序:
创建一个名为MyFilter的filter类,拦截MyFilter程序
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//注释掉chain.doFilter(request, response);
拦截为:
web内:(1)<filter>根元素用于注册filter(2)<filter-name>子元素用于设置filter名称(3)<filter-class>子元素用于设置filter类完整名称(4)<filter-mapping>根元素用于设置一个过滤器所拦截的资源(5)<filter-name>子元素必须与<filter>中的<filter-name>子元素相同(6)<url-pattern>子元素用于匹配用户请求的URL
2.filter映射
(1)拦截所有“*”实现在web<url-pattern>/*<url-pattern>内
(2)拦截不同方式的访问请求:web.xml文件中,<filter-mapping>元素用于配置一个Fliter所负责拦截的资源
<1>REQUEST,当用户直接访问页面时,web容器将会调用过滤器,如果目标资源是通过RequestDispatcher的include()方法访问,那过滤器将不会被调用。 <2>INCLUDE,如果目标资源是通过RequestDispatcher的include()或forward()方法访问,过滤器将被调用,除此之外,不会调用过滤器 <3>FORWARD,如果目标资源是通过RequestDispatcher的forward()方法访问,过滤器将被调用,除此之外,不会调用过滤器 <4>ERROR,如果资源是通过声明式异常处理机制调用的,过滤器将被调用,除此之外,不会调用过滤器
ForwardFilter内
web.xml内
first.jsp文件
拦截first.jsp在web.xml内加<dispatcher>FORWARD</dispatcher>
3.filter链
web应用程序中注册多个filter程序,每一个filter程序都可以针对某一个URL进行拦截