java rest 示例_springmvc Rest风格介绍及实现代码示例

简介

rest 即 representational state transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用,post, delete, put, get 分别对应 crud。spring3.0 开始支持 rest 风格的请求,是通过 org.springframework.web.filter.hiddenhttpmethodfilter 把 post 请求转化为 put 和 delete 请求。本次实验采用的是 spring4.0 。

hiddenhttpmethodfilter 源码

public static final string default_method_param = "_method";

@override

protected void dofilterinternal(httpservletrequest request, httpservletresponse response, filterchain filterchain)

throws servletexception, ioexception {

string paramvalue = request.getparameter(this.methodparam);

if ("post".equals(request.getmethod()) && stringutils.haslength(paramvalue)) {

string method = paramvalue.touppercase(locale.english);

httpservletrequest wrapper = new httpmethodrequestwrapper(request, method);

filterchain.dofilter(wrapper, response);

} else {

filterchain.dofilter(request, response);

}

}

从 hiddenhttpmethodfilter 的源码可以看出,spring 根据请求中的 _method 参数进行转化,因此如果想发起 rest 风格的 delete 或者 put 请求,只需要在表单中带上 _method 参数,并且把 _method 的值设置为 delete 或者 put(大写) 即可。详细例子如下:

在 web.xml 中配置 hiddenhttpmethodfilter

编写 handler 代码

编写页面

hiddenhttpmethodfilter

org.springframework.web.filter.hiddenhttpmethodfilter

hiddenhttpmethodfilter

/*

package rex.springmvc.handlers;

import org.apache.log4j.logger;

import org.springframework.stereotype.controller;

import org.springframework.web.bind.annotation.requestmapping;

import org.springframework.web.bind.annotation.requestmethod;

import org.springframework.web.bind.annotation.requestparam;

@requestmapping(value="/resttest")

@controller

public class resttesthandler {

private static final logger logger = logger.getlogger(resttesthandler.class);

private static final string success = "success";

@requestmapping(value="/restget/{id}", method=requestmethod.get)

public string restget(@requestparam(value="id", required=false) integer id){

logger.debug("restget:" + id);

return success;

}

@requestmapping(value="/restput/{id}", method=requestmethod.put)

public string restput(@requestparam(value="id", required=false) integer id){

logger.debug("restput:" + id);

return success;

}

@requestmapping(value="/restdelete/{id}", method=requestmethod.delete)

public string restdelete(@requestparam(value="id", required=false) integer id){

logger.debug("restdelete:" + id);

return success;

}

@requestmapping(value="/restpost", method=requestmethod.post)

public string restpost(){

logger.debug("restpost");

return success;

}

}

pageencoding="utf-8"%>

rest test

test rest get

type="submit" value="submit">

type="submit" value="submit">

注:handler 中 @requestparam 注解必须加上 required 参数,否则访问页面会出现400错误。

java rest 示例_springmvc Rest风格介绍及实现代码示例_第1张图片

总结

以上就是本文关于springmvc rest风格介绍及实现代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。

希望与广大网友互动??

点此进行留言吧!

你可能感兴趣的:(java,rest,示例)