Spring MVC项目中JSP页面无法渲染直接输出源码的问题求助
解决Spring MVC中JSP源码直接输出而非渲染的问题
看起来你遇到的问题是DispatcherServlet的映射配置导致Tomcat没有机会解析JSP文件,直接把源码返回给浏览器了。我来帮你一步步排查解决:
核心原因
你的HomeAppInitializer里把DispatcherServlet映射成了/*,这个配置会让DispatcherServlet拦截所有请求,包括JSP文件的请求。而DispatcherServlet本身不会处理JSP的解析工作,它会把JSP文件当成普通的静态资源直接输出,所以浏览器看到的就是源码。
解决方案
1. 修改DispatcherServlet的映射规则
把getServletMappings()的返回值从"/*"改成"/",这样DispatcherServlet会作为默认Servlet处理所有请求,但会把JSP、静态资源等交给Tomcat的原生Servlet处理:
@Override protected String[] getServletMappings() { return new String[]{"/"}; // 替换原来的"/*" }
2. 确认JSP文件的位置匹配视图解析器配置
你的视图解析器配置了前缀/WEB-INF/和后缀.jsp,所以return "spittles"会指向/WEB-INF/spittles.jsp。请确保你的JSP文件确实放在src/main/webapp/WEB-INF/目录下,路径完全匹配。
3. 额外优化建议(非必须但推荐)
- 把JSP文件里的字符编码从
US-ASCII改成UTF-8,避免出现乱码问题:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - 检查pom.xml里的依赖,你已经添加了
jstl和servlet-api,这部分没问题,但可以去掉重复的junit依赖(你有两个相同的junit依赖),让pom更整洁。
验证修改
重新用tomcat7:run启动项目,访问http://localhost:8080/SpringWeb/home/spittles,现在Tomcat会正确解析JSP文件,渲染出带有当前时间的页面了。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

