JAVA及相关技术学习

Servlet

 

数据验证

几乎所有和用户交互的应用都需要数据验证,而从头设计并开发完善的数据验证机制往往很费时。幸运的是,Struts框架提供了现成的、易于使用的数据验证功能。Struts框架的数据验证可分为两种类型:表单验证和业务逻辑验证,在本例中,它们分别运用于以下场合:
表单验证:如果用户没有在表单中输入姓名就提交表单,将生成表单验证错误。
业务逻辑验证:如果用户在表单中输入姓名为“Monster”,按照本应用的业务规则,则不允许向“Monster”打招呼,因此将生成业务逻辑错误。
第一种类型的验证,即表单验证由Action Bean来负责处理。
这个工作可以用以上的HelloForm.java的validate()方法负责完成这一任务:

public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
{
   ActionErrors errors=new ActionErrors();
   if((userName==null)||(userName.length())<1)
    error.add("username",new ActionMessage("hello.no.username.error"));

return errors;
}
第二种类型的验证,即业务逻辑验证由Action来负责处理。

例:
package hello;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet.ServeltException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResource;

public final class HelloAction extends Action
{
   public ActionForward execute(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)throws Exception
                                {
                                    MessageResources message=getResources(request);
                                    Action Messages errors=new ActionMessages();
                                    String userName=(String)((HelloForm)form).getUserName();
                                    //ActionMessages errors=new ActionMessage();
                                    //String userName=(String)((HelloForm)form).getUserName();
                                    String badUserName="Monster";

                              if(userName.equalslgnoreCase(badUserName))
                              {
                                  errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));
                                  saveErrors(request,errors);
                              }
                               return (new ActionForward(mapping.getInput()));
                              }
                              PersonBean pd=new PersonBean();         
                              pd.setUserName(userName);
                              pd.saveToPersistentStore();
                              request.setAttribute(Constants.PERSON_KEY,pd);
                              request.removeAttribute(mapping.getAttribute());
                              return(mapping.findForward("SayHello"));
}
}

posted on 2009-03-11 14:29 乱せ英豪 阅读(341) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