`
gsvince
  • 浏览: 53723 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts入门-01

阅读更多

MVC
Struts框架,执行流程:
jsp  :<form action ="url">
          --------->ActionServlet :读取struts-config.xml文件
                ----------->找到匹配path
                  ----------->找name:把数据放入form 根据validate的值 是否验证
                  
                        ----->验证form不通过返回input页面
                       ----->验证form通过找type:执行action,把数据送到action 的excute方法里
                              ------------->调用别的类中的方法处理,根据处理的结果使用mapping.findForward("aa")进入别的页面
 
 
 ------------------------------------------------------------------------------------------                            
  view:
 
  form :要extends  ActionForm
    有属性和相应的getXXX() setXXX()方法
    使用validate()方法做验证:
    public ActionErrors validate(
   ActionMapping mapping,
   HttpServletRequest request) {
   ActionErrors err = new ActionErrors();//声明ActionErrors集合对象
  
   if(name==null||name.length()<1){
    err.add("name",new ActionError("name_error"));//添加具体的error
   }
   if(password==null||password.length()<6)
    err.add("password", new ActionError("password_error"));
   // TODO Auto-generated method stub
   return err;//返回input页面
  }          
 
  在页面里:<html:errors property="name"/>来显示错误信息
 
  struts根据ActionErrors集合对象是否为空,来判断验证是否通过,如果为空则验证通过,否则验证没通过
 
  ActionMessages ,ActionErrors , ActionMessage ,ActionError的关系:
  ActionErrors继承ActionMessages,ActionError继承ActionMessage
  ActionErrors可以存放多个ActionError,ActionMessages可以存放多个ActionMessage
 
 
 DynaActionForm: 
 没有form类 ,不能进行validate验证
 在struts-config.xml文件的
 
    <form-beans >
       <form-bean name="regForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="password" type="java.lang.String" />
          <form-property name="name" type="java.lang.String" />
       </form-bean>
       </form-beans>
     
   从DynaActionForm中拿数据:
     String name = (String)regForm.get("name");
  String password = (String)regForm.get("password");
------------------------------------------------------------------------------------------                            
 control:
 
   struts的核心:struts-config.xml文件
   <struts-config>
    <data-sources >//连接数据源
   
     <data-source key="aa" type="org.apache.commons.dbcp.BasicDataSource">
         <set-property property="password" value="lxl" />

         <set-property property="username" value="root" />
         <set-property property="driverClassName" value="com.mysql.jdbc.Driver" />//在struts1.1中,property="driverClassName",在struts1.2中property="driverClass"
         <set-property property="description" value="" />
         <set-property property="url" value="jdbc:mysql://localhost:3306/newdb" />

      </data-source>

    </data-sources>
  
    <form-beans >//form和DynaActionForm
      <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />
      <form-bean name="regForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="password" type="java.lang.String" />
        <form-property name="name" type="java.lang.String" />
      </form-bean>
      <form-bean name="reg2Form" type="com.yourcompany.struts.form.Reg2Form" />
  
    </form-beans>
  
    <global-exceptions>//处理全局异常
    <exception
          key="aa"
          path="/lesson1206/fail.jsp"//异常进入的页面
          type="java.lang.Exception" />//异常的类型
    </global-exceptions>
   
   
    <global-forwards >//处理全局转发
    <forward name="aa" path="/lesson1206/success.jsp" redirect="true"/>//redirect表示重定向,不能传送request范围内数据
    <forward name="bb" path="/lesson1206/fail.jsp" />
    </global-forwards>
   
   
    <action-mappings >
      <action
        attribute="loginForm" 和loginForm相关联的Key/*在request.getAttribute("loginForm")中得到他所在的atction*/
        input="/lesson1204/login.jsp"//输入页面
        name="loginForm"//form的逻辑名到上面的</form-beans>里找具体的form类里
        path="/login"//匹配请求的path
        scope="request"//form的保存范围
        validate ="false"//是否做验证,false不做验证,true做验证,但在动态表单里无效
        type="com.yourcompany.struts.action.LoginAction">//action类
      
        <forward//转发路径
          name="bb"
          path="/lesson1204/fail.jsp"
          redirect="true" />
        <forward name="aa" path="/lesson1204/success.jsp" />
       
      </action>
  
    </action-mappings>
    <message-resources parameter="com.lxl.struts.ApplicationResources" />//资源文件
  </struts-config>
    
    
  在action里查找dataSource:
  DataSource ds = this.getDataSource(request,"aa");
  Connection con=ds.getConnection();
 ------------------------------------------------------------
 
 action:
 
 要extends Action
 
 public ActionForward execute(
  ActionMapping mapping,//struts-config.xml文件中的action被封装为一个 mapping对象
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  LoginForm loginForm = (LoginForm) form;
  UserManager um = new UserManager();
  String name = loginForm.getName();//取得form中的数据
  String password = loginForm.getPassword();//取得form中的数据
  if(um.checkUser(name,password)){//调用javabean
   return mapping.findForward("aa");//进入下一页面
  }else{
   return mapping.findForward("bb");//进入下一页面
                        /* return mapping.getInputForward();// 返回当前页面*/
  }
 
----------------------------------------------------
国际化问题
1:处理汉字显示:
使用命令:native2ascii 原文件名 新文件名
把汉字转化为ascii码

对于中文,资源文件查找的顺序是:
ApplicationResources_zh_cn.properties-->ApplicationResources_zh.properties-->ApplicationResources.properties
其他语言也是找带相应后缀的文件再找ApplicationResources.properties
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics