课程概要:
讲解Struts2中数据封装的三种方式以及具体实现原理
一、Struts2数据封装机制之属性驱动
我们先来看一下传统的servlet是如何处理从页面传递过来的数据的。
首先我们在表单发送了对应的数据到servlet中去
<form action="<%=path%>/loginservlet"method="post">
账号:<inputtype="text"name="username"/><br>
密码:<inputtype="password"name="password"/><br>
<inputtype="submit"value="提交"/>
</form>
protected voiddoPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
User user=newUser();
user.setUsername(username);
user.setPassword(password);
}
可以看到在Servlet中是使用Web中的request对象来获取其中的Parameter元素的值来获得对应的值,然后将其封装到对应的对象中去。
但是在Struts2中并没有servlet类而是使用过滤器配合Action对象实现的。
那么在Struts2中是如何完成上面的工作的呢?
public class LoginActionextends ActionSupport{
//此处的属性值应与表单中的name值一致
//并且必须得有对应的set和get方法
private String username;
private String password;
@Override
public Stringexecute()throws Exception{
System.out.println("username="+username);
System.out.println("password="+password);
return"success";
}
public StringgetUsername() {
return username;
}
publicvoidsetUsername(String username) {
this.username= username;
}
public StringgetPassword() {
return password;
}
publicvoidsetPassword(String password) {
this.password= password;
}
}