jsp页面中的注释问题
1.其中注释不含EL表达式的样子 --> <!-- -->
2.其中注释含EL表达式的样子 --> <%-- --%>
总结:
1.用<!-- --> 注释了含EL表达式的代码,EL表达式会被编译器检查,检查其值是否获取到 ?
-->而我用<!-- -->注释的代码里刚好有EL表达式,而EL表达式获取的id 恰好是我改动前的id,根本就获取不到,所以就导致了 我发现了这么个问题吧(虽然说不出所以然来,但根据测试结果来判断,好像是这样的哈)
2.用<%-- --%>注释的EL表达式,编译器不检查其值是否获取到
--> 之所以得出这个结论,我用<%-- --%>注释了问题代码,结果不报错
唉,其真正的所以然还是不清楚哦,下面这篇借鉴的博客解释得更清楚些
借鉴:
Jsp中注释<%– – %> 和 <!– –> 的区别:https://blog.youkuaiyun.com/yusimiao/article/details/46818667
遇到的注释问题:
1. 用<!-- --> 注释了含EL表达式的代码会报错
具体案例:页面报错
HTTP Status 500 - org.apache.jasper.JasperException: An exception occurred processing JSP page /page/main.jsp at line 164
type Exception report
message org.apache.jasper.JasperException: An exception occurred processing JSP page /page/main.jsp at line 164
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: org.apache.jasper.JasperException: An exception occurred processing JSP page /page/main.jsp at line 164
161: <!-- 杩欓噷鍒濆鍖栨枃绔犲垪琛� -->
162: <c:forEach var="article" items="${article_list}" >
163: <div class="list-group-item">
164: <!-- /Blog-master/Article?id=${article.id}: 鍓嶇鐢紵浼犲弬缁欏悗绔紝鍒欏悗绔彲浠ョ敤request鏉ヨ幏鍙栧�� -->
165: alert("main.jsp涓殑article_id:"+${article.article_id});
166: <h4><a href="${pageContext.request.contextPath}/Article?id=${article.article_id}">${article.title}</a></h4>
167: <br/>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.apache.jasper.JasperException: An exception occurred processing JSP page /page/main.jsp at line 164
161: <!-- 杩欓噷鍒濆鍖栨枃绔犲垪琛� -->
162: <c:forEach var="article" items="${article_list}" >
163: <div class="list-group-item">
164: <!-- /Blog-master/Article?id=${article.id}: 鍓嶇鐢紵浼犲弬缁欏悗绔紝鍒欏悗绔彲浠ョ敤request鏉ヨ幏鍙栧�� -->
165: alert("main.jsp涓殑article_id:"+${article.article_id});
166: <h4><a href="${pageContext.request.contextPath}/Article?id=${article.article_id}">${article.title}</a></h4>
167: <br/>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:738)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:708)
org.apache.jsp.index_jsp._jspService(index_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
javax.el.PropertyNotFoundException: Property 'id' not found on type pers.wsf.blog.pojo.Article
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:245)
javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:222)
javax.el.BeanELResolver.property(BeanELResolver.java:332)
javax.el.BeanELResolver.getValue(BeanELResolver.java:95)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
org.apache.el.parser.AstValue.getValue(AstValue.java:167)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:956)
org.apache.jsp.page.main_jsp._jspx_meth_c_005fforEach_005f3(main_jsp.java:608)
org.apache.jsp.page.main_jsp._jspService(main_jsp.java:262)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:738)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:708)
org.apache.jsp.index_jsp._jspService(index_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.11 logs.
然后我找到了main.jsp 页面164行的代码
<!-- /Blog-master/Article?id=${article.id}: 前端用?传参给后端,则后端可以用request来获取值 -->
仔细一看,为什么会报错呢? 明明注释了代码啊,按理来说没问题啊,是不是其附近的代码问题
通过看root cause
root cause
javax.el.PropertyNotFoundException: Property 'id' not found on type pers.wsf.blog.pojo.Article
说明问题是 属性id 没有获取到,可能是因为我对 数据库进行了优化,更改了其中的字段名(把其中的id 改为了article_id),所以我把 凡是调用了其id 的都改为了article_id , 而此处因为是注释了,就没有怀疑
后来觉得这错误提示都说 main.jsp 页面第164 行有问题,那我把它剪切掉试试看,结果一下子就能正常跑起来了
总结:
1.用<!-- --> 注释了含EL表达式的代码,EL表达式会被编译器检查,检查其值是否获取到 ?
-->而我用<!-- -->注释的代码里刚好有EL表达式,而EL表达式获取的id 恰好是我改动前的id,根本就获取不到,所以就导致了 我发现了这么个问题吧(虽然说不出所以然来,但根据测试结果来判断,好像是这样的哈)
2.用<%-- --%>注释的EL表达式,编译器不检查其值是否获取到
--> 之所以得出这个结论,我用<%-- --%>注释了问题代码,结果不报错
唉,其真正的所以然还是不清楚哦,下次有时间再琢磨哦