springMVC rest风格

1.dispatcherServlet的配置

	<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc-ftl.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

注:<url-pattern>/</url-pattern>不能指定后缀名

2. 使servlet可以操作PUT和DELETE

    <!-- 支持http的PUT和DELTE操作 --> 
    <filter>
        <filter-name>httpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>httpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3.controller示例

@Controller
@RequestMapping("/user/")
public class UserController 
{

	@RequestMapping(value="index", method=RequestMethod.GET, produces={"application/json;charset=UTF-8"})
	public ModelAndView index()
	{
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("home");
		return modelAndView;
	}

	@RequestMapping(value="user/{id}", method=RequestMethod.GET, produces={"application/json;charset=UTF-8"})
	@ResponseBody
	public User getUser(@PathVariable("id") String userId)
	{
		System.err.println("查询用户信息:" + userId);
		return new UserBuilder().setUserId(userId).setUserName("测试").toUser();
	}

	@RequestMapping(value="user", method=RequestMethod.POST, produces={"application/json;charset=UTF-8"})
	@ResponseBody
	public User addUser(String userId, String userName, int userAge)
	{
		System.err.println("新增用户信息:" + userId);
		return new UserBuilder().setUserId(userId).setUserName(userName).setUserAge(userAge).toUser();
	}

	@RequestMapping(value="user", method=RequestMethod.PUT, produces={"application/json;charset=UTF-8"})
	@ResponseBody
	public User editUser(String userId, String userName, int userAge)
	{
		System.err.println("修改用户信息:" + userId);
		return new UserBuilder().setUserId(userId).setUserName(userName).setUserAge(userAge).toUser();
	}

	@RequestMapping(value="user/{id}", method=RequestMethod.DELETE, produces={"application/json;charset=UTF-8"})
	@ResponseBody
	public User deleteUser(@PathVariable("id") String userId)
	{
		System.err.println("删除用户信息:" + userId);
		return new UserBuilder().setUserId(userId).toUser();
	}
}

4.js示例

   <script type="text/javascript">
   		function fnQuery(){
   		    $.ajax({
	             type: ‘GET‘,
	             url: ‘${request.contextPath}/user/user/111‘,
	             async: true,
	             data: {},
	             dataType: "json",
	             success: function(data){
	                alert(JSON.stringify(data));
	             },
	             error:function(msg){
	                alert(JSON.stringify(msg));
	             }
	         });
	     }
   		function fnAdd(){
   		    $.ajax({
	             type: ‘POST‘,
	             url: ‘${request.contextPath}/user/user‘,
	             async: true,
	             data: {
	                ‘userId‘:‘123‘,
	                ‘userName‘:‘测试测试测试测试‘,
	                ‘userAge‘:88,
	             },
	             dataType: "json",
	             success: function(data){
	                alert(JSON.stringify(data));
	             },
	             error:function(msg){
	                alert(JSON.stringify(msg));
	             }
	         });
	     }
   		function fnEdit(){
   		    $.ajax({
	             type: ‘POST‘,
	             url: ‘${request.contextPath}/user/user‘,
	             async: true,
	             data: {
	                _method:‘PUT‘,
	                ‘userId‘:‘55555‘,
	                ‘userName‘:‘修改试测试测试‘,
	                ‘userAge‘:48,
	             },
	             dataType: "json",
	             success: function(data){
	                alert(JSON.stringify(data));
	             },
	             error:function(msg){
	                alert(JSON.stringify(msg));
	             }
	         });
	     }
	     
   		function fnDelete(){
   		    $.ajax({
	             type: ‘POST‘,
	             url: ‘${request.contextPath}/user/user/111‘,
	             async: true,
	             data: {
	                _method:‘DELETE‘,
	             },
	             dataType: "json",
	             success: function(data){
	                alert(JSON.stringify(data));
	             },
	             error:function(msg){
	                alert(JSON.stringify(msg));
	             }
	         });
	     }
	</script>

注:PUT与DELETE的特殊处理,需要在参数中增加_method.

参考地址:http://www.cnblogs.com/qixiaoyizhan/p/5864233.html

时间: 2024-10-05 19:50:12

springMVC rest风格的相关文章

SpringMVC REST 风格静态资源访问配置

1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-

springmvc restful风格操作

ssm框架 controller: package com.sgcc.controller; import java.util.ArrayList; import java.util.List; import org.omg.CORBA.PUBLIC_MEMBER; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework

POSTMAN测试SpringMVC RESTFul风格的服务端接口始终得不到值

后台接口中接收参数使用DataObject(包含一个String类型的属性data)     ServletRequestDataBinder binder = new ServletRequestDataBinder(new DataObject());     binder.bind(request); 然后再POSTMAN中使用如图的方式传参: 可以发现得到的返回值是null,而且根据后台调试,确实没有得到传入的参数.切回x-www-form-urlencoded模式下然后将此对象用如下方

myBatis,Spring,SpringMVC三大框架ssm整合模板

整合步骤 创建web工程 导入整合所需的所有jar包 编写各层需要的配置文件 1) mybatis的全局配置文件 <configuration> <!-- 批量别名的设置 -->    <typeAliases>        <package name="cn.ssm.pojo"/>    </typeAliases>     </configuration> 2) spring管理mybatis的配置文件 &l

思考技术之源

技术: 实现预定目的的具体可执行的方法.步骤.流程.工具等的聚合. 技术之源: 思想在不同场景和环境下的变通.实践和实现. 云计算:资源和服务的集中化.虚拟化管理在IT基础设施建设上的体现: 大数据:试图从统计学角度通过海量数据分析来揭示自然和社会的心理.行为和活动的规律,从而更好地预测和决策. HTML5,模板引擎,语言与编译器: “标记-解释器”思想在前端开发中的应用.html/js/css 本质上是一套完善的标记系统,而浏览器是其解释者.标记系统可以从语义上更加智能化. web框架: 关注

Restful风格API接口开发springMVC篇

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口. 在Restful风格中,现

springmvc的RESTful风格

springmvc对RESTful得支持RESTful架构,就是目前最流行得一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以挣得到越来越多网站的采用. RESTful(即Representational State Transfer变现层状态转换)其实是一个开发理念,是对http 的很好的诠释. 状态转换(State Transfer) 客户端用到的手段,只能是HTTP协议.具体来说就是HTTP协议里面四个表示操作方式的动词:GET/POST/PUT/DELETE,分别对应四中

springMVC的rest风格的url请求

rest是一个架构风格,用url来访问网络上的任何资源.rest的一种思想就是用http中的动作get,post,put,delete,来进行增删改查. 这里介绍的是springMVC的rest请求. 不包含webservice的JAX-RS的例子.rest风格的webservice可以用cxf框架进行实现.也很简单. 1 首先准备web项目需要的jar包,也就是springMVC所依赖的jar: 2 创建一个动态的web工程:这里首先需要配置web.xml文件注册springMVC的前端控制器

SpringMVC(六) RequestMapping 路径中ant风格的通配符

SpringMVC支持路径中包含ant风格的通配符,常用的几种通配符及意义如下: ? 任意一个字符 * 任意多个字符 ** 匹配多层路径 测试控制器代码: package com.tiekui.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public c