以登录为例,jsp中有name和pass变量,现在有一个Model为User定义如下:
public class User {
private String name;
private String pass;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPass(){
return pass;
}
public void setPass(String pass){
this.pass = pass;
}
}
1.在Controller中收到请求用servlet请求的方式得到value的方法如下:
public String login (HttpServletRequest request, ModelMap modelMap) {
String name = request.getParameter("name");
String pass = request.getParameter("pass");
}
然后通过自己写代码生成对象User user = new User ();
user.setName(name);
user.setPass(pass);
通过1的方法虽然能实现获得User实例,但是失去了Springmvc工厂模式的优势了,SpringMVC框架自身就能来做生成实例的事情,1中的方法显然没有充分应用SpringMVC框架。
2.利用SpringMVC的功能,将view中的数据封装到Model中:
由于项目紧急,精力有限笔者没有从SpringMVC底层深入剖析,根据笔者实际的工作经验,要将view中的数据封装到Model中需要进行下面四步准备工作:
a.
User类必须有一个不包含任何参数的默认构造函数
b. User类必须有一个给所有成员变量赋值的构造函数
c. User类中的属性名字和表单中的输入控件的名称一样
d. User类中的各属性必须有默认的getter、setter方法
Controller中的具体写法如下:
public String login (User user) {
String name = user.getName();
String password = user.getPass();
}
这样框架就自动生成了user实例并赋给了函数参数。
model具体写法如下:
public class User {
private String name;
private String pass;
public User(){}
public User(String name,String pass){
super();
this.name = name;
this.pass = pass;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPass(){
return pass;
}
public void setPass(String pass){
this.pass = pass;
}
}
通过上面方法2就可以将view中的数据封装在bean中,大大简化了不少赋值的工作,传值传对象还能让代码简洁。
将Controller中从dao中查询到的数据封装到Model中并将Model传递到view中的方法见下篇博客。