Struts 原理
-Struts_ 工作原理与核心配置 :
以前 (Servlet) 先写 DAO. 然后 JSP 页面根据 web.xml 中配置的 servlet 与 Servlet-mapping 再到 Servl et( 接收参数,验证,调用 DAO 等操作 )- 》跳转不同的页面。
使用 Struts 时原理:
JSP->web.xml->ActionServlet(url-pattern:*.do)->struts-config.xml( 根据 path 路径对应的 action 与 actionFrom)->ActionFrom->validate 方法验证(若通过进入 action ,否则返回 input 错误页) ->action-> 调用
DAO 进行逻辑判断 -> 成功时跳转某个页面( struts-config.xml:forward ) , 失败时可以返回错误页( input )
Struts-config.xml 中的配置组成 :
① <form-beans>------------ 包含多个 form-bean.
<form-bean name="loginForm"-------name 为该 bean 的名称,唯一标识。
type="com.struts.form.loginForm"/>-------- 该 bean 的包 . 类名 .
</form-beans>
此配置是对 Actionform 。
② <action-mappings>
<action........>// 可配置多个 action ,对应写的 Action 类。
</action-mappings>
name.attribute 表是该 Action 所对应的 ActionForm 的 name 属性。
input 是用来作为错误页的,当 validate 方法执行后有错误,则自动跳转到该页面。
path 表示该 Action 的虚拟路径,必须加 /, 不用加· do.
scope="request": 表示 Action 所保存的属性范围, request 表示每次请求重新建立新的 Action 。
type 表示该 Action 的包 . 类名。。
在 Action 中可包含多个 forward 路径
forward 属性: name 为该 forward 的唯一标识,在 Action 代码执行跳转时需要通过的该 name 来查找对应的路径。 path 标识该 forward 所要跳转的路径,
以上内容配置的为 Action 。
①和②必须一一对应。两个必须都有。等于把 Servlet 分成两部分。一个 Action 只能对应一个 Actionform, 而一个 ActionForm 可已有多个 Action 使用它。 *********** 配置中如 /login 路径 path 都带 / ,表示从 webroot 下开始往下找路径,【不加 / 会报错】
③资源文件的配置:
<message-resources parameter="com.pro.struts.ApplicationResources" />
表示资源文件改包名地方。
ActionFrom 中参数类型接受:
如果参数为 int 类型接受,则会自动进行类型转换,当无法转换时,会使用默认值来进行处理,默认值为 0 ;
注意:不要将 int 或 Date 等需要转换的类型,直接放入对象中。
Bean 标签
Bean: 用来处理属性范围中的属性,可以对其进行复制,添加和显示,并可以完成国际化功能。
Logic: 用来完成页面上的逻辑判断和迭代循环。
Html: 用来替代 HTML 页面元素的标签。
1. bean:defind 标签:用来创建或复制一个属性范围中的属性。
Bean:defind 中的属性:
Id: 表示新建立属性在属性范围中的名称,自行定义,如果有重复的,则自动覆盖。
Value: 表示新建立的属性的值,只能是字符串。
Name :表示要复制的的属性在属性范围中的名称,与 value 不能同时使用。
Scope :表示所要复制的属性所在的属性范围,如果不填写,默认是 4 种属性范围。
toScope :表示范围后的新的属性所保存的属性范围,如果不填写,默认是 page 范围。
如果属性范围中保存的为一个 vo 对象,这里要复制该对象的一个属性,可以通过 pro 皮而已来进行处理 .
Property: 表示所复制的属性其中包含的子属性的名称,必须有 getter 和 sertter 方法。
格式化: # 和 0 都表示一位数字,这里 # , ##0.00 表示显示格式为 3 位数字, 3 位数字, 2 位数字
格式化:
金钱格式化: #,##0.00
# 与 0 的区别,如果该位不存在时,如果使用 # ,则不会显示该位,如果使用 0 ,则会显示补 0
Double 格式化: #,##0.00
日期格式化: yyyy-MM-dd
Struts 国际化
需要使用 bean:message 标签来实现该功能,并且需要资源文件的支持。
这里需要完成多个语言的现实,因此要建立多个资源文件,同时要求资源文件的命名必须规范
资源文件命名规范:以原有资源文件为基准,在其主文件名后 + 语言种类编码
最后在页面通过调用 <bean:message key=””> 标签来调用。
以后继续修改……