1.普通Springboot不支持 jsp之前,打成jar 包时遇到 提示找不到主类和没有主清单属性,说明没按照springboot的打包方式打包,解决有两种情况
第一种,
在pom文件中引入了 <parent></parent>标签的
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
那么只需要在<plugins></plugins>标签中加入springboot的打包方式的插件就可以
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
然后mvn clean package 就可以在target文件中生成jar 了,就可以直接java -jar xxxxx.jar 方式运行了
第二种
直接在 <dependencies></dependencies>中引入jar包,并没有引入<parent></parent>的
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.5.RELEASE</version>
</dependency>
</dependencies>
需要在spring-boot-maven-plugin时加些设置,如下
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.5.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
然后打包 运行
二,让springboot 支持jsp 并打包,分为打成jar包和打成war包两种
先让他支持jsp
要支持jsp需要引入tomcat支持jsp的解析器,以及支持jsp语法的jar包
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.34</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
然后你的jsp文件要放在哪儿呢,按照springboot源码里的写死的,只能放在这几个地方,下面的源码
首先
点进去
再点进去
也就是只能放在这几个位置,他才会初始化解析器,在此我只想说,这尼玛写死一点都不是spring的风格,后面看看能不能动一动,也就是这三种
一般都是src/mian/app这种,毕竟是传统老web开发者了
这里面会有一个问题就是新建webapp/WEB-INF之后,创建jsp文件没有提示,也无法jsp进行编译检查
这样做就是有提示了,放个网图
然后就可以在jsp文件下创建jsp文件了。
jsp文件创建好了,那么要让请求和视图联系起来,还得配置视图解析器
spring: mvc: view: suffix: .jsp prefix: /WEB-INF/jsp/
Controller里面如下,类上用@Controller注解不要用@RestController注解
@RequestMapping("/index") public String index(HttpServletRequest request){ request.setAttribute("appName","eureka_client"); log.info("index..."); return "index"; }
然后就可以启动访问了
以上面这种方式支持jsp的话,打成war包可以直接java -jar XXXX.war访问jsp ,但是打成jar的话,就需要在<build></build>加入如下配置
<resources>
<resource>
<!-- 打包时将jsp文件拷贝到META-INF目录下-->
<!-- 指定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>
才能打成jar包访问