我的應用程式是先下載jsp檔案,而不是在頁面上渲染它。我在控制臺中得到了200狀態代碼,但在頁面上得到了404。我看了一下,發現我應該添加tomcat-jasper和tomcat-embed的依賴項,但現在我得到了一個類轉換例外,說jspservlet不能被轉換為javax servlet。希望得到任何幫助。謝謝!
得到一個ApplicationContextException:
Caused by: javax.servlet.ServletException: 類[org.apache.jasper.servlet.JspServlet]不是一個Servlet。
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1054) ~[Tomcat-embed-core-9. 0.48.jar:9.0.48]
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) ~[Tomcat-embed-core-9. 0.48.jar:9.0.48]
at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedContext.load(TomcatEmbeddedContext.java:82) ~[spring-boot-2。 5.2.jar:2.5.2]
... 32普通框架被省略。
原因是:java.lang.ClassCastException:org.apache.jasper.servlet.JspServlet不能被轉換為javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1049) ~[Tomcat-embed-core-9. 0.48.jar:9.0.48]
... 34普通框架被省略了
當我的pom中出現這種情況時:
<dependency>
<groupId>org.apache.Tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>10.1.0-M2</version>
<scope>/span>runtime</scope>/span>
</dependency>/span>
當我把這個從pom中取出時,一切都很正常,點擊控制器并回傳ModelAndView,但下載jsp而不是實際顯示頁面。
uj5u.com熱心網友回復:
TL;DR:使用
<dependency>>
<groupId>org.apache.Tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>/span>
你添加的依賴有幾個問題:
- 你應該使用
tomcat-embed-jasper而不是tomcat-jasper:它依賴于tomcat-embed-core(已經被Spring Boot使用),而不是tomcat-catalina(Spring Boot沒有使用)。包括后者會導致像這個問題中的問題。 。
- Jasper 10.1 實作了 JSP 3.0,這與 Tomcat 9.0 提供的 Servlet 4.0 不兼容(參見這個問題)。由于
spring-boot-parent管理這些依賴關系,你應該省略<version>標簽,并使用Spring Boot選擇的版本(你正在使用的版本為9.0.48,但它將保持同步,當你更新Spring Boot時), - 如果您將應用程式作為WAR檔案部署到外部Servlet容器中,您希望使用Servlet容器提供的JSP引擎版本,而不是您自己的。因此,你應該把范圍設定為
provided。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/315160.html
標籤:
上一篇:在springboot中無法進入index.jsp頁面
下一篇:如何指定采集管線
