`
king_tt
  • 浏览: 2083273 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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.第三种注释:

<%

//当行注释

/**

多行注释

*/

%>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics