版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38323645/article/details/82832892
springMVC中的参数传递
1 接收参数
1.1 @RequestParam接收
将表单传过来的username重命名为name
这种方式如果从地址栏进来且地址栏不输入要传的参数会报错400
@RequestMapping(value="/a")
public String hello(@RequestParam("uname") String name){
System.out.println("获取到的名字是"+name);
return "welcome";
}
可以设置required=false避免传入空参数时报错
@RequestMapping(value="/a")
public String hello (@RequestParam(value="uname",required=false ) String name){
}
用map接收参数,表单里面的name值不变,form表单提交
@RequestMapping("queryList")
public String queryEmployee(@RequestParam Map<String,Object> map,Model model){
String name = (String)map.get("employeeName");
1.2 直接接收
uname变量与表单传过来的名字一样,这种方式如果从地址栏进来且地址栏不输入要传的参数不会报错
@RequestMapping(value="/b")
public String hello2(String uname){
System.out.println("获取到的名字是"+uname);
return "welcome";
}
1.3 @PathVariable多级路径
(地址路径)http://localhost:8080/sc04/aaaa1/aaaa2/a.zyf
@RequestMapping(value="/{a1}/{a2}/a")//多级路径
public String hello(@PathVariable("a1") String str1,@PathVariable("a2") String str2){
System.out.println("a1"+str1);
System.out.println("a2"+str2);
return "welcome";
}
2 发送参数
2.1 放在map里面,返回ModelAndView
@RequestMapping(value="/c")
public ModelAndView hello3(){
Map<String, Object> map = new HashMap<String,Object>();
map.put("s1",new Student(1,"张三"));
map.put("idd", 100);
map.put("stt", "abc");
return new ModelAndView("welcome", map);
}
2.2 放在Model里面,返回String
@RequestMapping(value="/d")
public String hello4(Model model){
model.addAttribute("s1",new Student(1,"张云锋"));
model.addAttribute("idd", 100);
model.addAttribute("stt", "abc");
return "welcome";
}
3 ServletAPI
@RequestMapping(value="/a")//ServletAPI对象 它们依次放在各自的请求域中
public String qingqiuyu(HttpServletRequest request,HttpSession session){
ServletContext application =session.getServletContext();
request.setAttribute("a1", "aaaaaa1");
session.setAttribute("a2", "aaaaaa2");
application.setAttribute("a3", "aaaaaa3");
return "welcome";
}
@RequestMapping(value="/b")
public String qingqiuyu2(HttpServletResponse response) throws IOException{
PrintWriter out = response.getWriter();
out.print("aaaaaaaaaaaarrr");
out.print("bbbbbbbbbbbbbr");
out.flush();
out.close();
return null;
}
4 重定向
//重定向到某个页面 值传不了
@RequestMapping(value="/r")
public String redirect(){
return "redirect:/index.jsp";
}
//重定向到同个类中的某个方法 值传不了
@RequestMapping(value="/ff")
public String redirectToAction(HttpServletRequest request){
request.setAttribute("b1", "bbbbbbb1");
return "redirect:/gg.zyf";
}
@RequestMapping(value="/gg")
public String redirectToAction2(HttpServletRequest request){
System.out.println(request.getAttribute("b1"));//重定向过来的 获取不了值
return "welcome";
}
//重定向到其他类的某个方法 值传不了
@RequestMapping(value="/kk")
public String other(HttpServletRequest request){
request.setAttribute("b2", "bbbbbbb2");
return "redirect:/hello2/a.zyf";
}
5 转发
//转发到同个类中的某个方法 值传的了
@RequestMapping(value="/hh")
public String zhuangfa(HttpServletRequest request){
request.setAttribute("b1", "bbbbbbb1");
return zhuangfa2(request);//转发到同一个类中的某个action可以直接return方法名
}
@RequestMapping(value="/jj")
public String zhuangfa2(HttpServletRequest request){
System.out.println(request.getAttribute("b1"));//转发过来的 可以获取到值
return "welcome";
}
//转发到其他类的某个方法 值可以传的了
@RequestMapping(value="/ll")
public String other2(HttpServletRequest request){
request.setAttribute("b2", "bbbbbbb2");
return "forward:/hello2/a.zyf";
}