springmvc RequestMapping 请求及参数绑定

/**
     * 请求参数与实际参数不一致时,返回的字符串代表逻辑视图名
     * @param uname
     * @return
     */
    @RequestMapping("/handle1")
    public String handle1(@RequestParam("userName") String uname) {
        logger.info("uname:"+uname);
        return "success";
    }
/** 
     * @RequestHeader 获取报文头
     * @CookieValue 获取cookie
     * 
     * @param sessionId
     * @param accpetLanguage
     * @return
     */
    @RequestMapping("/handle2")
    public ModelAndView handle2(@CookieValue("JSESSIONID") String sessionId,@RequestHeader("Accept-Language") String accpetLanguage) {
        
        logger.info("---JSESSIONID:"+sessionId);
        logger.info("---Language:"+accpetLanguage);
        
        ModelAndView mv=new ModelAndView();
        mv.setViewName("success");
        mv.addObject("user",new User());        
        return mv;
    }

 

/**
     * 获取 ServletApi 对象作为入参
     * HttpServletRequest request,HttpServletResponse response,HttpSession session
     * @param request
     * @return
     */
    @RequestMapping("/handle4")
    public ModelAndView handle4(HttpServletRequest request,
            HttpServletResponse response,
            HttpSession session) {
        
        logger.info("request:"+request.getParameter("userName"));        
        ModelAndView mv=new ModelAndView();
        mv.setViewName("success");
        mv.addObject("user",new User());        
        return mv;        
    }
    

 

    /**
     * 了解
     * @CookieValue 映射一个Cookie值,属性同@RequestParam
     * @param sessionId
     * @return
     */
    @RequestMapping("/testCookeValue")
    public String testCookeValue(@CookieValue(value="JSESSIONID") String sessionId) {
        System.out.println(" sessionId:"+sessionId);
        return SUCCESS;
    }

 

@RequestMapping(value="/handle6")
    public String handle6(@RequestBody String requestBody) {
        logger.info("requestBody:"+requestBody);
        return "success";
    }
    
    @RequestMapping(value="/handle7/{imageId}")
    public byte[] handle7(@PathVariable("imageId") String imageId) throws IOException {
        logger.info("imageId:"+imageId);
        logger.info("imageId:"+this.getClass());
        Resource res=new ClassPathResource("/image.jpg");
        byte[] fileData=FileCopyUtils.copyToByteArray(res.getInputStream());
        return fileData;
    }

 

//ModelAndView 的使用
    @RequestMapping(value="/registerImpl")
    public ModelAndView registerImpl(User user) {
        ModelAndView mv=new ModelAndView();
        mv.setViewName("/user/registerSuccess");
        mv.addObject("user",user);
        return mv;
    }

 

/**
     * 使用占位符参数绑定
     * @param userId
     * @return
     */
    @RequestMapping(value="/{userId}")
    public ModelAndView showDetail(@PathVariable("userId") String userId) {
        ModelAndView mv=new ModelAndView();
        mv.setViewName("user/showDetail");
        mv.addObject("user",new User("123","test","pwd"));
        return mv;
    }

 

@Controller
@RequestMapping(value="/owners/{ownerId}")
public class UserPetController {
    
    private static Logger logger = Logger.getLogger(UserPetController.class);
    
    @RequestMapping("/pets/{petId}")
    public void findPet(@PathVariable String ownerId,@PathVariable String petId) {
        logger.info("ownerId:" + ownerId + " petId:"+petId);        
    }
}

 

/**
     * @RequestParam 来映射请求参数,
     * value 值即为请求参数的参数名
     * required 该参数是否必须 默认为true
     * defaultValue 请求参数的默认值
     * @param un
     * @param age
     * @return
     */
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam("userName") String un,@RequestParam(value="age",required=false,defaultValue="0") Integer age) {
        System.out.println("testRequestParam, username:"+un);
        System.out.println("testRequestParam, age:"+age);
        return SUCCESS;
    }    
/**
     * @PathVariable 可以来映射URL 中的占位符到目标方法的参数中
     * @param id
     * @return
     */
    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") long id ) {
        System.out.println("id:"+id);
        return SUCCESS;
    }

 

 

使用rest风格 ,web.xml  中加入

<!-- 配置rest HiddenHttpMethodFilter ,可以把Post请求,转为DELETE 或PUT请求-->
    <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
        
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-context.xml</param-value>
    </context-param>

 

/**
     * rest 接口
     * @param id
     * @return
     */
    @RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
    public String testRest(@PathVariable("id") long id) {    
        System.out.println("testRest GET:"+id);
        return SUCCESS;
    }
    
    @RequestMapping(value="/testRest",method=RequestMethod.POST)
    public String testRest() {    
        System.out.println("testRest Post");
        return SUCCESS;
    }    
    
    @RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
    @ResponseBody
    public String testRestDelete(@PathVariable("id") long id) {    
        System.out.println("testRest DELETE:"+id);
        return SUCCESS;
    }
    
    @RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)
    @ResponseBody
    public String testRestPut(@PathVariable("id") long id) {    
        System.out.println("testRest PUT:"+id);
        return SUCCESS;
    }

 

posted @ 2019-06-16 18:55  珂瑞  阅读(464)  评论(0)    收藏  举报