Tomcat运行时为何会渲染JSP?Vue+Spring架构无需JSP渲染该如何配置?
关闭Tomcat/Spring JSP渲染的配置方案
分两种常用场景配置:
1. 普通Spring MVC + 外置Tomcat 场景
- 第一步:移除Spring MVC配置里的JSP视图解析器
如果你之前的Spring配置(XML或JavaConfig)里声明了InternalResourceViewResolver,直接删除该Bean的配置即可,示例的待删除配置参考:// JavaConfig 待删除代码 @Bean public InternalResourceViewResolver jspViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/jsp/"); resolver.setSuffix(".jsp"); return resolver; }<!-- XML配置 待删除代码 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> - 第二步:配置Tomcat禁止处理JSP请求
修改WEB-INF/web.xml,添加如下配置覆盖Tomcat默认的JSP Servlet映射:
也可以根据需求配置直接返回404,把上面的安全约束替换成自定义的错误页映射即可。<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>blockJSP</web-resource-name> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint /> <!-- 空权限约束,所有JSP请求直接返回403 --> </security-constraint>
2. Spring Boot 内置Tomcat 场景
- 直接在
application.properties/application.yml添加如下配置:# 禁用JSP视图解析 spring.mvc.view.prefix= spring.mvc.view.suffix= # 禁止Tomcat处理JSP server.tomcat.additional-tld-skip-patterns=*.jsp # 也可以直接排除JSP自动配置类,启动类上增加注解: # @SpringBootApplication(exclude = {JspAutoConfiguration.class}) - 如果不需要处理任何静态资源以外的页面请求,直接配置所有请求走静态资源处理器即可,Spring Boot默认会把
static目录下的Vue打包产物直接返回,不会走JSP渲染逻辑。
内容的提问来源于stack exchange,提问作者Captain_Bongcheon
相关产品推荐
相关产品推荐

