springMVC中的参数传递

版权声明:本文为博主原创文章,未经博主允许不得转载。 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";
}

猜你喜欢

转载自blog.csdn.net/weixin_38323645/article/details/82832892