• 一、基本配置

    • 参考博客
    • 项目结构

    • 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>
  • 三、标签的使用

struts1.3学习的更多相关文章

  1. Struts1框架学习笔记

    类实现DispatchAction  类似于ActionServlet   ActionServlet 来自于 org.apache.struts.action 包,它继承自 HttpServlet, ...

  2. web学习:Spring2.5+Hibernate3.3+Struts1.3整合小例子

    写android有段时间了,感觉思维越写越狭窄,考虑问题越来越局限了,看不到一个项目整体的设计和构架,觉得很有必要多多写一些大型的框架性的东西来提高自己的视野. 从接触java到现在一年多了,在我的印 ...

  3. J2EE学习篇之--Struts1详解

    今天来看一下Struts1的相关知识,其实Struts现在是出名的,每个Web开发者都会知道的,也是现在比较流行的框架,下面就来看一下我们为什么要用Struts框架呢? 摘要 1.建立在mvc这种好的 ...

  4. 【SSH学习笔记】—从配置Struts1环境到简单实例

    以下我将从一个简单点的计算器实例,介绍struts1的环境配置,以及其重要的两个核心类:ActionForm和Action  简单计算器实现思路: 1.提供一个输入界面,输入两个数字和运算符(+.-. ...

  5. 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例

    部分博客,,先后实施了Struts抽样.现在我们来分析这个样本.具体解释Struts1. Struts1的几个核心组件是值得我们注意的: (1)ActionServlet(核心控制器). (2)Act ...

  6. 软件架构设计学习总结(18):MVC三层架构在各框架(jsp+servlet + Struts1+ Struts2+ springMVC)中的特征

    1.基于web开发中最原始的jsp+Servlet   图形化理解jsp+servlet结构: 1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet ...

  7. Struts2重新学习2之struts2和struts1的区别

    1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Acti ...

  8. 【SSH之旅】一步步学习Struts1框架(二):Struts实例

    从上篇博客能够看到,事实上Struts1框架就是封装了一些页面的转向.数据类型的转换,去除冗余的if else推断.除了这些,事实上还封装了一些我们寻经常使用的JSTL标签库,文件上传等等. 以下看怎 ...

  9. Struts1 部分源码学习

    Struts1工作原理    1.系统初始化(读取配置):初始化ModuleConfig对象       Struts框架是一个总控制器(ActionServlet)是一个Servlet,在web.x ...

随机推荐

  1. MySQL57安装教程

    MySQL57安装教程... --------------------------- 首先需要下载MySQL57安装包: --------------------------------------- ...

  2. 【javascript】异步编年史,从“纯回调”到Promise

    异步和分块——程序的分块执行   一开始学习javascript的时候, 我对异步的概念一脸懵逼, 因为当时百度了很多文章,但很多各种文章不负责任的把笼统的描述混杂在一起,让我对这个 JS中的重要概念 ...

  3. 关于spingMVC使用时配置自动扫描出现的路径报错

    com.lab –controller –service –dao –pojo <context:component-scan base-package=" " /> ...

  4. Ext.grid.EditorGridPanel分页和查看全部

    在gridPanel添加查看全部数据按钮,必须使得每页显示的数量pageSize为总条数,那么总页数就只会有一页. 1.获取store数据的总条数 var totalCount = grid.getS ...

  5. Redis基本数据类型

    -------------------Redis基本数据类型------------------- 1.String 字符串     1.概念         1.String 是redis最基本的类 ...

  6. Java之JMX 详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt194 一.JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序有被 ...

  7. (一)Builder(建造者)模式

    我们一般在构建javabean的对象的时候通常有三种写法: 1.直接通过构造函数传参的方式设置属性,这种方法如果属性过多的话会让构造函数十分臃肿,而且不能灵活的选择只设置某些参数. 2.采用重叠构造区 ...

  8. 从Object和Function说说JS的原型链

    ECMAScript规定了两个特殊的内置对象:Object和Function.他们的特殊性在于,他们本身既是对象又是函数,而他们同时也是对象和函数的构造器.这种自己生自己的逻辑显然违反人性,如果还停留 ...

  9. 入侵检测工具之RKHunter & AIDE

    一.AIDE AIDE全称为(Adevanced Intrusion Detection Environment)是一个入侵检测工具,主要用于检查文件的完整性,审计系统中的工具是否被更改过. AIDE ...

  10. 【2017集美大学1412软工实践_助教博客】团队作业9——测试与发布(Beta版本)

    题目 团队作业9--测试与发布(Beta版本)(http://www.cnblogs.com/happyzm/p/6917253.html) 团队作业9-1 测试与发布成绩 分值 1 0.5 0.5 ...