SpringBoot 搭建web项目过程记录

起一个新项目,SpringMVC + mybatis + mysql,常规选项,用SpringBoot(2.1.3)来搭。

官网用Spring Initializr(为啥不是Initializer,拼写错误,还是有意为之?)创建代码框架后,写Controller,不起作用(用了jsp做模板文件)。

查资料,反复对比官方例程,才解决。

1. pom文件,缺少一个dependency

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

加上这个依赖,运行DemoApplication.java,Controller就生效了。

2. 加了依赖后,在IDE里"Run on Server"还是无法映射,且打成war包部署到tomcat也不行。

Main Application Class需要继承 SpringBootServletInitializer,并 override configure(SpringApplicationBuilder ...) 方法。

3. jsp文件的位置

在application.properties里面设置:

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

这个目录放哪里,试了src/main/resources和其中的templates目录都不对。应该是 src/main/webapp

4. jstl 标签的支持

pom.xml 需要增加依赖

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

5. eclipse 上的设置

增加了 src/main/webapp 目录之后,project被自动设置为 Dynamic Web Module 4.0(Project facets),需要tomcat 9.0+

6. tomcat console 字符集设置

把jsp文件的字符集都设为UTF-8之后,tomcat启动的日志自动切换到中文了。在IDE里面没问题,打war包部署,在windwos上启动tomcat,console是乱码。需要修改 conf/logging.properties

java.util.logging.ConsoleHandler.encoding = GBK

小结:

web应用,jsp做模板这种方式,已被视为陈旧的技术,应用会越来越少。或使用其他技术,或前后端分离,后端只以json的方式返回数据,由前端完成界面渲染。

web应用的部署运行方式,容器化管理,打包成jar,运行jar这种方式,越来越普遍。

Spring Initializer生成的代码框架里面,只包含最小子集。

于是我这种使用old技术的old man,就踩坑了 ^_^

附:spring官方例程

https://github.com/spring-projects/spring-boot/tree/2.1.x/spring-boot-samples/spring-boot-sample-web-jsp

2019-03-28

oldcrane

猜你喜欢

转载自blog.csdn.net/oldcrane/article/details/88860350