1. 如果tomcat启动正常的话,就检查springMVC的配置,如果tomcat启动 都报错,就找原因去吧。
2. 地址不正确或没有响应
1) 检查Controller类上是否有@Controller注解。@RequestMapping加了没有,是不是在类上面加了父路径了?
2) 检查SpringMVC的配置文件是否扫描了Controller所在的包
- <!--扫描Controller所在的包-->
- <context:component-scan base-package="com.ssm.blog.controller">
- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
如果controller中返回的是index.jsp,那么SpringMVC就会再后面再追加一个.jsp,变成index.jsp.jsp导致页面找不到。
- @Controller
- @RequestMapping("/aa")
- public class MYController {
- @RequestMapping("/blog.html")
- public String page() {
- return "index.jsp";
- }
- }
这段代码会到webapp下找/aa/index.jsp这个文件,因为controller上有父路径。如果返回值前面加上/
- @Controller
- @RequestMapping("/aa")
- public class MYController {
- @RequestMapping("/blog.html")
- public String page() {
- return "/index.jsp";
- }
- }
4)查看视图解析器是否配置正确
- <!-- 配置视图解析器-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/page/"></property><!--前缀-->
- <property name="suffix" value=".jsp"></property><!--后缀-->
- </bean>
- @RequestMapping("/blog.html")
- public String page(){
- return "index.jsp";
- }
另外视图解析器的prefix是前缀,这段代码加上视图解析器后,运行结果是返回/page/index.jsp。查看一下webapp目录下是否有这个页面,路径是否正确。
404的时候控制台不会报错,但是log4j可以看到运行的过程:
2018-01-06 13:55:29,773 DEBUG [org.springframework.web.servlet.view.JstlView] -Forwarding to resource [/page/index.jsp] in InternalResourceView 'index'
2018-01-06 13:55:29,781 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Successfully completed request
一般情况如果Controller的类上加了@ResuqstMapping("/aa") 如果controller中的方法返回的视图地址前面没加/的话,就会是相对于aa的路径
5) ajax的请求响应是404
ajax一般要求返回的是json,看一下controller的方法上有没有加@ResponseBody注解
springMVC的配置文件中是否配置了json转换器
- <!--配置返回值转换器-->
- <bean id="contentNegotiationManagerFactoryBean"
- class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
- <property name="favorPathExtension" value="false"/>
- <property name="favorParameter" value="false"/>
- <property name="ignoreAcceptHeader" value="false"/>
- <property name="mediaTypes">
- <map>
- <entry key="json" value="application/json"/>
- </map>
- </property>
- </bean>
- <mvc:annotation-driven content-negotiation-manager="contentNegotiationManagerFactoryBean"/>