如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
2017-03-15 08:18
711 查看
http://www.cnblogs.com/chry/p/5912870.html
***********************************************
做WEB项目,一定都用过JSP这个大牌。Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的。当你从一个传统的Spring MVC项目转入一个Spring Boot项目后,却发现JSP和view关联有些麻烦,因为官方不推荐JSP在Spring Boot中使用。在我看来,继续用这种繁杂的手续支持JSP仅仅只是为了简单兼容而已。
我们先来看看如何在SpringBoot中使用JSP ?
1. 在pom.xm中加入支持JSP的依赖
2. 在src/main/resources/application.properties文件中配置JSP和传统Spring MVC中和view的关联
3. 创建src/main/webapp/WEB-INF/views目录,JSP文件就放这里
4. 编写Controller
package com.chry.study;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
5. 编写Application类
6. 以java application方式运行后,就可以访问http://locahost:8080/hello
================== 分割线 ==================================
以上代码pom.xml中的javax.servlet.jsp.jstl是用于支持JSP标签库的,在Web2.5的容器中没有问题,单当你的容器是Web3.0或以上版本时,就会出问题。 这是个非常坑爹的问题。
javax.servlet.jsp.jstl会自动加载依赖servlet-api-2.5.jar, 而且会在实际运行时把支持Web3.0的3.1版本的javax.servlet-api覆盖掉。即使你在pom.xml显示的在加入3.1版本的javax.servlet-api也没用。导致SpringBoot应用抛出Runtime exception运行错误。
这是一个不可调和的矛盾,要吗不用javax.servlet.jsp.jstl,要吗不用Web3.0。
但绝大多数情况下,jstl标签库不是必须的,而Web3.0是必须的。替代方式就是不用JSP,改用Themeleaf吧
***********************************************
做WEB项目,一定都用过JSP这个大牌。Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的。当你从一个传统的Spring MVC项目转入一个Spring Boot项目后,却发现JSP和view关联有些麻烦,因为官方不推荐JSP在Spring Boot中使用。在我看来,继续用这种繁杂的手续支持JSP仅仅只是为了简单兼容而已。
我们先来看看如何在SpringBoot中使用JSP ?
1. 在pom.xm中加入支持JSP的依赖
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency>
2. 在src/main/resources/application.properties文件中配置JSP和传统Spring MVC中和view的关联
# MVC spring.view.prefix=/WEB-INF/views/ spring.view.suffix=.jsp
3. 创建src/main/webapp/WEB-INF/views目录,JSP文件就放这里
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> Hello ${name} </body> </html>
4. 编写Controller
package com.chry.study;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/hello") public ModelAndView getListaUtentiView(){ ModelMap model = new ModelMap(); model.addAttribute("name", "Spring Boot"); return new ModelAndView("hello", model); } }
5. 编写Application类
package com.chry.study; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class WebApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WebApplication.class); } public static void main(String[] args) throws Exception { SpringApplication.run(WebApplication.class, args); } }
6. 以java application方式运行后,就可以访问http://locahost:8080/hello
================== 分割线 ==================================
以上代码pom.xml中的javax.servlet.jsp.jstl是用于支持JSP标签库的,在Web2.5的容器中没有问题,单当你的容器是Web3.0或以上版本时,就会出问题。 这是个非常坑爹的问题。
javax.servlet.jsp.jstl会自动加载依赖servlet-api-2.5.jar, 而且会在实际运行时把支持Web3.0的3.1版本的javax.servlet-api覆盖掉。即使你在pom.xml显示的在加入3.1版本的javax.servlet-api也没用。导致SpringBoot应用抛出Runtime exception运行错误。
这是一个不可调和的矛盾,要吗不用javax.servlet.jsp.jstl,要吗不用Web3.0。
但绝大多数情况下,jstl标签库不是必须的,而Web3.0是必须的。替代方式就是不用JSP,改用Themeleaf吧
相关文章推荐
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
- SpringBoot基础-如何在springboot中使用jsp
- SpringBoot项目如何访问jsp页面
- 使用 Gradle 给Spring boot打 jar ,同时也把JSP打进去.
- 如何使用eclipse搭建SpringBoot项目
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
- ssh整合系列博客——(3)在jsp中如何使用spring管理的bean
- Spring学习之使用标签来标记资源(@Component、@Repository、 @Service和@Controller)以及使用方式(包含如何在jsp中使用)
- (3)spring boot如何使用第三方json解析框架
- Spring Boot 使用JSP时,修改JSP不生效,需要重启的现象
- 在Spring Boot 应用中使用JSP开发网页
- 如何在Spring Boot项目使用参数校验
- Spring Boot如何使用Spring Security进行安全控制
- SpringBoot 中使用JSP
- spring-boot-starter-data-jpa 中的 Eaxmple 如何使用
- Spring boot(11) 使用jsp
- Spring-Boot中如何使用多线程处理任务
- Spring学习使用标签来标记资源(@Component、@Repository、 @Service和@Controller)和用法(包括如何jsp正在使用)
- 在Spring Boot中如何使用log4j记录日志