springboot学习入门简易版五---springboot2.0整合jsp(11)

springboot对jsp支持不友好,内部tomcat对jsp不支持,需要使用外部tomcat,且必须打包为war包。

1 创建maven项目

注意:必须为war类型,否则找不到页面。

且不要把jsp页面存放在resources(原因:可能被别人访问,其次不在classes类路径中),因此,一般自行创建目录存放(一般/WEB-INF/下。

 2 pom文件

<packaging>war</packaging> <!-- 注意为war包!!! -->

   <!-- spring-boot-starter-parent 整合第三方常用框架依赖信息(包含各种依赖信息) -->
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.RELEASE</version>
  </parent>

  <!-- spring-boot-starter-web springboot整合springmvc web
      实现原理:maven依赖继承关系,相当于把第三方常用maven依赖信息,在parent项目中已封装
  -->
  <dependencies>
      <!-- 根据需要选择parent中封装的第三方框架 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <!-- 不需要写版本号,因为在parent中已封装好版本号 -->
      </dependency>
      <!-- tomcat -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <!-- SpringBoot 外部tomcat支持 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <!-- 解决No Java compiler available for configuration options compilerClassName报错
        https://www.mkyong.com/spring-boot/spring-boot-web-jsp-no-java-compiler-available/
     -->
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
        <scope>provided</scope>
    </dependency>
  </dependencies>

注意点:

1)<packaging>war</packaging> <!-- 注意为war包!!! -->

2)No Java compiler available for configuration options compilerClassName报错 :

解决办法引入ecj依赖

<dependency>
  <groupId>org.eclipse.jdt.core.compiler</groupId>
  <artifactId>ecj</artifactId>
  <version>4.6.1</version>
  <scope>provided</scope>
 </dependency>

3 创建application.properties

#springmvc 配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

4 在webapp目录下创建WEB-INF/jsp

如上图,新建index.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
springboot 整合 jsp
</body>
</html>

5 创建JspController类和启动类JspApp

@SpringBootApplication
public class JspApp {

    public static void main(String[] args) {
        SpringApplication.run(JspApp.class, args);
    }

}
@Controller //注意不能使用@RestController(无视图层),否则无法找到对应的jsp页面
public class JspController {

    @RequestMapping("/index")
    public String index() {
        return "index";//对应jsp文件名称即index.jsp
    }

}

6 运行启动类JspApp

访问:http://localhost:8080/index

启动后访问报错:

java.lang.IllegalStateException: No Java compiler available for configuration options compilerClassName: [null] and compiler: [null]

参考:https://www.cnblogs.com/ming-blogs/p/10283764.html

添加

<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>

依赖即可

再次访问,页面返回springboot 整合 jsp

https://www.mkyong.com/spring-boot/spring-boot-web-jsp-no-java-compiler-available/

git代码:https://github.com/cslj2013/springboot2.0_for_jsp.git

原文地址:https://www.cnblogs.com/cslj2013/p/10852272.html

时间: 2024-11-05 22:41:24

springboot学习入门简易版五---springboot2.0整合jsp(11)的相关文章

springboot学习入门简易版三---springboot2.0启动方式

2.4使用@componentscan方式启动 2.4.1 @EnableAutoConfiguration 默认只扫描当前类 @EnableAutoConfiguration 默认只扫描当前类,如果再新建一个indexcontroller类,将无法被扫描. 新建indexcontroller类: /** * 测试index类 * @author admin * */ @RestController public class IndexController { @RequestMapping("

springboot学习入门简易版八---springboot2.0多环境配置、整合mybatis mysql8+(19-20)

2.11 SpringBoot多环境配置(19)  application.properties中配置 Spring.profiles.active=prd 配置环境: Application-dev.properties 开发环境 Application-test.properties 测试环境 Application-uat.properties 用户测试环境 Application-prd.properties 生产环境 2.12 SpringBoot整合mybatis(20) 注意:使用

springboot学习入门简易版一---springboot2.0介绍

1.1为什么用springboot(2) 传统项目,整合ssm或ssh,配置文件,jar冲突,整合麻烦.Tomcat容器加载web.xml配置内容 springboot完全采用注解化(使用注解方式启动springmvc,没有web.xml,springmvc3后采用注解方式启动springmvc),简化配置,快速整合第三方框架(maven依赖继承),内嵌http服务器(tomcat,jetty,通过java创建tomcat),构建微服务应用.最终以java应用程序进行执行. 1.2Springb

springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层

2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static  /public  /resources  /META-INF/resources 可以在src/main/resources目录下创建static,在该位置放置一个图片文件. 启动程序后,尝试访问http://localhost:8080/D.JPG,如能显示图片,配置成功. 2.5 SpringBoot整合freemarker视图

springboot学习入门简易版七---springboot2.0使用@Async异步执行方法(17)

1启动类开启异步调用注解 @SpringBootApplication @EnableAsync //开启异步调用 public class StartApplication { 不开启则异步调用无效 2编写异步调用方法 @RestController public class AsyncController { private final static Logger logger=LoggerFactory.getLogger(WebLogAspect.class); @Autowired p

项目ITP(五) spring4.0 整合 Quartz 实现任务调度

前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了下,搞了个小样例给大家. 正文 spring4.0 整合 Quartz 实现任务调度.这是期末项目的最后一篇,剩下到暑假吧.  Quartz 介绍 Quartz is a full-featured, open source job scheduling service that can be in

SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务

本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部

SpringBoot2.0整合fastjson的正确姿势

SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将JackSon换成fastjson,因此自己来实践一下SpringBoot2.0和fastjson的整合,同时记录下来方便自己后续查阅. 一.Maven依赖说明 SpringBoot的版本为: <version>2.1.4.RELEASE</version> 在pom文件中添加fastjson的依赖:

SpringBoot2.0应用(三):SpringBoot2.0整合RabbitMQ

如何整合RabbitMQ 1.添加spring-boot-starter-amqp <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.添加配置 spring.rabbitmq.host=localhost spring.rabbitmq.po