jsp页面中的注释问题

本文探讨了在JSP页面中使用<!-- -->和<%-- --%>两种方式注释EL表达式时遇到的问题。使用<!-- -->注释含EL表达式的代码会导致编译器检查其值,如果值无法获取(如引用已更改的ID),则会出现错误。而<%-- --%>注释的EL表达式不会被编译器检查,避免了此类问题。作者通过实例分析并分享了遇到的错误和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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表达式,编译器不检查其值是否获取到

             --> 之所以得出这个结论,我用<%--  --%>注释了问题代码,结果不报错

            唉,其真正的所以然还是不清楚哦,下次有时间再琢磨哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值