1.关于web.xml使用"/*"来 dispatcherServlet 的url-pattern带来的问题:
警告: No mapping found for HTTP request with URI [/studymvc/WEB-INF/pages/login.jsp] in DispatcherServlet with name 'springmvc',
浏览器页面mvc请求返回jsp报404
备注:使用/或者(*.mvc,*.json)配置url-pattern均无问题
原因:'/*' 错误的配置,会拦截*.jsp, *.jspx的请求, 使用这种配置最终要转发到一个JSP页面,仍然会由DispatcherServlet, 解析jsp地址, 不能根据jsp页面找到handler, 会报错
举例:http://localhost:8080/studymvc/loginController/login.mvc?id=1
<1>login.mvc请求,springmvc可以找到请求login.mvc的handler,即‘/WEB-INF/pages/login.jsp’;
<2>之后springmvc转发‘/WEB-INF/pages/login.jsp’静态资源请求, 同样被DispatcherServlet处理, 自然会找不到handler, No mapping. 所以请求会报404.
总结:
当DispatcherServlet配置为’/’, 将会覆盖default servlet, 将会处理所有其他Servlet都不处理的访问请求.所以DispatcherServlet不拦截拦截.jsp, .jspx.的请求, 一定有其他地方拦截了该请求, 但是仔细查找web.xml并没有发现其他的servlet啊!那一定是在容器中定义的啦~
果不其然, 在TOMCAT的%TOMCAT_HOME%/conf/web.xml中继承过来的JspServlet会处理该请求.
注意 tomcat虽说是web容器,但是只实现了jsp和default这两项servelet技术,对于其他的不能处理
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.关于处理json的问题的解决:引入相应的3个json的相关jar包,同时结合restcontroller相关配置
<jackson.version>2.6.7</jackson.version>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
参考文献:http://blog.youkuaiyun.com/FarAwayWL/article/details/69527392