`

struts1.3-基础及原理

阅读更多

网站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标签

分享到:
评论

相关推荐

    struts1.3.jar

    总结来说,"struts1.3.jar"包含了Struts 1.3框架的核心组件,是开发基于MVC模式的Java Web应用的基础。尽管Struts 1.3已被更现代的框架如Spring MVC取代,但它在早期Web开发中的地位不可忽视,其设计理念和实践方法...

    struts1.3 jar包

    Struts1.3 jar包是Apache软件基金会的Jakarta Struts项目中的一个核心组件,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个框架极大地简化了开发人员在构建动态、数据驱动的Web应用程序...

    struts是1.3API

    Struts 1.3 是Struts框架的一个重要版本,它在1.2的基础上进行了改进和增强,旨在提高开发效率,提供更好的可扩展性和性能。以下是一些Struts 1.3 API中的关键知识点: 1. **Model-View-Controller (MVC) 模式**:...

    taglib(struts1.3)源码

    7. 学习路径:首先,了解JSP标准标签库(JSTL)的基础知识,然后深入学习Struts1.3的架构,接着关注Action和Form Bean的生命周期。最后,针对每个具体的标签类,查看其解析方法和执行流程。 8. 实践应用:理论学习...

    struts1.3.rar

    这个“struts1.3.rar”压缩包包含了Struts 1.3版本的核心库和其他相关依赖,使得开发者能够快速地搭建和运行Struts应用。下面我们将深入探讨Struts 1.3的关键组件和它们在开发过程中的作用。 1. **Struts Core** (`...

    struts 1.3 API.zip

    在本文中,我们将深入探讨Struts 1.3的主要组件、工作原理以及如何利用其API进行开发。 1. **核心概念** - **Action**:这是处理用户请求的核心组件,实现了`com.opensymphony.xwork2.Action`接口。当用户发送...

    struts 1.3 框架的源代码

    Struts 1.3框架是Apache软件基金会的一个开源项目,它是Java EE平台上用于构建MVC...通过分析源码,开发者不仅可以提高对框架的理解,还能积累经验,为将来使用更高级的框架如Spring MVC或Struts 2打下坚实的基础。

    struts1-core.jar

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构...尽管如此,学习Struts1可以帮助理解MVC模式以及Java Web开发的基本原理,为进阶其他框架打下基础。

    struts1.3&2.0 api

    学习Struts的API可以帮助开发者更好地理解框架的工作原理,提高开发效率,同时为其他MVC框架的学习打下基础。无论是初学者还是经验丰富的开发者,都应该深入理解这两个版本的区别和联系,以便在实际项目中做出最佳...

    struts1.3 and struts2 API chm格式

    这个压缩包包含了Struts1.3和Struts2两个版本的API文档,以CHM(Compiled Help Manual)格式提供,这是一种常见的Windows帮助文档格式,便于用户离线查阅。 Struts1.3是Struts框架的第一个稳定版本,它在Web开发...

    struts-1.3.9 源码

    `src`目录包含了Struts框架的核心源代码,我们可以从这里深入理解Struts的工作原理。它通常包括以下部分: 1. **org.apache.struts.action**:这是Action包,包含了处理用户请求的核心类,如`Action`、`ActionForm`...

    struts1.3代码

    总之,这个"struts1.3代码"实例是一个基础的Java Web项目,展示了如何结合Struts框架、SQL Server 2000数据库和分页技术来开发Web应用。对于初学者,这是一个很好的学习资源,有助于理解Struts的工作原理以及如何将...

    struts1.3 demo

    通过分析这个"struts1.3 demo",开发者可以深入理解Struts1的工作原理,学习如何组织一个简单的CRUD(创建、读取、更新、删除)应用,同时掌握处理乱码问题的方法,这对于理解Web应用的开发流程和架构设计具有重要...

    struts-1.3.5源码包级文档

    通过研究这个源码包级文档,开发者不仅能深入理解Struts 1.3.5的工作原理,还能提升对MVC设计模式的理解,为后续使用更新的Web框架如Struts 2或Spring MVC打下基础。同时,对于维护旧系统的开发者来说,这将是一份...

    韩顺平spring雇员管理系统struts-1.3.8-lib jar包

    Struts是Apache软件基金会下的一个开源项目,是一个用于...虽然现在Struts已经发展到了2.x版本,但1.3.x版本仍然在一些老系统中发挥着重要作用。理解并掌握这些库的用途和工作原理,对于维护和升级这些系统至关重要。

    电子商城系统-struts

    Struts 1.3的电子商城系统可以作为一个基础,逐步升级到更先进的技术和架构,比如采用Spring Boot、MyBatis等。 总结来说,这个"电子商城系统-struts"项目展示了如何使用Struts 1.3和JSP来构建一个功能齐全的Web...

    struts从入门到精通.doc

    - **2.2 Struts原理、开发及项目实施** - 讨论了Struts的核心原理,以及如何使用Struts进行实际项目的开发。 - **2.3 使用Struts控制流** - 描述了如何使用Struts的控制流机制来管理应用的流程。 - **2.4 Struts的...

    struts2 学习重点笔记

    - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...

    struts1教程

    《Struts1.x入门与提高系列教程 [Java参考文档].Struts1.3.chm》这份文档全面覆盖了Struts1的基础和高级主题。它可能包含了以下关键知识点: 1. **Struts1概述**:介绍Struts1的基本架构,包括控制器Servlet...

Global site tag (gtag.js) - Google Analytics