You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:42:29