Struts1.x 学习笔记系列

###########################################
## 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 文档
[url]http://struts.apache.org/1.x/apidocs/index.html[/url]

工作原理:
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值