springboot引用jsp

前言

jsp已经很久之前的东西了,但是很多现在的新项目对接老系统,有时候不得不通过jsp来传输数据,这里记录一下,我在新项目中整合jsp和引用外部jar遇到的问题和解决办法。
很多时候你在开发工具中(比如ide)中很正常,一打jar包单独运行就会出问题。
我这边新项目使用jeecg框架,也是普通的springboot项目。

访问jsp的问题

在这里插入图片描述
IDE中可以访问,打jar无法访问jsp页面。
解决办法:

 <build>
 		<plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 版本一定要是这个,否则还是404 -->
                <version>1.4.2.RELEASE</version>
            </plugin>
        </plugins>
        <resources>
            <!-- 打包时将jsp文件拷贝到META-INF目录下,解决jsp jar包下404问题 -->
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/webapp</directory>
                <!--注意此次必须要放在此目录下才能被访问到 -->
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

在这里插入图片描述
在这里插入图片描述
前后端一直有这个错误 Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/page.jsp]
解决办法:加入下方三个依赖。

	<dependency>
	  	 <groupId>javax.servlet</groupId>
	     <artifactId>javax.servlet-api</artifactId>
	 </dependency>
	 <dependency>
	     <groupId>javax.servlet</groupId>
	     <artifactId>jstl</artifactId>
	 </dependency>
	 <!-- tomcat的支持-->
	 <dependency>
	     <groupId>org.apache.tomcat.embed</groupId>
	     <artifactId>tomcat-embed-jasper</artifactId>
	 </dependency>

jsp中无法解析java类

我这里的原因很简单,是因为打jar包的时候没有把外部引用的包打进jar包里。
这样会一直报两个错误:
Jsp出现xxxx cannot be resolved to a type
Only a type can be imported. xxx res
项目结构如下:
在这里插入图片描述
pom中引用
在这里插入图片描述
即使这样,依然无法将lib中的包打入jar中,而且必须保证在这个文件夹中能找到外部jar。
在这里插入图片描述
这里虽然有,但是没有用。
在这里插入图片描述
解决办法:

  <plugins>
     <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 版本一定要是这个,否则还是404 -->
           <version>1.4.2.RELEASE</version>
           <configuration>
           		<!-- 保证引用的外部包被打进jar中 -->
               <includeSystemScope>true</includeSystemScope>
           </configuration>
       </plugin>
   </plugins>

至此,所有问题得以解决。

完整配置

	<dependency>
	  	 <groupId>javax.servlet</groupId>
	     <artifactId>javax.servlet-api</artifactId>
	 </dependency>
	 <dependency>
	     <groupId>javax.servlet</groupId>
	     <artifactId>jstl</artifactId>
	 </dependency>
	 <!-- tomcat的支持-->
	 <dependency>
	     <groupId>org.apache.tomcat.embed</groupId>
	     <artifactId>tomcat-embed-jasper</artifactId>
	 </dependency>
	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <!-- 版本一定要是这个,否则还是404 -->
                <version>1.4.2.RELEASE</version>
                <configuration>
                	<!-- 保证引用的外部包被打进jar中 -->
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <!-- 打包时将jsp文件拷贝到META-INF目录下 -->
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/webapp</directory>
                <!--注意此次必须要放在此目录下才能被访问到 -->
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

猜你喜欢

转载自blog.csdn.net/zwjzone/article/details/125661890