struts1.3学习

本文介绍了Struts1的基本配置方法,包括web.xml和struts-config.xml的设置,并详细讲解了如何通过重写validate方法实现表单验证。此外,还提供了UserForm和UserAction的具体实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 一、基本配置

    • 参考博客
    • 项目结构
      项目结构
    • 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>
  • 三、标签的使用

转载于:https://www.cnblogs.com/tonghaolang/p/7479996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值