今天搭建SSM框架的时候,从Controller跳转到JSP页面显示了页面源码。如下,
经过检查,发现Controller获取到了数据。问题出在核心分发器上,代码如下,
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<url-pattern>/*</url-pattern>会匹配*.jsp,导致进入DispatcherServlet 类进行分发,然后去寻找controller,接着找不到对应的controller就会报错,显示404错误。
而这里我显示源码的原因是在url和controller映射的配置文件中,加入了如下代码,
<!--静态页面,如html,css,js,images可以访问 -->
<mvc:default-servlet-handler />
<mvc:default-servlet-handler />,*.jsp文件会被当做静态文件显示为文本。就是说,<url-pattern>/*</url-pattern>匹配到的jsp页面去进行转发后,不找controller而是直接当文本显示。
解决方法就是让核心分发器不会匹配到*.jsp文件,代码如下,
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
修改后,运行结果正常