在最近整合ssm项目时,通过tomcat发布项目后一直无法访问控制器,但是能正常访问静态资源。困扰了我两三天。
网上查了下众说纷纭,在确定spring-mvc.xml配置无误后,项目正常启动,这时我们注意看打印的日志:
[org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'SpringMVC': initialization started
[org.springframework.web.context.support.XmlWebApplicationContext] - Refreshing WebApplicationContext for namespace 'SpringMVC-servlet': startup date [Fri May 17 14:58:31 CST 2019]; parent: Root WebApplicationContext
[org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [spring-mvc.xml]
[org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
[org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'SpringMVC': initialization completed in 777 ms
是的,我们的控制器没有被正确的mapping,再重新学习springmvc后发现在配置servlet时需要将其他的spring配置文件一同引入。即:
<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml,classpath:spring-mybatis.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
之后项目的控制器便可以正常mapping访问:
[org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [spring-mybatis.xml]
[org.springframework.beans.factory.config.PropertyPlaceholderConfigurer] - Loading properties file from class path resource [jdbc.properties]
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/implAdd],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public int com.julin.controller.UserController.add(java.lang.String,java.lang.String,java.lang.String)
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/login_check],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public int com.julin.controller.UserController.login(java.lang.String,java.lang.String)
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/showUser],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.julin.controller.UserController.toIndex(javax.servlet.http.HttpServletRequest,org.springframework.ui.Model)
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/tologin],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.julin.controller.UserController.toLogin()
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/checkCode],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.julin.controller.UserController.checkCode(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws javax.servlet.ServletException,java.io.IOException
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/user/toAdd],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.julin.controller.UserController.toAdd()