web.xml中配置Struts的入口Servlet——ActionServlet,ActionServlet不负责任何的业务处理,它只是查找Action名单,找到path属性与URL属性一致的Action,把请求交给该Action处理

<servlet>
      <servlet-name>action</servlet-name>     <!-- Sevrvlet名称-->
      <servlet-class>
             org.apache.struts.action.ActionServlet  <!-- Servlet实现类-->
      </servlet-class>
      <init-param>
             <param-name>config</param-name>   <!-- 配置文件,多个可以用逗号分隔-->
             <param-value>/WEB-INF/struts-config.xml</param-value>
      </init-param>
<servlet>

<servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>     <!-- 截获所有以.do结尾的请求-->
</servlet-mapping>

配置命名空间

<param-name>config/ namespace1</param-name>
<param-value>/WEB-INF/struts-config-namespace1.xml</param-value>

当请求是”/namespace1/hello.do”时会调用struts-config-namespace1.xml里面的Action;当请求是”/hello.do”时会调用struts-config.xml里面的Action

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache SoftwareFoundation//DTD Struts Configuration 1.2//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 

<struts-config>
      <!--配置数据源,需要commons-pool.jar和commons-dbcp.jar--->
      <data-source type="org.apache.commons.dbcp.BasicDataSource">
             <set-property property="driverClassName"  value="com.mysql.jdbc.Driver"/>
             <set-property property="url"  value="jdbc:mysql://localhost:3306/databaseName?charaterEncoding=utf8"/>
             <set-property property="username" value="root"/>
             <set-property property="password" value="admin"/>
      </data-source>

      <form-beans>  <!--FormBean配置-->
             <form-bean name="firstForm" type="com.clf.struts.form.HelloForm"/>
             <form-bean name="otherForm" type="com.clf.struts.form.OtherForm"/>

      </form-beans>

      <!--全局异常-->
      <global-exceptions>
          <exception key="error.email. invalid"
             type="java.lang.Exception"
             path="/error.jsp"
             handler="exceptions.EmailException"/>
      </global-exceptions>

      <!--全局forward,可以被Action访问-->
      <global-forwards>
        <forward name="myforward" path="/mystruts/newProduct.jsp" />
      </global-forwards>

      <action-mapping>

             <action attribute="firstForm"       <!--FormBean在request域中的属性名,request.getAttribute(“firstForm”)-->
             input="/form/hello.jsp"    <!--输入页面,Action中执行mapping.getInputForward()将转到该页-->
             name="firstForm"           <!--FormBean类型,与form-beans的name一致-->
             path="/hello"                    <!--访问路径"/hello.do"-->
             scope="request"               <!--作用域,包括request、session-->
             type="com.clf.struts.action.HelloAction"                   <!--实现类-->
             >

                    <forward name="success" path="/form/success.jsp"/>                 <!-- 跳转页面-->
                    <forward name="fail" path="/form/fail.jsp" redirect="true"/>                  <!--redirect 表示跳转到此页面的方式,默认false时,执行request.getRequestDispatcher("").forward();为true时,执行response.redirect()-->
             </action>

      </action-mapping>
      <!--国际化资源-->
      <message-resource parameter="com.clf.struts.ApplicationResources"/>

      <!--可以用来覆盖一些默认的Struts设置,还可以用来配置第三方控制器,比如Spring-->
      <controller
      <!--指定在文件上传时的最大文件尺寸。可以使用K、M和G作为单位,必须为整数-->
      maxFileSize="2M"
      <!--指定默认的ContentType字段值-->
      contentType = "text/html"
      <!--告诉Struts是否应该缓冲内容。默认为true-->
      nocache = "false" />

      <!--  配置插件-->
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
     <set-property property="pathnames"
         value="/WEB-INF/validator-rules.xml,/WEB-INF/validations.xml"/>
     <set-property property="pathnames" value="false"/>
      </plug-in>

</struts-config>

