Jsp ApacheTomcat-javax.servlet.ServletException:我的类不是servlet
目前,我使用SpringMVC和SpringBoot开发了一个web应用程序 我试图将spring boot应用程序打包为war。我修改了我的应用程序类:Jsp ApacheTomcat-javax.servlet.ServletException:我的类不是servlet,jsp,tomcat,servlets,spring-boot,web.xml,Jsp,Tomcat,Servlets,Spring Boot,Web.xml,目前,我使用SpringMVC和SpringBoot开发了一个web应用程序 我试图将spring boot应用程序打包为war。我修改了我的应用程序类: @SpringBootApplication @ComponentScan @EnableAutoConfiguration public class AuditConfigurationApplication extends SpringBootServletInitializer { protected SpringAppl
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
public class AuditConfigurationApplication extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(AuditConfigurationApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(AuditConfigurationApplication.class, args);
}
-pom.xml文件:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- spring data -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<!-- itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.0.6</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.11</version>
</dependency>
<!-- Spring security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.0.3.RELEASE</version>
</dependency>
<!-- ecj for exception "No Java compiler available" -->
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>
<!-- for uri: -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- For JSON Object -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
-audit-servlet.xml:
<beans>
<!-- register controller in servlet private context -->
<context:component-scan base-package="com.SSC.Services.REST"/>
</beans>
访问API REST时:http://95.x.x.x/Apps(floder的姓名)/员工/所有人
,我收到了以下错误消息:
javax.servlet.ServletException:Class[com.SSC.Services.REST.UsilizateUrsRestController]不是servlet
ApacheTomcat/8.5.15
如何解决这个问题
谢谢你,你的
web.xml
是这里的罪魁祸首,也是你的依赖性的第二个竞争者。另请参阅《Spring引导参考指南》,其中有一个很好的章节介绍了如何引导。您可能还想看看GitHub上的
首先删除您的web.xml
,您不需要它。您的AuditConfigurationApplication
也是SpringBootServletInitializer
,它负责在servlet容器中引导应用程序(而不是作为可执行文件)
接下来,您的依赖关系也有点脆弱。您应该使用spring引导启动器安全性
,而不是手动定义spring安全性依赖项。您应该为嵌入式库使用另一个依赖项
<!-- Spring security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
org.springframework.boot
请参阅参考指南中的部分,并查看GitHub上所需的依赖项
您不需要springbootstarterweb
中已经包含的servlet api
依赖项 您的web.xml
是这里的罪魁祸首,也是您的依赖性的第二个竞争者。另请参阅《Spring引导参考指南》,其中有一个很好的章节介绍了如何引导。您可能还想看看GitHub上的
首先删除您的web.xml
,您不需要它。您的AuditConfigurationApplication
也是SpringBootServletInitializer
,它负责在servlet容器中引导应用程序(而不是作为可执行文件)
接下来,您的依赖关系也有点脆弱。您应该使用spring引导启动器安全性
,而不是手动定义spring安全性依赖项。您应该为嵌入式库使用另一个依赖项
<!-- Spring security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
org.springframework.boot
请参阅参考指南中的部分,并查看GitHub上所需的依赖项
您不需要springbootstarterweb
中已经包含的servlet api
依赖项 UsilizateUrsRestController不是servlet。您试图将一个控制器映射到一个servlet,它抛出异常。感谢您的解释,但是如何解决这个问题@VNT?如何确保访问我的RESTAPI?删除web.xml
,并请阅读参考指南中相当好的文档(在这方面,您的依赖关系有点混乱)。如何进行servlet映射?如果您删除使用Spring Boot的web.xml
@M.DeinumYou,请使用它来进行映射。另外,您没有映射servlet您映射的是控制器…UsilizateUrsRestController不是servlet。您试图将一个控制器映射到一个servlet,它抛出异常。感谢您的解释,但是如何解决这个问题@VNT?如何确保访问我的RESTAPI?删除web.xml
,并请阅读参考指南中相当好的文档(在这方面,您的依赖关系有点混乱)。如何进行servlet映射?如果您删除使用Spring Boot的web.xml
@M.DeinumYou,请使用它来进行映射。另外,您不是在映射servlet,而是在映射控制器。。。
Apps
--META-INF
-maven
-MANIFEST.MF
-war-tracker
--WEB-INF
-classes
-com
-static
-application.properties
- lib-provided
-lib
- web.xml + audit-servlet.xml
--org
-- My JSP pages ..
<!-- Spring security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- Provided (for embedded war support) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>