话不多说,直接代码:

@Controller//控制器
@RequestMapping("/anno")//路径
public class DemoAnnoController {
/**
* 此方法未标明路径,因此使用类级别的路径/anno;produces可定制返回的response的媒体类型和字符集,或需要返回值是json对象。
* ResponseBody支持将返回值放在response体内,而不是返回一个页面,此注解返回数据,此注解可以放置在返回值前或者方法上。
* @param request
* @return
*/
@RequestMapping(produces = "text/plain;charset=UTF-8")
public @ResponseBody String index(HttpServletRequest request){
return "url:"+request.getRequestURI()+" can access";
}

/**
* PathVariable接收路径参数
* @param str
* @param request
* @return
*/
@RequestMapping(value="/pathvar/{str}",produces = "text/plain;charset=UTF-8")
public @ResponseBody String demoPathVar(@PathVariable String str,HttpServletRequest request){
return "url:"+request.getRequestURI()+" can access,str: "+str;
}
@RequestMapping(value = "/requestParam",produces = "text/plain;charset=UTF-8")
public @ResponseBody String passRequestParam(Long id,HttpServletRequest request){
return "url:"+request.getRequestURI()+" can access,id: "+id;
}
@RequestMapping(value = "/obj",produces = "application/json;charset=UTF-8")
@ResponseBody
public String passObj(DemoObj obj,HttpServletRequest request){
return "url:"+request.getRequestURI()+" can access, obj id: "+obj.getId()+" obj name:"+obj.getName();
}

/**
* 可以映射不同的路径到相同的方法
* @param request
* @return
*/
@RequestMapping(value = {"/name1","/name2"},produces = "text/plain;charset=UTF-8")
public @ResponseBody String remove(HttpServletRequest request){
return "url:"+request.getRequestURI()+" can access ";
}
}
@RestController//使用该注解,声明是控制器,并且返回数据时不需要@ResponseBody
@RequestMapping("/rest")
public class DemoRestController {
//返回json类型的数据
@RequestMapping(value = "/getjson",produces = {"application/json;charset=UTF-8"})
public DemoObj getjson(DemoObj obj){
return new DemoObj(obj.getId()+1,obj.getName()+"yy");
}
//返回xml类型的数据。
@RequestMapping(value = "/getxml",produces = {"application/xml;charset=UTF-8"})
public DemoObj getxml(DemoObj obj){
return new DemoObj(obj.getId()+1,obj.getName()+"yy");
}
}