当前位置: 首页 > news >正文

Struts 1 之配置文件

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在每次请求时都会生成一个新的实例,因此是线程安全的

转载于:https://www.cnblogs.com/duadu/p/6335856.html

相关文章:

  • ios判断是否有中文
  • Linux多线程实例练习 - pthread_exit() 与 pthread_join()
  • [简介]HTML5 and CSS3
  • LexYacc Parser错误发生后再次parser之前恢复初始状态
  • ae开发基础功能
  • 水果的英文名称
  • LaTeX学习笔记
  • 杭电OJ BestCoder28期1001Missing number问题(小技巧偏移法)
  • Ecshop系统二次开发教程及流程演示
  • C#的百度地图开发(一)发起HTTP请求
  • python学习
  • MySQL STRAIGHT_JOIN
  • 数据结构之线性结构
  • lucene查询排序结果原理总结
  • Azure 中的多个 VM NIC 和网络虚拟设备
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《剑指offer》分解让复杂问题更简单
  • AWS实战 - 利用IAM对S3做访问控制
  • CSS3 变换
  • CSS中外联样式表代表的含义
  • Cumulo 的 ClojureScript 模块已经成型
  • Kibana配置logstash,报表一体化
  • Laravel 中的一个后期静态绑定
  • 从0实现一个tiny react(三)生命周期
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 翻译--Thinking in React
  • 深入浏览器事件循环的本质
  • 实习面试笔记
  • 算法系列——算法入门之递归分而治之思想的实现
  • 线上 python http server profile 实践
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • const的用法,特别是用在函数前面与后面的区别
  • ​iOS实时查看App运行日志
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​第20课 在Android Native开发中加入新的C++类
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #{}和${}的区别是什么 -- java面试
  • #每日一题合集#牛客JZ23-JZ33
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (+4)2.2UML建模图
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十六)Flask之蓝图
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)四层和七层负载均衡的区别
  • (转)一些感悟
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET单元测试
  • .NET设计模式(11):组合模式(Composite Pattern)
  • @property @synthesize @dynamic 及相关属性作用探究