###########################################
## Date: 2007-11-09
## Description: Struts FrameWork day1
## Author: yejf
############################################
Module 1:
MVC 的介绍
模式一(Model 1):
以页面为中心, 接合JAVABEAN 来完成.
优点: 结构简单, 适合小型应用
缺点: 代码维护难, 扩展性难, 表现层与后台控制层耦合性太高.
模式二(Model 2):
以Servlet 为中心, 接合JAVABEAN 和 JSP 来完成.
优点: 以软件分层为基础, 把纯数据的显示以JSP来表现, 以JAVABEAN为数据的载体,
并提供一定的业务行为, 再以控制器做为统一调度和分发请求. 从而达到表现
层和业务数据层的逻辑分离, 增加了项目的扩展性, 大大降低了耦合性.
缺点: 各种不同类型的大量请求,可能会有大量的 Servlet产生, 没有一个统一管理
和调度,各种请求与Servlet之间的关系不好维护, 并且业务数据的封装也没有
一种更好的方式.
Struts: 开源框架的诞生. Web Application Framework
由于处理客户端请求时存在大量的共性, 并且为保证请求类型与Servlet关系
之间的可配性, Struts 提供了一个统一的Servlet控制器: ActionServlet,
并实现了请求路径与Action之间的可配性, 还提供了前台业务数据与业务对象
的自动封装,以及请求重定向和请求跳转的可配. 等等..
MVC:
Model 模型 --- JavaBean, EJB
View 视图 --- JSP, Html, js, CSS
Control 控制器 --- Struts
下面我们来一同看看 Struts 的真正面目.
一. Struts是一个基于WEB的MVC实现,
它提供了一个中央控制器:ActionServlet
org.apache.struts.action.ActionServlet
二. 开发一个Struts应用:
1. 建立一个web应用结构。 strutsApp
2. 把$STRUTS_HOME/lib 目录下的所有 *.jar文件
拷贝到 strutsApp/WEB-INF/lib 的目录下
3. 在web.xml文件当中,来配置Struts的中央控制器
. . .
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
4. 在WEB-INF/目录下,创建一个文件:struts-config.xml
大至内容如下:
. . .
<struts-config>
<action-mappings>
<action path="/hello" type="xx.xx.HelloAction" />
. . .
</action-mappings>
</struts-config>
5. 开发一个自定义的Action类,此类一定要继承于Struts
提供的Action类. 并且要重写 execute 方法 , 在此
方法当中实现对请求的回应
execute 方法的申明:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)
throws Exception {
}
6.在struts-config.xml文件中来配置自定义的Action类
7. 把此应用部署上服务器,启动服务,并进行测试
http://locahost:8080/strutsApp/hello.do
流程:
应用部署: --- 容器实例化ActionServlet, 并调用它的
init()方法
|
| 读取/WEB-INF/struts-config.xml文件
----------- init正常返回
|
|它的service方法可以接收客户端请求
---
|
| 客户端请求过来,就调用service()
---
|
| 依据path,来实例化Action实例
------------------
|
| 调用action的execute方法
--------------------------
注:以上只是个大至流程,详情可以查看下面 RequestProcessor 类的介绍
重点:
1. 自定义Action的开发:
必需从org.apache.struts.action.Action类继承。
并重写 execute 方法 [后面会学到到重要的高级内置 Action]
2. struts-config.xml文件的配置, 如下:
<action-mappings>
<action path="" type="" >
属性:
path: 请求的路径,
(rquest.getServletPath())截掉后缀.[不带.do]
type: 自定义Action的全限定名. (包含包名)
子标签:
<forward name="" path="" redirect="" />
属性:
name: 逻辑名称,用于在Action的execute方法中
Mapping.findForward()方法的参数
path: 转到的下一个资源
redirect: true or false, 重定向或转发
默认是 false
<action-mappings>
================================================
RequestProcessor 类的作用及介绍:
process(request,response)
processPath
processLocale
processContent
processNoCache
processPreprocess
processMapping
processRoles
processAcctionForm
processPopulate
processValidate
processForward
processInclude
processActionCreate
processActionPerform
processForwardConfig
具体含议请查看 API 文档
http://struts.apache.org/1.x/apidocs/index.html
工作原理:
ActionServlet ServletContext
| init()
| 负责读取/WEB-INF/struts-config.xml
|
---- 把请求委托给:RequestProcessor :
调用了 RequestProcessor的 process方法
|
\------>service(req,res)
|
| getRequestProcessor().process(req,res)
|
----------------------------------------
在RequestProcessor的process方法当中,会依次
调用如下方法:
processPath
processLocale
processContent
processNoCache
processPreprocess
processMapping
processRoles
processAcctionForm
processPopulate
processValidate
processForward
processInclude
processActionCreate
processActionPerform
processForwardConfig
分享到:
相关推荐
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
首先,Struts 1.3.8 是 Struts 1.x 系列中的一个稳定版本,它引入了许多改进和修复,以增强性能和稳定性。这个框架的核心设计目标是将业务逻辑与表现层分离,通过 Action 和 Form Beans 实现控制器功能,同时利用 ...
### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...
这个版本的学习笔记主要集中在 Struts 框架的核心概念、架构和实际应用上。在深入学习 Struts 1.3.8 时,我们需要了解以下几个关键知识点: 1. **MVC设计模式**:Struts 是 Model-View-Controller (MVC) 设计模式的...
### Struts2培训笔记 #### 一、Struts2简介 **MVC框架**:Struts2是一个基于Java的企业级Web应用开发框架,遵循MVC(Model-View-Controller)设计模式。 - **M(Model)**:业务逻辑处理部分,通常指与数据库交互...
"struts2学习笔记(一) ——struts2与spring2_0的集成 - 一嗑立扑死 - CSDN博客.mht"可能详细讨论了如何将Struts2与Spring 2.0版本集成,包括Action的配置和依赖注入的使用。而"Struts2与Spring的结合 - Naviler的...
### Java常用框架学习笔记 #### Hibernate ##### 1.1 Hibernate 实现数据库操作步骤 - **导入所需的Jar包**:为了使用Hibernate框架,首先需要在项目中导入Hibernate库。这通常意味着添加一系列与Hibernate相关的...
#### 十一、Struts1.X & Struts2.X - **多层架构理论**:MVC、DAO等模式。 - **DomainModel(领域模型)**:用于表示应用程序中的核心业务概念。 - **Pattern(RBAC权限设计)**:模式在软件设计中非常重要,RBAC是...
Struts1.x采用配置文件定义动作映射,而Struts2则提供了更灵活的注解配置和拦截器机制。 【Hibernate】:Hibernate是一个对象关系映射(ORM)框架,它允许Java开发者以面向对象的方式来操作数据库。通过XML或注解...
6. **学习笔记**:可能涵盖Spring的基本概念、配置、最佳实践、常见问题等,帮助学习者系统地掌握Spring知识。 在"新建文件夹"中,可以预期找到上述知识点的具体实现或解释。这些资料对于初学者或者希望深化Spring...
通过这份笔记,我们能够深入了解Java语言的基础特性、面向对象的设计原则以及一系列高级框架的应用。此外,还简要介绍了Linux/Unix系统的一些基本操作指令。 #### Java 核心知识点 1. **Core Java** - **基础...