好长时间没写程序了感觉,忘了很多东西,呵呵,今天打开Eclipse写了一个Struts的小应用,也回顾了一遍它的主要内容,这篇随笔就把整理的一些东西贴出来吧。
*******************************************************************************
Model
事务逻辑 -- 要做什么
Action类所扮演的角色 -- 决定做什么
内部状态通常由一组ActionForm JavaBean表示,通常我们建议将事务逻辑与Action分开
*******************************************************************************
View
JSP 标签
*******************************************************************************
Controller
基本的控制器组件是ActionServlet类中的实例servlet,实际使用的servlet在配置文件
中由一组映射(由ActionMapping类进行描述)进行定义。
如:
1 <action-mappings>
2 <action attribute="fStrutsForm" input="/form/fStruts.jsp"
3 name="fStrutsForm" path="/fStruts" scope="request"
4 type="com.nicky.struts.action.FStrutsAction" />
5 </action-mappings>
ActionServlet 控制器
ActionClass 包含事务逻辑
ActionForm 表单数据
ActionMapping 将请求映射到操作
ActionForward 转移对象
ActionError 存储和回收错误
ActionServlet将适当的ActionMapping转发给适当的Action
*******************************************************************************
\WEB-INF\struts-config.xml 可以定义全局转发、Action Mapping、ActionForm Bean、
JDBC数据源等
1 <controller></controller>
2 <action-mappings></action-mappings>
3 <data-sources></data-sources>
4 <form-beans></form-beans>
5 <global-exceptions></global-exceptions>
6 <global-forwards></global-forwards>
7 <message-resources parameter="com.nicky.struts.ApplicationResources"/>
8 <plug-in className=""></plug-in>
其中全局转发是用来在jsp页面之间创建逻辑名称的映射;action-mappings进行内部的流程
控制,可以将请求URL映射到Action类,并将Action类与ActionForm Bean相关联;data-sources
用来配置JDBC数据源,可以定义多个数据源,实例:
1 <data-sources>
2 <data-source>
3 <set-property property="key" value="mysqlDS" />
4 <set-property property="type" value="javax.sql.DataSource" />
5 <set-property property="driverClass"
6 value="com.mysql.jdbc.Driver" />
7 <set-property property="url"
8 value="jdbc:mysql://DBServer:3306/DBName" />
9 <set-property property="maxCount" value="20" />
10 <set-property property="minCount" value="2" />
11 <set-property property="user" value="userName" />
12 <set-property property="password" value="userPassword" />
13 </data-source>
14 </data-sources>
在Action中调用:
//MySQL 数据源取得
DataSource mysqlds = this.getDataSource(request,"mysqlDS");
对于单数据源 可以直接获取
DataSource mysqlds = this.getDataSource(request);
*******************************************************************************
Action类的perform过时,替以execute也是两个可以处理Http和非Http请求。
*******************************************************************************
使用ActionError和ActionErrors来处理错误,ActionErrors保存着ActionError对象集合,
而每个ActionError都包含关键字,能够映射到资源文件中存储的错误信息。
资源文件是在ActionServlet初始花参数中指定的。
替换例子:
1 error.invalid=<b>Invalid Number{0}</b>
2 ActionError error = new ActionError(‘error.invalid’,new Double(-1));
JSP页显示:Invalild Number –1
*******************************************************************************
struts——>bean、logic、html、template、nested、tiles
<bean:define>定义字符串常数,拷贝bean对象,用现有bean属性来创建新bean。id新定义bean脚本变量名称,type类,value为id属性定义的脚本变量分配一个新的对象,name目标bean的名称。
1 <bean:define id="printString" value="This is Login Page" scope="page"></bean:define>
2 <bean:define id="printString" name="_printString" scope="page" toScope="request" ></bean:define>
<bean:include>标记将对一个资源的响应进行检索,并引入一个脚本变量和字符串类型的页作用域属性,资源可以是一个页,一个ActionForward或一个外部URL
<bean:resource>标记将检索web应用中的资源,并引入一个脚本变量和InputStream或字符串类型的页作用域属性
<bean:write>标记,用来将bean的属性输送到封装的JSP页写入器
struts框架对国际化的支持是使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来实现Java2平台对这些任务的支持。
为了实现国际化,所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。如果基本资源文件的名称是ApplicationResources.properties,那么用其他特定语言编写的资源文件的名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。因此这些文件应包含相同的关键字,但关键字的值是用特定语言编写的。
在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查
<logic:forward>标记能够将响应转发给重定向到特定的全局ActionForward上。
<logic:redirect>标记是一个能够执行HTTP重定向的强大工具
Onblur字段失去了焦点
Struts HTML标记可以大致地分为以下几个功能:显示表单元素和输入控件 显示错误信息 显示其他HTML元素
1 <html:form action="/fStruts">
2 用户名 : <html:text property="userName" size="33"/><html:errors property="userName"/><br/>
3 密 码 : <html:password property="pwdText" size = "35"/><html:errors property="pwdText"/><br/>
4 <html:submit/><html:cancel/>
5 </html:form>
动态模板是模块化WEB页布局设计的强大手段。Struts模板标记库定义了自定义标记来实现动态模板
<template:insert>标记能够在应用程序的JSP页中插入动态模板。这个标记只有一个template属性,用来定义模板JSP页。要插入到模板的页是有多个<template:put>标记来指定的,而这些标记被定义为<template:insert>标记的主体内容
在模板JSP页中使用<template:get>标记能够检索由<template:put>标记插入到JSP页的资源
*******************************************************************************
posted on 2007-10-07 16:55
wqwqwqwqwq 阅读(1003)
评论(0) 编辑 收藏 所属分类:
Simple Java