Struts能够自动转化常用的数据类型,例如int、double等以及java.sql.Date、POJO等,如果变量是int、double、float等数字类型,格式不正确会当做0,如果为Date、Time等复杂类型,格式不对时会抛出异常

Struts不会自动创建POJO对象,在FormBean里面用到的时候,必须用new实例化一个POJO对象

public classUserBean extends ActionForm{
      private Person person = new Person();
      ……
}

JSP页面显示对象的属性用“.”操作符

<html:text property="person.name"></html:text>

Action由Struts的ActionServlet产生并维护,每个Action都置于一个实例,在加载Struts时产生,在卸掉Struts时销毁,因此Actin和Servlet一样,都是线程不安全的

而FormBean在每次请求时都会生成一个新的实例,因此是线程安全的

Struts 1 之配置文件的更多相关文章

  1. struts几个配置文件加载顺序_2015.01.04

    struts几个配置文件加载顺序: 01:struts-default.xml 02:struts-plugin.xml 03:struts.xml 04:struts.properties 05:w ...

  2. Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖

    Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖

  3. 2018.12.15 struts.xml 一般配置文件写法 && 配置动态方法

    struts.xml 原始配置文件 配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE s ...

  4. Struts 2 之配置文件

    Struts 1使用ActionServlet作为分发器,而Struts 2使用Filter作为分发器.如果有多个Filter,要把Struts 2的分发器Filter放在最后 web.xml < ...

  5. struts 1.x配置文件说明

    <struts-config> <global-exceptions /> <!--全局映射定义--> <global-forwards> <fo ...

  6. 【JavaEE企业应用实战学习记录】struts配置文件详细解析

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  7. Struts配置文件以Spring的方式实现自定义加载

    在使用struts时,我们需要在web.xml中配置过滤器,同时我们需要配置struts的配置文件路径来加载项目中struts的相关配置信息.如果我们不配置路径的话,Struts会有一些默认的加载路径 ...

  8. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  9. Struts相关

    使用Struts2流程: 1.导入Struts2类包 2.在Web源代码文件夹中,创建名为struts.xml的配置文件.在其中定义Action对象,其关键代码如下: struts.xml: < ...

随机推荐

  1. 领域驱动设计(DDD)笔记(一)

      最近在看<领域驱动设计>这本书,准备写点学习笔记博文记录系列.记录本书中的要点和疑惑,不定期更新!先放张MarginNote的图: Aggregate  每个Aggregate 都有一 ...

  2. ●BZOJ 3676 [Apio2014]回文串

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3676 题解: 后缀数组,Manacher,二分 首先有一个结论:一个串的本质不同的回文串的个 ...

  3. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  4. bzoj 1875: [SDOI2009]HH去散步

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

  5. C语言程序第二次作业

    (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...

  6. Vue2学习(2)

    按键修饰符 还可以自定义按键修饰符别名,通过全局 config.keyCodes 对象设置: // 可以使用 `v-on:keyup.f1` Vue.config.keyCodes.f1 = 112 ...

  7. IntelliJ IDEA光标变粗 backspace无法删除内容解决方法

    进入了vim插件 1.ctrl+alt+s快捷键打开Settings 2.选择左侧列表中的Plugins 3.在右侧面板的搜索框中搜索IdeaVim 4.将复选框中的钩子去掉 backspace成了其 ...

  8. php中AJAX请求中使用post和get请求的区别

    之前使用这两个请求的时候,主要从几个方面考虑: 1.语义,get就是从服务器获取,一般就是获取/查询资源信息.post就是提交给服务器,一般就是更新资源信息. 2.请求文件大小,get一般只有2k这样 ...

  9. javascrpt_数组学习

    1.构造函数 var arr = new Array(); Array 构造函数有一个很大的缺陷,就是不同的参数,会导致行为不一致. 因此,不建议使用它生成新数组,直接使用字面量是最好的做法. 2.静 ...

  10. Java线程池使用和常用参数

    多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 ...