经常有朋友问我,平时都是使用spring mvc,打包成战争包发布到tomcat上,如何快速到切换到弹簧引导的战争或者jar包上吗?
先来看看传统的战争包样式是什么样子的?
<强> 强>
可以看到webapp/资源文件存放css/js/html等静态文件,- inf存放jsp动态文件。
对应的配置文件
@EnableWebMvc//mvc:注解驱动的 @ configuration @ComponentScan com.xxx ({”。网络”}) 公开课SpringWebConfig延伸WebMvcConfigurerAdapter { @Override 公共空间addResourceHandlers (ResourceHandlerRegistry注册表){ registry.addResourceHandler(“/资源/* *”).addResourceLocations(“/资源/?; } @ bean 公共InternalResourceViewResolver viewResolver () { InternalResourceViewResolver viewResolver=new InternalResourceViewResolver (); viewResolver.setViewClass (JstlView.class); viewResolver.setPrefix (“/web - inf/视图/jsp/?; viewResolver.setSuffix (jsp); 返回viewResolver; } }
对xml的应配置如下:
& lt;豆类xmlns=" http://www.springframework.org/schema/beans " xmlns:上下文=" http://www.springframework.org/schema/context " xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns: mvc=" http://www.springframework.org/schema/mvc " xsi: schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd”比; & lt;上下文:component-scan基础包=" com.xxxx。网络”/比; & lt; bean类=皁rg.springframework.web.servlet.view.InternalResourceViewResolver”比; & lt;属性名=" viewClass " value=" https://www.yisu.com/zixun/org.springframework.web.servlet.view.JstlView "/比; & lt;属性名="前缀" value=" https://www.yisu.com/WEB-INF/views/jsp/"/比; & lt;属性名="后缀" value=" https://www.yisu.com/zixun/.jsp "/比; & lt;/bean> & lt; mvc:资源映射="/资源/* *”位置="/资源//比; & lt; mvc:注解驱动/比; & lt;/beans>
jar的结构,春天尽量避免jsp的动态文件,而是使用如Thymeleaf, FreeMarker等模板引擎,因为jsp有很多限制。
28.4.5 JSP的局限性
Spring运行时启动应用程序,使用嵌入式servlet容器(打包为一个可执行档案),有一些限制在JSP支持。
Jetty和Tomcat,它应该工作如果你使用战争包装。一个可执行的战争将在启动java jar时,并将可部署到任何标准容器。jsp使用一个可执行jar时不支持。
暗潮不支持jsp。
创建一个自定义的错误。jsp页面不覆盖默认的视图用于错误处理。应该使用自定义的错误页面。
引用>
其实,通过上面的结构,我们可以看的出,弹簧引导的标准规格还是不建议使用jsp的推荐使用Thymeleaf, FreeMarker等模板引擎,然后所有的静态文件同样存储在资源下面,可以使用代码配置动态代码
@ configuration @EnableWebMvc 公开课SpringConfig { @ bean 公共InternalResourceViewResolver viewResolver () { InternalResourceViewResolver viewResolver=new InternalResourceViewResolver (); viewResolver.setPrefix (“/web - inf/视图/?; viewResolver.setSuffix (jsp); 返回viewResolver; } }
或者静态属性配置
spring.mvc.static-path-pattern=/资源/* *来自定义配置。
也可以使用静态文件动态化
spring.resources.chain.strategy.content.enabled=true spring.resources.chain.strategy.content.paths=/* * spring.resources.chain.strategy.fixed.enabled=true spring.resources.chain.strategy.fixed.paths=/js/lib/spring.resources.chain.strategy.fixed.version=v12弹簧引导打包成战争包的页面如何存放