MVC——04 字符编码过滤器&传参

字符编码过滤器

1.在 web.xml 中配置 Filter

<!-- 字符编码过滤器 --> 
<filter> 
	<filter-name>encoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter
	</filter-class> 
	<init-param> 
	<param-name>encoding</param-name> 
	<param-value>utf-8</param-value> 
	</init-param> </filter> 
<filter-mapping> 
	<filter-name>encoding</filter-name> 
	<url-pattern>/*</url-pattern> 
</filter-mapping>

传参

  1. 把内容写到方法(HandlerMethod)参数中,SpringMVC 只要有这个内容,注入内容
  2. 基本数据类型参数

默认保证参数名称和请求中传递的参数名相同

@Controller 
public class DemoController { 
	@RequestMapping("demo") 
	public String demo(String name,int age){ 
	System.out.println("执行 demo"+" "+name+" "+age);
	return "main.jsp";
	}
}

如果请求参数名和方法参数名不对应,使用@RequestParam()赋值

@RequestMapping("demo") 
public String demo(@RequestParam(value="name1") String name
,@RequestParam(value="age1")int age){ 
System.out.println("执行 demo"+" "+name+" "+age); 
return "main.jsp"; 
}

如果方法参数是基本数据类型(不是封装类)可以通过@RequestParam 设置默认值
注:防止没有参数时 500

@RequestMapping("page") 
public String page(@RequestParam(defaultValue="2") int pageSize,
@RequestParam(defaultValue="1") int pageNumber){ 
System.out.println(pageSize+" "+pageNumber); 
return "main.jsp"; 
}

如果强制要求必须有某个参数

@RequestMapping("demo2") 
public String demo2(@RequestParam(required=true) String name){ 
System.out.println("name 是 SQL 的查询条件,必须要传 递 name 参数"+name); 
return "main.jsp"; 
}
  1. HandlerMethod 中参数是对象类型
    请求参数名和对象中属性名对应(get/set 方法)
@RequestMapping("demo4") 
public String demo4(People peo){ 
return "main.jsp"; 
}

复杂参数

  1. 请求参数中包含多个同名参数的获取方式
    复选框传递的参数就是多个同名参数
@RequestMapping("demo5") 
public String demo5(String name,int age
,@RequestParam("hover")List<String> abc){ 
System.out.println(name+" "+age+" "+abc); 
return "main.jsp"; 
}
  1. 请求参数中对象.属性格式
    ①jsp 中代码
<input type="text" name="peo.name"/> 
<input type="text" name="peo.age"/>

②新建一个类
对象名和参数中点前面名称对应,生成get和set方法,toString方法

public class Demo { private People peo;}

③控制器

@RequestMapping("demo6") 
public String demo6(Demo demo){ 
System.out.println(demo); return "main.jsp"; 
}
  1. 在请求参数中传递集合对象类型参数
    ①jsp 中格式
<input type="text" name="peo[0].name"/> 
<input type="text" name="peo[0].age"/> 
<input type="text" name="peo[1].name"/> 
<input type="text" name="peo[1].age"/>

②新建类

public class Demo {
private List<People> peo;
}

③控制器

@RequestMapping("demo6") 
public String demo6(Demo demo){ 
System.out.println(demo); 
return "main.jsp"; 
}

restful 传值方式

  1. 作用:简化 jsp 中参数编写格式
    原本在index.jsp中进行如下写法
<a herf="demo7?id=123&name=abc">跳转</a>
  1. 在 jsp 中设定特定的格式
<a href="demo8/123/abc">跳转</a>
  1. 在控制器中
    ①在@RequestMapping 中一定要和请求格式对应
    注:{名称} 中名称自定义名称
    ②新加注解@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找
@RequestMapping("demo8/{id1}/{name}") 
public String demo8(@PathVariable String name,
@PathVariable("id1") int age){ 
System.out.println(name +" "+age); 
return "/main.jsp"; 
}
发布了167 篇原创文章 · 获赞 15 · 访问量 6177

猜你喜欢

转载自blog.csdn.net/Re_view/article/details/100160630