今天想把试试shiro oauth,下了dome,结果它里面是用数据库,我不想这么复杂我想把这个的数据库的查询去掉,就采用spring boot 主要为了减少配置文件,结果开始配置jsp为页面模板,配了一阵子,出现了各种问题,最后还是把问题解决好了,其实网上很多,但是都是或多或少的实现上有问题,经过我的实践,我简单记在这里,首先从需要的jar入手,想要spring boot +jsp,需要如下的maven 配置:
首先我采用的spring boot 1.4,我用 parent 来控制spring boot 相关的版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
相关包maven:
<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>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
<!-- servlet 依赖. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!--
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
不然报异常信息:
javax.servlet.ServletException: Circular view path [/helloJsp]: would dispatch back to the current handler URL [/helloJsp] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
其中:我要提醒读者你注意:在添加maven 时注意pom中tomcat-embed-jasper,spring-boot-starter-tomcat maven中的<scope>provided</scope>注释掉,还有javax.servlet-api的<scope>provided</scope>不能省掉,否者会在项目中出现没法跳转页面,很多人都提到了在application.properties中配置请求返回值的缺省前目录与缺省后目录这个的实用性太低(这个只针对于jsp的配置),我采用的方式是在配置类中加入如下的InternalResourceViewResolver 的bean的配置就好了,如下:
@Bean(name="viewResolver")
public InternalResourceViewResolver viewResolver(){
InternalResourceViewResolver view=new InternalResourceViewResolver();
view.setOrder(0);
view.setPrefix("/WEB-INF/jsp/");
view.setSuffix(".jsp");
view.setViewClass(JstlView.class);
view.setContentType("text/html");
return view;
}
这样的好处是如果没有配置默认的InternalResourceViewResolver ,方便设置,注意jsp页面最好放到WEB-INF下,这个jsp的默认没有提供,所以配置一个比较好,我试了那个配置配的方式不好用,然后开启@EnableWebMvc就好了。这样就好了。很多人的继承SpringBootServletInitializer,这个我感觉没有太大的必要,个人看法,不喜勿喷。继续。