logo头像

一路过来,不过游牧自己。。

SSM之SpringMVC(四)


那么继续,抓住6月份的尾巴继续努力!话说最近在思考要不要尝试用英文去写博客,但是感觉英文底子还是不够,做罢,看不懂就糟了。。。哈哈哈,本节就要降到mvc中的数据处理!

4、数据的处理

(1)提交的数据的处理

a)提交的域名称和处理方法的参数一致即可。

例如

1
2
3
4
5
6
7
8
9
10
11
12
@Controller
public class HelloController {

public HelloController() {
System.out.println("hello constructor");
}
@RequestMapping("/hello")
public String hello(String name){
System.out.println(name);
return "index.jsp";
}
}

这时候请求数据的方式变成这样:

1
localhost:8080/data/hello.do?name=zhangsan

b)如果域名称和参数名称不一样呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Controller
public class HelloController {

public HelloController() {
System.out.println("hello constructor");
}
/**
*
* @RequestParam("uname") uname是提交的域的名称
*/
@RequestMapping("/hello")
public String hello(@RequestParam("uname") String name){
System.out.println(name);
return "index.jsp";
}
}

这时候,请求的方式变成:
localhost:8080/data/hello.do?uname=zhangsan

c)如果要提交的是一个对象该怎么办

首先 ,我们创建一个User对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class User {
private String name;
private int age;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;
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;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

这时候处理方法是:

1
2
3
4
5
@RequestMapping("/user")
public String user(User user){
System.out.println(user);
return "index.jsp";
}

这时候要求提交的表单域名和属性名一致,参数使用对像即可

1
localhost:8080/data/user.do?uname=zhangsan&age=11

(2)将数据显示到UI层

第一种,通过ModelAndView————需要视图解析器

1
2
3
4
5
6
7
ModelAndView mv = new ModelAndView();
//视图名称
mv.setViewName("hello");
//封装显示到视图中的数据
//想当于req.setAttribute("msg", "first spring mvc app")
mv.addObject("msg", "first spring mvc app");
return mv;

第二种,通过ModelMap来实现,不需要视图解析器

1
2
3
4
5
public String hello(@RequestParam("uname") String name,ModelMap model){
model.addAttribute("name", name)
System.out.println(name);
return "index.jsp";
}

这里ModelMap必须要写到参数里,前台页面{name}就可以显示了

(3)ModelAndView与 ModelMap异同

相同点:都可以将数据封装显示到表示层页面中
不同点:ModelAndView可以指定跳转的试图,而ModelMap不用,ModelAndView需要配置视图解析器,ModelMap不需要配置

微信打赏

赞赏是不耍流氓的鼓励