Struts原理
-Struts_工作原理与核心配置:
以前(Servlet)先写DAO.然后JSP页面根据web.xml中配置的servlet与Servlet-mapping再到Servlet(接收参数,验证,调用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=””>标签来调用。
以后继续修改……