Jsp中的注释

今天在弄JSTL标签的时候,用到了<c:redirect>重定向标签的时候遇到一个很是蛋疼的问题,就是当我测试完成这个标签的时候,我想测试其他的内容,由于它是重定向的(浏览器地址会发生改变的),这样肯定会影响我后面的测试,于是我就想把这行代码注释了:

<!--<c:redirect url="/include.jsp"></c:redirect>-->

然后测试其他的内容了,但是问题来了,我每次刷新浏览器的时候,还是重定向了,我就纳闷了,这句话不是注释了吗?怎么还是执行了,然后我就把这句话删除了,这时候就好了,此时就怀疑这个注释到底有没有用,然后上网查看资料,知道这种注释对于Jsp是没有用的,它是html/xml的原版注释,应该使用

<%--<c:redirect url="/include.jsp"></c:redirect>--%>

这个注释就可以了,随后又想起来了,还有Java中原版注释://和/**/,其实也可以这样注释的:

<%//--<c:redirect url="/include.jsp"></c:redirect>--%>,

这个和上面的两种有什么区别呢?这时候就可能需要jsp的执行过程了,这里就简单说一下:每个jsp页面都会被jsp引擎翻译成servlet.java的,具体内容可以到tomcat目录下的work文件夹中的项目工程中找到对应的文件,所以最后一种注释是彻底的注释了,因为他在servlet.java中就被注释了,而前面的两种注释在servlet.java代码中是没有被注释的,下面就是servlet.java中的代码片段:

使用<%//....%>注释的: 

      out.write(" -->\r\n");
      out.write("    <br><br>\r\n");
      out.write("    \r\n");
      out.write("    <!-- c:redirect标签的使用:重定向打开include.jsp页面 -->\r\n");
      out.write("    ");
      //<c:redirect url="/include.jsp"></c:redirect>

这里可以看到,这句话直接被注释了,即:Jsp中<%...%>中的内容会原封不动的翻译成servlet.java

使用<%----%>注释的:

      out.write(" -->\r\n");
      out.write("    <br><br>\r\n");
      out.write("    \r\n");
      out.write("    <!-- c:redirect标签的使用:重定向打开include.jsp页面 -->\r\n");
      out.write("    ");

使用<!---->注释的:

      out.write(" -->\r\n");
      out.write("    <br><br>\r\n");
      out.write("    \r\n");
      out.write("    <!-- c:redirect标签的使用:重定向打开include.jsp页面 -->\r\n");
      out.write("    <!--");
      if (_jspx_meth_c_005fredirect_005f0(_jspx_page_context))
        return;

综上所述可以发现,原因可能在于那段代码:

 if (_jspx_meth_c_005fredirect_005f0(_jspx_page_context))
        return;

这个方法是针对redirect标签的做判断的,所以原因就在这个方法内部,可以自行查看,需要注意的是,如果使用<%...%>和<%----%>的话,servelet.java中是没有这个方法的,这一点更能说明为什么<!---->注释没有效果了!


总结:

1.第一种注释:

<!--注释内容--> 

这是HTML/XML的原版注释,会老老实实的发到客户端的,有什么见不得人的就别用这个写了


2.第二种注释:

<%--注释内容--%> 

有<% %>的东西都是写给JSP应用服务器看的,不会发到客户端的。编译器将其置之不理,html也无缘与其相见,被应用服务器打入冷宫了。这个注释感觉比较多余,不知道专门又搞一个这种注释干什么。


3.第三种注释:

<%

//当行注释

/**

多行注释

*/

%> 

转载于:https://www.cnblogs.com/roccheung/p/5797426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值