Jsp中的注释

JavaWeb技术篇 尼古拉斯.赵四 4849℃ 0评论

今天在弄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.第三种注释:

<%

//当行注释

/**

多行注释

*/

%> 

转载请注明:尼古拉斯.赵四 » Jsp中的注释

喜欢 (5)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址