java之spring mvc之Restful风格开发及相关的配置
1. Restful : 表征状态状态转移。
传统 : url : http://localhost:8080/usersys/delete.do?user.id=12
Restful 风格:url : http://localhost:8080/usersys/12/delete.do;
Restful 风格的好处:数据更安全,简洁,效率更高,传递的数据更多。
2. Restful 使用
请求路径: http://localhost/restful/delete/122
Controller 处理:
@Controller public class HelloController { @RequestMapping("/delete/{id}") public String delete(@PathVariable("id")String id) { System.out.println("id==========="+id); return "forward:/index.jsp"; } }
在处理方法中可以获取到路径的数据。
注意:使用 restful 风格开发,web.xml中如果配置为 / ,那么要注意静态资源被拦截的问题。
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
如果静态资源被拦截,可以采用在 web.xml 中配置默认 servlet 来处理。默认配置要在 DispatcherServlet 之前配置
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern>
也可以在 springmvc 的配置文件中,配置 <mvc:resource> 来解决。
3.改变 springmvc配置文件的位置和名称,springmvc 配置文件默认在 WEB-INF 下,并且文件名是 DispatcherServelt 的名称-servlet.xml。在DispatcherServlet 提供了参数来进行改变:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 改变springmvc配置文件的路径及名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
4. 乱码解决 : 如果在 springmvc 遇到乱码,可以通过 springmvc 提供的乱码过滤器来解决 post 乱码。 get 乱码,通过服务器的配置来解决(server.xml中指定位置增加 useBodyEncodingForURI="true")。
<!-- 乱码解决 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>