struts1.3学习

  • 一、基本配置

    • 参考博客
    • 项目结构
      项目结构
    • web.xml
      <!-- struts配置 -->
      <servlet>
          <servlet-name>action</servlet-name>
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          <init-param>
              <param-name>config</param-name>
              <!--多配置文件-->
              <param-value>
                  /WEB-INF/config/struts-config.xml,
                  /WEB-INF/config/struts-config-user.xml
              </param-value>
          </init-param>
          <init-param>
              <param-name>debug</param-name>
              <param-value>3</param-value>
          </init-param>
          <init-param>
              <param-name>detail</param-name>
              <param-value>3</param-value>
          </init-param>
          <!--自启动-->
          <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>action</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
    • struts-config.xml
      <form-beans>
      <!-- 登录form -->
          <form-bean name="loginForm" type="com.myframe.struts.form.LoginForm"></form-bean>
      </form-beans>
      <global-exceptions/>
      <global-forwards/>
      <action-mappings>
          <!--name对应formBean的name   validate默认是false  scope默认值是session parameter 通过这个值传的参数判断使用哪个方法-->
          <action path="/Login" type="com.myframe.struts.action.LoginAction" name="loginForm" validate="false"
                  scope="request" parameter="method">
              <!-- redirect默认是false-->
              <forward name="loginSuccess" path="/loginSuccess.jsp"></forward>
              <forward name="loginFaild" path="/loginFaild.jsp" redirect="false"></forward>
          </action>
      </action-mappings>
      <message-resources parameter="com.myframe.struts.ApplicationResources"/>
      
    • UserForm.java
      //ActionForm本质上是一种JavaBean,是专门用来传递表单数据的DTD(Data Transfer Object,数据传递对象)。
      //它包括用于表单数据验证的validate()方法和用于数据复位的reset()方法。
      
      public class UserForm extends ActionForm {//继承ActionFor
          //属性名一定要和表单中的name对应
          private String u_id;
          private String u_name;
          private String u_pwd;
          private String u_realname;
          private String u_logintime;
          //setter/getter省略
      }
      
    • UserAction.java
      public class UserAction extends DispatchAction {//继承DispatchAction
          //前台url:<%=basePath%>User.do?method=addUser可以执行addUser方法
          public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
              //这个form是根据给UserAction配置的Action(struts-config.xml中)的name对应的formbean的name,这样才会将数据填充到这个formbean中
              UserForm userform = (UserForm) form;
              if("aaa".equals(userform.getU_name())){
                  //这里的mapping对应action配置的name
                  return mapping.findForward("addSuccess");
              }else {
                  return mapping.findForward("addFaild");
              }
          }
      }
      
  • 二、使用验证

    • 参考博客
    • struts1.X的验证分为1.重写validate (继承ActionForm) 2.配置xml(继承ValidatorForm)两种方式,老夫以为第一种会更实用些,所以下文就是以重写的方式使用struts的验证

    1. 配置 struts-config.xml
      • 配置action 的validate="true" input="xx.jsp"
      <!--使用验证要添加validate="true" 默认是false; input="xxx.jsp" 代表验证失败将值返回的页面 供回显使用-->
          <action path="/User" type="com.myframe.struts.action.UserAction" name="userForm"
                  scope="request" parameter="method" validate="true" input="/addUser.jsp">
              <!-- redirect默认是false-->
              <forward name="addSuccess" path="/addSuccess.jsp" ></forward>
              <forward name="addFaild" path="/addFaild.jsp" ></forward>
          </action>
      
    2. 重写userform的validate方法
      @Override
      public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
          ActionErrors errors = new ActionErrors();
          if(u_name==null||u_name.length()<=3){
              errors.add("u_name",new ActionMessage("error.login.u_name",u_name));
          }
          if(u_pwd==null||u_pwd.length()<=3){
              errors.add("u_pwd",new ActionMessage("error.login.u_pwd",u_pwd));
          }
          return errors;
      }
      
    3. 配置资源文件properties
      • properties编码设置自动编译(setting->file encoding->transparent)
      #UserForm验证
      error.login.u_name=用户名不能为空或长度不能小于4
      error.login.u_pwd=密码不能为空或长度不能小于4
      
    4. jsp中使用
      <%--引入标签--%>
      <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
      <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
      <%--使用html:form标签--%>
      <html:form action="/User.do">
      	<!-- name的值要和formbean的值对应 -->
          <%--使用html:text、html:errors标签  其中property对应表单的name值--%>
      	username:  <html:text property="u_name"/><html:errors property="u_name"></html:errors><br>
      	password:  <html:text property="u_pwd"/><html:errors property="u_pwd"></html:errors><br>
          <input type="hidden" name="method" value="addUser"/>
      	<input type="submit" value="submit" />
      </html:form>
      
  • 三、标签的使用

posted @ 2017-09-05 18:18  tongyongliang  阅读(160)  评论(0编辑  收藏  举报