springboot 集成jsp
springboot 集成jsp 踩了一些坑,记录一下。已经运行成功,这是jar包的方式
首先继承SpringBootServletInitializer重写configure方法
@MapperScan("com.example.demo.mapper") @SpringBootApplication public class SpringBootApplicationStart extends SpringBootServletInitializer { /** * 需要继承SpringBootServletInitializer类并重写其中configure方法 * @param application * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootApplicationStart.class); } public static void main(String[] args) { SpringApplication.run(SpringBootApplicationStart.class, args); } }
配置文件中添加一下依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
<!--用于编译jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<scope>provided</scope>--> </dependency>
<build> <plugins> <!-- spring dev --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.2.RELEASE</version> <configuration> <!--启动类--> <mainClass>com.example.demo.SpringBootApplicationStart</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <dependencies> <!-- spring热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.6.RELEASE</version> </dependency> </dependencies> </plugin> <!-- 忽略无web.xml警告 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> <resources> <!-- 打包时将jsp文件拷贝到META-INF目录下 --> <resource> <!-- 指定resources插件处理哪个目录下的资源文件 --> <directory>src/main/webapp</directory> <!--注意此次必须要放在此目录下才能被访问到 --> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
application.yml中添加:
spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp
Controller :
@Controller public class UserController { @Autowired private UserService userService; @RequestMapping("getUser") @ResponseBody public User getUser(Integer id){ return userService.getUserByKey(id); } @RequestMapping("go") public String go(){ return "success"; } }
访问成功
可以访问了,但是没有测试静态资源能不能访问。springboot 默认是不支持jsp的,springboot 默认支持thymeleaf。但是现在的项目一般都是前后端分离,使用springboot的时候不需要去考虑返回view