小弟刚接触struts 很多都不懂,所以来这里问问大侠们
1.actionForm有什么用?我看到书上说用来封装页面输入的一个类,但是我不知道怎么用?有了这个还要写javaBean吗?如果要写javaBean 的话,那岂不是这个类要和不要没什么区别?-----------------------------
2.在Action中,能不能这样写 public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String command=loginForm.getCommand();//隐藏表单域里面给的一个值
if("login".equals(command)){
return doLogin(mapping,form,request,response);
}else if("add".equals(command)){
return doAdd(mapping,form,request,response);
}else{
return null;
}
} private ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String name=loginForm.getName();
String pass=loginForm.getPass();
AccountModel amodel=new AccountModel();
amodel.setName(name);
amodel.setPass(pass);
if(Account.addAcount(amodel)>0){
return mapping.findForward("suc");
}else{
return mapping.findForward("fail");
}
}--------------
如果这样写了,那不是和servlet没什么区别吗?
1.actionForm有什么用?我看到书上说用来封装页面输入的一个类,但是我不知道怎么用?有了这个还要写javaBean吗?如果要写javaBean 的话,那岂不是这个类要和不要没什么区别?-----------------------------
2.在Action中,能不能这样写 public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String command=loginForm.getCommand();//隐藏表单域里面给的一个值
if("login".equals(command)){
return doLogin(mapping,form,request,response);
}else if("add".equals(command)){
return doAdd(mapping,form,request,response);
}else{
return null;
}
} private ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String name=loginForm.getName();
String pass=loginForm.getPass();
AccountModel amodel=new AccountModel();
amodel.setName(name);
amodel.setPass(pass);
if(Account.addAcount(amodel)>0){
return mapping.findForward("suc");
}else{
return mapping.findForward("fail");
}
}--------------
如果这样写了,那不是和servlet没什么区别吗?
楼主【MnziIT】截止到2008-07-26 19:36:50的历史汇总数据(不包括此帖):
发帖的总数量:7 发帖的总分数:120 每贴平均分数:17
回帖的总数量:9 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:7 结贴的总分数:120
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
首先 ActionForm是一个伪域对象 为什么说伟呢 是因为Struts1 没有强大的类型转换功能 框架只是简单的通过反射机制把
请求中传过来的值设置给ActcionForm 所以里面的属性都是String类型的 如果要存到数据库 还要自己进行类型转换
我对struts不甚了解 错了大家指出 啊
ActionForm体统了数据校验功能 框架可以自动校验请求中的数据
所以和自己写javabean还是有区别的 如果你是自己写javabean 则要在execute方法里用request对象取出数据,然后自己填充javabean,
并且 数据验证也要自己做,这个适用框架的初中相悖,我们使用框架,就是因为框架在设计的时候,已经考虑了很多方面的问题,比如
安全性,健壮性,耦合之类的,并且很多地方,框架提供的都是大家认可的最佳实践,所以,尽量别做重复造轮子的事情,重用嘛楼主的代码中,自己在execute中做了动作转换,实现多动作功能,呵呵,struts框架中提供了DispatchAction类来实现多动作了
继承它就好了。至于最后楼主说和servlet没什么区别,没弄懂什么意思
最后那个说和servlet的的意思是:以前用servlet做项目的时候也这么写的 只不过它取值是用request 有谁能说的清楚点吗?能把我上面的代码简化下吗
应该对你很有帮助
首先,如果ActionForm对应的HTML表单添加或删除一些属性,ActionForm类就可能需要修改并重新编译;
其次,如果HTML表单是动态的,那么ActionForm更是无能为力了;
另外,ActionForm增加了项目中类的绝对数量!
于是从Struts1.1起,就引入了动态ActionForm(DyanActionForm)概念。动态ActionForm使得用户无须为应用程序的每一个HTML表单创建具体的ActionForm类。Struts框架包中的DyanActionForm类及其子类实现了动态ActionForm.
DyanActionForm类扩展了 ActionForm类。用户可以直接使用DyanActionForm
类,或者扩展该类以覆盖其validate和reset方法!