- 浏览: 115217 次
- 性别:
- 来自: 上海
文章分类
最新评论
网站struts.apache.org
实践步骤:
1 搭建环境
(1)导入jar包
使用其中相关的类(可将所有jar全部导入)
(2)建立一个配置文件:struts-config.xml
作用:方便struts用户使用
位置:一般放在WEB-INF下
(3)配置web.xml
注册struts中心控制器-----ActionServlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>()Navigate下Open Type输入actionServlet复制目录
<init-param>//读初始化文件的信息
<param-name>config</param-name>//参数名
<param-value>/WEB-INF/struts-config.xml</param-value>//文件名
</init-param>
<load-on-startup>0</load-on-startup>//服务启起就实例化,0最早
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>//对所有的do请求都作处理
</servlet-mapping>
注意事项:
struts配置文件的位置
预先加载控制器
------------------------------------------------------------------
2 建立ActionForm
(1)建一个Bean类,继承org.apache.struts.action.ActionForm
(2)注册,修改配置文件struts-config.xml
<form-bean>
<form-beans>
<form-bean name="变理名" type="类全名"/>
</form-beans>
意注:struts-config.xml文件中<form-beans>和<action-mappings>的顺序不能变,有DTD约束规定。
------------------------------------------------------------
3 建立Action
(1)建立一个类,继承org.apache.struts.action.Action。重写execute方法
需要强制转型
LoginFrom lof=(LoginFrom)form;
调用其它模块
跳转(根据关键字,关键字参照该action中forward标签中的name属性)
mapping.findForward("name属性");
(2)注册,修改配置文件struts-config.xml
<action>
<action-mappings>
<action path="指明调用者(JSP)能通过中心控制器ActionServlet找到该Action"
type="指明该action类全名"
name="该action引用的form的名称">
<forward name="loginSuccess" path="index.jsp"></forward>
</action>
</action-mappings>
4 页面访问
<form action="<%=request.getContextPath()%>/login.do">
-------------------------------------------------------------------
Struts framework的工作原理工科
1 读敢配置 (初始化ModuleConfig对象)
Struts框架总控制器(ActionServlet)是一个Servlet,在web.xml中配置成自动启动的Servlet。
读取配置文件(struts-config.xml)的配置信息,为不同的Struts模块初始化相应的ModuleConfig
对名:ActionConfig,
ControlConfig,
FormBeanConfig,
MessageResourcesConfig
2 发送请求
请求上传WEB服务器(处理.do的请求)
3 填充FORM(实例化,复位,填充数据,校验,保存)
(*.do请求)从ActionConfig中找出对应该请求的Action子类,如没有对应的Action,控制器直接转发给
JSP或静态页面。如有对应的Action且这个Action有一个相应的ActionForm.
ActionForm被实例化并用http请求的数据填充其属性,并且保存在ServletContext中(request或session中),
这样它们就可以被其它Action对象或者JSP调用。
4 派发请求
控制器根据配置信息ActionConfig将请求派发到具体的Action,相应的FormBean一并传给这个Action的execute()方法.
5 处理业务
Action一般只包含一个execute方法,它负责执行相应的业务逻辑(调用其它业务模块).完毕返回一个ActionForward对象,
控制器通过该ActionForward对象来进行转发工作
6 返回响应
Action根据业务处理的不同结果返回一个目标响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或另一Action.
7 查找响应(可以是一个Action)
8 响应用户
-----------------------------------------------------------------------------------------------------------
组件
ActionSerlet,Action Classes,Action Mapping(此处包括ActionForward),ActionForm Bean.
Struts中的MVC:
1 模型(Model):本质上来说在Struts中Model是一个商业逻辑类,开发者实现商业逻辑。
2 视图(View):View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用他们可以快速建立应用系统的界面。
3 控制器(Controller),前端控制器是一个Servlet,它将客户端请求转发到相应的后端控制器Action类。
注意:官方认为ActionForm Bean应为控制层(Controller)组件,自已写的JavaBeans为模型(Model)
-----------------------------------------------------------------------------------
ActionServlet(中心控制器)
定义:继承自javax.servlet.http.HttpServlet类,是中心控制器(总控制器)。它提供一个中心位置来处理全部的终端请求。
作用:接受请求,填充数据,派发请求,响应用户。
配置:在web.xml文件声明。
例子:
<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>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意:struts-config.xml文件系统默主调用,可以不<init-param>配置
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
-------------------------------------------------------------------
Action
发出该action请求时初始化,不是在读取配置时,并且只初始化一次。
Action是线程不安全的,因为所有的请求共享一个别action实例。
所以:不要用实例变量或者类变是共享只是针对某个请求的数据
注意资源操作的同步性。
应用:
统计一个action访问次数
public class CountAction extends Action {
private Integer count=0;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
synchronized(count){//加锁
count++;
}
PrintWriter out=response.getWriter();
out.print("count="+count);
return null;
}
}
----------------------------------------------------
ActionMapping
是对struts-config.xml中action标签中所有属性的封装类。
mapping.getName()(String)
mapping.getPath()(String)
mapping.getType()(String)
String[] forwardNames=mapping.findForwards();
for(String forward:forwardNames){
ActionForward forward=mapping.findForward(forward);
String forwardPath=forward.getPath();
}
相应的set方法不能使用。
-----------------------------------------------------
ActionForward(导航器)
ActionForward对象是配置对象。这些配置对象拥有独一无二的标识以允许他们按照name属性来检索。
name:逻辑名称
path:页面或者模块访问路径。
redirect:默认为false.设为true时为容器外跳转,相当于response.sendRedirect();
在xml文件中的path中要写绝对路径。
--------------------------------------------------------------
ActionForm工作原理
步骤:
(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射
(2)根据name属性,查找form bean中的配置信息
(3)检查Action的form bean的使用范围,确定在此范围下(request,session),是否已经有些form bean的实例。
(4)假如当前范围下,已经存在了些form bean的实例,而是对当前请求来说,是同一种类型的话,就重用。
(5)否则,就重新构建一个form bean的实例(调用构造方法),并且保存在一定作用范围。
(6)form bean的reset()方法被调用
在作数据收集前被调用,是一个重置的方法.
(7)调用对应的setter方法,对状态属性赋值
(8)如果validatede的属性设置为true,就调用form bean的validate()方法。
该方法进行表单的服务器端验证.
(9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。
注意:直接从ActionFrom类继承的reset()和validate()方法,并不能实现什么处理功能,所以重新覆盖。
注意:
1 无参构造方法必须有
2 Scope缺省值是session
3 调用setter方法,实质上是对应的标准set方法
分析:
4 从过程去查看
HttpSessionAttributeListener
ServletRequestAttributeListener
5 从结果去查看
---------------------------------------------------
ActionForm
reset()方法,用于恢复属性,在重新复值前由controller调用。
valldate()方法,用于校验属性,返回ActionErrors,如果成功返回null,默认返回null.
关闭校验功能设置struts-config.xml中<action>标签的validate属性为false.
validate
----------------------------------------------------------
struts-config.xml文件中的action标签
1 attribute属性
用来存取form的关键字,缺省值与name一样,如果设了必须用该属性。
2 validate属性(action中的属性)
用来控制是否校验表单,缺省为false,false不校验。
3 input属性
当表单校验失败时将请求转发的URL(或目标模块,可以为另一个别action),结合validate属性使用,为相对路径。
在ActionForm类的validate方法中手动添加错误
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
ActionErrors errors=new ActionErrors();
ActionMessage message=new ActionMessage("error");//应为键值对
errors.add("error",message);
return errors;
}
---------------------------------------------------------------------------
struts-config.xml文件中的<global-forwards>全局跳转标签
<global-forwards>
<forward name="error" path="Error.jsp"/>
</global-forwards>
使用方式同action中的forwar标签
发表评论
-
[导入]为Struts 2.0做好准备
2009-10-29 19:00 0摘要: Struts 2.0系列之一 Struts ... -
[导入]常用的Struts 2.0的标志(Tag)介绍
2009-10-29 19:00 287摘要: 在上一篇文章《为Struts 2.0做好准备 ... -
[导入]Struts 2.0的Action讲解
2009-10-29 19:00 609摘要: 有Struts 1.x经验的朋友都知道Act ... -
[导入]在Struts 2.0中国际化(i18n)您的应用程序
2009-10-29 19:00 330摘要: Struts 2.0系列之四 国际化是商业系 ... -
[导入]转换器(Converter)——Struts 2.0中的魔术师
2009-10-29 19:00 461摘要: 在我已往的Struts 1.x项目经验中,有 ... -
[导入]在Struts 2.0中实现表单数据校验(Validation)
2009-10-29 19:00 300摘要: All Input Is Evil! ... -
[导入]Struts 2的基石——拦截器(Interceptor)
2009-10-29 19:00 370摘要: Struts 2.0系列之七 Interce ... -
[导入]在Struts 2中实现文件上传
2009-10-29 19:00 271摘要: Struts 2.0系列之九 Struts ... -
[导入]在Struts 2中实现CRUD
2009-10-29 19:00 358摘要: Struts 2系列之十 CRUD是Crea ... -
[导入]Struts 2中的OGNL
2009-10-29 19:00 533摘要: Struts 2系列之十一 OGNL是一种功 ... -
[导入]Strus 2的新表单标志的使用
2009-10-29 19:00 490摘要: Struts 2系列之十二 Struts 2 ... -
[导入]Struts 2与AJAX(第一部分)
2009-10-29 19:00 454摘要: Struts 2系列之十三 在当今——Web ... -
[导入]Struts 2与AJAX(第二部分)
2009-10-29 19:00 578摘要: Struts 2系列之十四 在上一篇文章《S ... -
[导入]Struts 2与AJAX(第三部分)
2009-10-29 19:00 575摘要: 在上两部分的《Struts 2与AJAX》中 ... -
struts2 页面转向错误No result defined for action and result Invalidation
2009-11-20 16:57 794Messages: No result defined for ... -
struts1.3-DispatchAction
2009-11-30 08:10 401DynaActionForm 配态form 1 配置动态for ... -
struts1.3-Converter
2009-11-30 08:10 634Converter添加java.util.Date ... -
struts1.3-exception
2009-11-30 08:11 798一 配置异常(在struts-config.xml文件中定义) ... -
struts1.3-plugIn
2009-11-30 08:12 354可以加入ValidatorPlugIn动态验证框架插件 org ... -
struts1.3-ForwardAction
2009-11-30 08:12 699ForwardAction是统一访问形式 配置struts-c ...
相关推荐
总结来说,"struts1.3.jar"包含了Struts 1.3框架的核心组件,是开发基于MVC模式的Java Web应用的基础。尽管Struts 1.3已被更现代的框架如Spring MVC取代,但它在早期Web开发中的地位不可忽视,其设计理念和实践方法...
Struts1.3 jar包是Apache软件基金会的Jakarta Struts项目中的一个核心组件,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个框架极大地简化了开发人员在构建动态、数据驱动的Web应用程序...
Struts 1.3 是Struts框架的一个重要版本,它在1.2的基础上进行了改进和增强,旨在提高开发效率,提供更好的可扩展性和性能。以下是一些Struts 1.3 API中的关键知识点: 1. **Model-View-Controller (MVC) 模式**:...
7. 学习路径:首先,了解JSP标准标签库(JSTL)的基础知识,然后深入学习Struts1.3的架构,接着关注Action和Form Bean的生命周期。最后,针对每个具体的标签类,查看其解析方法和执行流程。 8. 实践应用:理论学习...
这个“struts1.3.rar”压缩包包含了Struts 1.3版本的核心库和其他相关依赖,使得开发者能够快速地搭建和运行Struts应用。下面我们将深入探讨Struts 1.3的关键组件和它们在开发过程中的作用。 1. **Struts Core** (`...
在本文中,我们将深入探讨Struts 1.3的主要组件、工作原理以及如何利用其API进行开发。 1. **核心概念** - **Action**:这是处理用户请求的核心组件,实现了`com.opensymphony.xwork2.Action`接口。当用户发送...
Struts 1.3框架是Apache软件基金会的一个开源项目,它是Java EE平台上用于构建MVC...通过分析源码,开发者不仅可以提高对框架的理解,还能积累经验,为将来使用更高级的框架如Spring MVC或Struts 2打下坚实的基础。
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构...尽管如此,学习Struts1可以帮助理解MVC模式以及Java Web开发的基本原理,为进阶其他框架打下基础。
学习Struts的API可以帮助开发者更好地理解框架的工作原理,提高开发效率,同时为其他MVC框架的学习打下基础。无论是初学者还是经验丰富的开发者,都应该深入理解这两个版本的区别和联系,以便在实际项目中做出最佳...
这个压缩包包含了Struts1.3和Struts2两个版本的API文档,以CHM(Compiled Help Manual)格式提供,这是一种常见的Windows帮助文档格式,便于用户离线查阅。 Struts1.3是Struts框架的第一个稳定版本,它在Web开发...
`src`目录包含了Struts框架的核心源代码,我们可以从这里深入理解Struts的工作原理。它通常包括以下部分: 1. **org.apache.struts.action**:这是Action包,包含了处理用户请求的核心类,如`Action`、`ActionForm`...
总之,这个"struts1.3代码"实例是一个基础的Java Web项目,展示了如何结合Struts框架、SQL Server 2000数据库和分页技术来开发Web应用。对于初学者,这是一个很好的学习资源,有助于理解Struts的工作原理以及如何将...
通过分析这个"struts1.3 demo",开发者可以深入理解Struts1的工作原理,学习如何组织一个简单的CRUD(创建、读取、更新、删除)应用,同时掌握处理乱码问题的方法,这对于理解Web应用的开发流程和架构设计具有重要...
通过研究这个源码包级文档,开发者不仅能深入理解Struts 1.3.5的工作原理,还能提升对MVC设计模式的理解,为后续使用更新的Web框架如Struts 2或Spring MVC打下基础。同时,对于维护旧系统的开发者来说,这将是一份...
Struts是Apache软件基金会下的一个开源项目,是一个用于...虽然现在Struts已经发展到了2.x版本,但1.3.x版本仍然在一些老系统中发挥着重要作用。理解并掌握这些库的用途和工作原理,对于维护和升级这些系统至关重要。
Struts 1.3的电子商城系统可以作为一个基础,逐步升级到更先进的技术和架构,比如采用Spring Boot、MyBatis等。 总结来说,这个"电子商城系统-struts"项目展示了如何使用Struts 1.3和JSP来构建一个功能齐全的Web...
- **2.2 Struts原理、开发及项目实施** - 讨论了Struts的核心原理,以及如何使用Struts进行实际项目的开发。 - **2.3 使用Struts控制流** - 描述了如何使用Struts的控制流机制来管理应用的流程。 - **2.4 Struts的...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
《Struts1.x入门与提高系列教程 [Java参考文档].Struts1.3.chm》这份文档全面覆盖了Struts1的基础和高级主题。它可能包含了以下关键知识点: 1. **Struts1概述**:介绍Struts1的基本架构,包括控制器Servlet...