关于springMVC传值

关于springMVC传值

前言:
建议在web.xml中加上 springMVC的字符编码过滤器



    encoding
    org.springframework.web.filter.CharacterEncodingFilter
    
    
        encoding
        utf-8
    
    



    encoding
    
    /*

这个字符编码过滤器是针对post请求的

准备一个user类(这里 属性名一定要遵循小驼锋命名法 因为一会使用对象传递参数的时候 springMVC 是根据属性的get set方法 设取值的 多的不管首字母与第二个绝对不能取大写

private String name;
private int age;
private char sex;
private ArrayList hobbies;

public char getSex() {
	return sex;
}
public void setSex(char sex) {
	this.sex = sex;
}
public ArrayList getHobbies() {
	return hobbies;
}
public void setHobbies(ArrayList hobbies) {
	this.hobbies = hobbies;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}

最基本的数据传递

controller

@RequestMapping("userAdd.do")
	public String userAdd(String name,String sex,String[] hobbies,int age) {
		System.out.println("name:"+name);
		System.out.println("sex:"+sex);
		System.out.println("hobbies:"+hobbies);
		System.out.println("age:"+age);
		return "success";
	}

jsp

这里只需要记住 我们input里面的name是什么 在 controller的方法里面需要什么就填什么参数,类型得匹配(接收不了可能会出现400)



如果我们需要获得httpRequest直接在controller的方法中加上就好

详情点击查看

@RequestMapping("/test.do")
public String test(HttpRequest request) {
	HttpHeaders headers = request.getHeaders();
	return "success";
}

HandlerMethod参数的注解 @RequestParam()

public String userAdd(@RequestParam(value="name1") String name,String sex,String[] hobbies,int age) {
	System.out.println("name:"+name);
	System.out.println("sex:"+sex);
	System.out.println("hobbies:"+hobbies);
	System.out.println("age:"+age);
	return "success";
}
  1. 在方法对应的参数之前添加@RequestParam(value=“参数名称”)注解就可以实现给参数取别名
  2. 注意,这里的value的值要和jsp页面的name相同
  3. 当@RequestParam()注解括号里面只有value时,可以将注解简化为@RequestParam(“参数名称”)(示例里面的参数age)
  4. 在参数前添加注解@RequestParam(defaultValue=“参数的默认值”)就可以给参数一个默认值,参数的默认值是defaultValue的值
  5. 当我们不给出这个参数的值时,该参数就取默认值
  6. 在参数前添加注解@RequestParam(required=true)设置参数为必须值


请求参数为对象名.属性的方式(推荐)
这里在上面讲过属性名前两个字母绝对不能大写,必须给每个属性加上对应的get set方法 格式也不能自定义


jsp


controller
@RequestMapping("userAdd.do")
	public String userAdd(User user) {
		System.out.println(user.toSring);
		return "success";
	}


当然也还有我们的restful风格传值方式
详情点击

@RequestMapping("userAll.do/{page}/{count1}")
	public ModelAndView userLidt(@PathVariable int page,@PathVariable(value="count1") String count) {
		System.out.print("page:"+page,"count:"+count);
		return mva;
	}
  1. 需要使用到请求映射注解——@RequestMapping,这个注解会将 HTTP 请求映射到SpringMVC控制器的处理方法上。你只需要像这样配置这个注解:@RequestMapping(“控制器名称/{XXX}/{XXX}”)。其中,每一个{XXX}表示URL请求中的参数的占位符。
  2. 在每个参数之前需要添加注解@PathVariable。这个注解可以将请求的URL中的参数映射到控制器处理方法的参数上
  3. 如果请求中的参数名和注解里面的参数名不一致,需要给注解@PathVariable一个value,这个value的值要和请求的参数名相同(上面的参数age,在注解里面的名称是count1,类似于给控制器里面的参数取一个别名)

你可能感兴趣的:(springMVC)