Spring获取请求参数非常简单,只要用到 @RequestParam 注解就可以了
如果不指定请求 method 的话,无论是 get 还是 post 参数都可以轻易获取到
代码是下面这样:
package com.learn.springMVCDemo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class RequestController { @RequestMapping("requestDemo") public String doRequest(Model model, @RequestParam(name="info", defaultValue = "some information") String info) { model.addAttribute("info", info); return "hello"; } } 复制代码
在这段代码中 @RequestParam 注解的括号中 name 表示参数名, defaultValue 指明默认的参数值。
GET方法请求这个页面: 访问地址 http://localhost:8080/LearnSpringMVCDemoFirst_war/requestDemo?info=helloWorldFromGETMethod
运行效果:
POST方法请求这个页面:
访问地址 http://localhost:8080/LearnSpringMVCDemoFirst_war/
提交表单
运行结果
重定向的时候只要在返回的时候加上 redirect 就可以了:
package com.learn.springMVCDemo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class RedirectController { @RequestMapping("redirect") public String redirectDemo(Model model) { model.addAttribute("message", "redirectInfo"); //重定向 return "redirect:/demo"; } } 复制代码
上面的代码就是重定向到 /demo 页面了。
访问地址: localhost:8080/LearnSpringMVCDemoFirst_war/redirect
package com.learn.springMVCDemo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class PathVariableController { @RequestMapping("path/{prefix}/{name}/{suffix}") public ModelAndView PathDemo(Model model, @PathVariable(value = "prefix") String prefix, @PathVariable(value = "name") String name, @PathVariable(value = "suffix") String suffix) { ModelAndView mv = new ModelAndView("hello"); mv.addObject("message","website URI path"); model.addAttribute("prefix", prefix); model.addAttribute("name", name); model.addAttribute("suffix", suffix); return mv; } } 复制代码
在 @RequestMapping 的括号中固定一个以上的路径名称,然后给分固定的路径名称直接加上大括号,在请求映射的方法参数中加上 @PathVariable 注解的参数中,按照先后顺序一一对应就可以获取到路径名称。
运行结果:
@RequestMapping("ResponseBody") @ResponseBody public String RequestBody() { return "request body message!!!"; } 复制代码
在请求映射方法前直接加上 @ResponseBody 注解,那么返回的就不是视图,而直接是ResponseBody
运行结果: