Jcat
宠辱不惊,闲看庭前花开花落~~
posts - 173,comments - 67,trackbacks - 0
struts用了也一年了,基本的东西都会用,不过因为是在工作中边学边用,难免很多知识点都不系统,惭愧呀。这几天找本书梳理一下。

---MVC---
V:多种视图共享一个后台模型
M:实现与界面独立,良好的封装
C:更好的维护程序流程

model1:JSP(V、C)+JavaBean(M)
只适用于小型程序,JSP的双重角色使HTML和Java混合,很难维护。

model2:JSP(V)+Servlet(C)+JavaBean(M)
Struts也是model2(用ActionServlet代替Servlet)。Struts的所有功能都是建立在已有的Java Web组件上,如Servlet,JSP,JavaBean,它只是利用一种方式将这些元素组织了起来,使它们协同工作。

---点滴---
在Struts应用程序中,所有的用户请求都由ActionServlet接收,然后根据struts-config.xml查找相应的子控制器。Web容器加载Struts应用程序后,struts-config.xml被首先读入内存成为一个ActionMapping对象。

基本流程:HttpRequest-->XxxForm-->validate()=true-->XxxAction-->execute()-->(return) ActionForward-->JSP
这其中的配置信息都存在于struts-config中

国际化:<bean:message key=""/> + ApplicationResources.properties

---web.xml---
<display-name>    ApplicationContext name
<listener>   配置事件监听器
<session-config> -->  <session-timeout>    Session过期时间
<welcome-file-list>   根URL的默认页面:先找index文件,找不到再查找该list
<error-page>     制定在返回特定HTTP状态码,或者特定类型的异常被抛出时显示的页面。
<taglib>    对标记库描述符文件(Tag Library Descriptor File)指定别名

---struts-config.xml---
<data-source>   定义数据源
<global-exceptions>   定义全局异常
<global-forwards>      定义全局转发(名字相同时,局部转发优先)
<controller>      定义控制配置类,如TilesRequestProcessor
<message-resources>   指定消息资源文件,配合<bean:message key="" bundle="">使用
<plug-in>      插件

---Action们---
Action:线程安全的,所以都是singlon的。不应该在Action类中使用域变量保存用户特定信息,如状态信息(可以将一些与特定请求无关的变量定义为域变量,如Log变量)
ActionForward:可以是静态的从config文件中读,如mapping.findForward("success");也可以是动态的指定,如new ActionForward("success","/aaa/bbb.jsp",true)

预定义的Action
 ForwardAction:类似<jsp:forward>
 IncludeAction:类似<jsp:include>
  以上两个Action,使Struts遵循MVC,避免直接调用JSP,可以充分利用控制器的预处理功能。 
 DispatchAction:以资源为中心,减少Action的数量。
  通常可设置parameter="method",则调用的url为http://xxx/yyy?method=add
  也可以设置parameter="add, update",则调用的url为http://xxx/yyy?add=true
 LookupDispatchAction:DispatchAction的子类,通过反查资源绑定,找到类中对应的方法。
 SwitchAction:Struts支持多应用程序模块(即multi-module),SwitchAction用来执行在不同应用程序模块间的切换操作。
posted on 2007-04-08 23:47 Jcat 阅读(420) 评论(1)  编辑  收藏 所属分类: Java

FeedBack:
# re: Struts
2007-04-22 14:52 | 炎凉
请问下 IncludeAction是怎么使用的呢?要在页面上怎么写?
像ForwardAction,我们要在页面上写<html:link page="/page.do" />
那IncludeAction应该怎么写?  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: