zoukankan      html  css  js  c++  java
  • 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>
        
    • 三、标签的使用

  • 相关阅读:
    antd vue如何在父组件里打开子组件(子组件是个模态框)?
    webpack知识点整理
    JavaScript中常用的方法汇总,全部整理好了,一定要收藏!
    从地址栏里面获取参数的值
    何为垫片?垫片是一种什么概念在js中?
    async 与 await使用
    纯手撸Promise
    如何使用 Promise?
    Notification 浏览器桌面通知的使用
    学习骨架屏(Skeleton Screens)技术
  • 原文地址:https://www.cnblogs.com/tonghaolang/p/7479996.html
Copyright © 2011-2022 走看看