最近自己的Spring-boot小项目想用到jersey ,但是也需要jsp做展示,这就需要注册两个servlet

先配置好mvc相关配置

pom.xml中添加jsp相关依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.19</version>
</dependency>

application.properties中添加

1
2
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

添加jersey配置jerseyConfig

1
2
3
4
5
6
7
8
9
10
11
12
13
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;
import org.springframework.context.annotation.Configuration;

public class JerseyConfig extends ResourceConfig {

public JerseyConfig(){
register(RequestContextFilter.class);
register(MultiPartFeature.class);
packages("...controller");
}
}

添加两个相关servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Configuration
public class ServletConfig {

@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
ServletRegistrationBean registration = new ServletRegistrationBean(
dispatcherServlet);
registration.addUrlMappings("/jsp/*");
return registration;
}
@Bean
public ServletRegistrationBean registrationJerseyBean(){
ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(new JerseyConfig()));
registration.setEnabled(true);
registration.setName("jersey-servlet");
registration.addUrlMappings("/rest/*");
return registration;
}
}

参考