最近学习过滤器的时候,dispatcher可以指定过滤器被Servlet容器拦截的方式,可以是REQUEST、INCLUDE、FORWARD、ERROR,默认是REQUEST方式。

现在有两个filter:helloFilter、secondFilter。从index.html页面超链接到dispatcher.jsp页面,dispatcher.jsp页面分别通过<jps:forward>、<jsp:include>等方式进入目的页面test.jsp,此时web.xml文件中的两个filter的dispatcher根据dispatcher.jsp页面进入test.jsp页面的方式进行配置。

1.先测试<jsp:forward>的时候,将secondFilter的dispatcher在web.xml中配置为<dispatcher>FORWARD</dispatcher>,helloFilter没有设    置(默认为REQUEST)。此时只有第二个filter起了拦截作用,第一个filter不起作用。

2.注释掉第一行代码

3.测试<jsp:include>,此时web.xml中两个filter的dispatcher配置和第1步保持一样没有改动。即:helloFilter的dispatcher没有设置默认为            REQUEST,secondFilter的dispatcher设置     成FORWARD。按照正常情况两个filter都不起作用。

问题在于:第2个filter仍然能起作用。

index.html代码如下

dispatcher.jsp代码如下:

test.jsp代码如下:

web.xml配置文件如下:

分析原因:index.html和test.jsp都没什么,唯一可能出问题的应该是dispatcher.jsp。而且是在dispatcher.jsp里设置通过哪种方式进入test.jsp的,所以问题出在了这个页面。

仔细检查,发现是JSP注释的问题:<%-- JSP注释  --%> 和<!-- HTML注释  -->。二者的区别:JSP注释可以阻止Java代码的执行,html不能。

思维误区:以前我以为放在<%   %>里的只有java代码,java代码的注释放在<%--   --%>里。看到<jsp:forward page="/test.jsp">                           </jsp:forward>我想到的是html代码,所以就 用<!--   -->注释了。但可以注意到这里是jsp:forward,也就是说他是Jsp代码并不是                   html代码。归根到底还是没有对html有个基础了解,才会出现这么低级的错误。

也就是说,问题出在dispatcher.jsp文件里的注释上:<!--  -->不能阻止Java代码的执行,所以这里的<jsp:forward                                          page="/test.jsp"></jsp:forward>也执行了,所以才会让第2个filter起了作用。

 解决办法: 

备注:如果直接在浏览器输入test.jsp地址,可以看到第1个filter工作,第2个filter不工作。因为直接在浏览器访问test.jsp页面,这是request方              式。第1个filter默认的拦截方式是 REQUEST,第二个filter设置的拦截方式是FORWARD。

如果希望两个filter都对request方式起作用,可以把第二个filter的dispatcher添加设置:

有关JSP注释的更多相关文章

  1. jsp 变量和方法的声明 Java程序片 HTML注释 JSP注释

    <%!...%> 声明变量和方法 <%!...%>之中的变量为JSP页面的成员变量,当多个线程访问本页面时,多个线程共享此变量. <%@ page contentType ...

  2. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  3. jsp注释方式

    1,HTML的注释方法 <!--...add your comments here...--> 说明:使用该注释方法,其中的注释内容在客户端浏览中是看不见的.但是查看源代码时,客户是可以看 ...

  4. JSP基础:JSP指令、JSP注释、JSP脚本、JSP声明、JSP表达式

    JSP指令分为:page指令.include指令.taglib指令. page指令:通常位于JSP页面的顶端,同一个页面可以有多个页面指令. 语法:<%@ page language=" ...

  5. jsp基础语言-jsp注释

    JSP注释可分为客户端注释和服务器端注释. 客户端注释:用户可通过浏览器中的源代码查看,且这种注释可以加入JSP表达式. 语法:<!-- 客户端注释[<%=表达式%>] --> ...

  6. jsp注释<%-- --%>和<!-- -->的区别

    最近在写JSP页面注释的时候,遇到一个问题,在JSP页面引用的静态属性资源文件时,在浏览器控制台报错,当我把引用的标签注释掉后,用的是<!-- -->.然后浏览器仍然报了之前那个错,经过查 ...

  7. JSP注释

    ------------------siwuxie095                                 在 JSP 文件中可以使用 HTML 注释     HTML 注释使用 < ...

  8. JSP注释格式

    一.JSP注释格式来源 JSP是Sun Microsystems公司制定的一种服务器端动态网页技术的组件规范,其主体由HTML.CSS.JavaScript和Java拼凑组成. 正是因为JSP是一种组 ...

  9. JSP 注释的详解及简单实例

    转自:https://www.jb51.net/article/124727.htm JSP 注释的详解及简单实例 一 三种格式 二 举例 ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

随机推荐

  1. 第一部分 python基础

    1.1,参数传递:*代表元组,**代表字典 1.2 ,常用数据类型 列表 [1,2,3] 元组 (1,2,3) 不可变的list 集合 {1,2,3} 字典 {1:a, 2:c} (4)字典以关键字为 ...

  2. HQL查询语言的使用介绍

    @SuppressWarnings("deprecation") public class HibernateUtil { private static final Session ...

  3. Spring-IOC之前世今生

    没使用IOC之前 贯用工厂模式调用 bean组件 可类比为: 去商场买东西,你是先想好自己要买什么了,然后去寻找商品(逛商场的同学不要扯皮啊2333) 用了IOC之后 可类比为: 所有网上购物,所有的 ...

  4. clientX,screenX,pageX,offsetX的异同 【转载】

    首先说明一下以上对象都是指javascript中的,不包含其他语言. pageX/pageY: 鼠标相对于整个页面的X/Y坐标.注意,整个页面的意思就是你整个网页的全部,比如说网页很宽很长,宽2000 ...

  5. 【渗透测试学习平台】 web for pentester -2.SQL注入

    Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...

  6. 使用 rqt_console 和 roslaunch---8

    使用 rqt_console 和 roslaunch Description: 本教程介绍如何使用rqt_console和rqt_logger_level进行调试,以及如何使用roslaunch同时运 ...

  7. python--切片--6

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一.对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: &g ...

  8. 1-3-1 关于API

    主要内容:API函数及其相关内容的介绍.Windows编程相关基础知识介绍 1.API函数的概念 <1>API(Application Programming interface),即应用 ...

  9. hive权限管理之实践

    一.实践心得 主要参考这个连接,里面说得也挺详细的.http://www.aboutyun.com/thread-12549-1-1.html 总结如下: 1.若赋予用户某个表的权限,查用户在该表所属 ...

  10. Python爬虫学习笔记——豆瓣登陆(二)

    昨天能够登陆成功,但是不能使用cookies,今天试了一下requests库的Session(),发现可以保持会话了,代码只是稍作改动. #-*- coding:utf-8 -*- import re ...