`

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

分享到:
评论

相关推荐

    Struts2 in action中文版

    1.3 Struts 2框架 9 1.3.1 Struts 2简史 9 1.3.2 Struts 2概览:MVC模式 10 1.3.3 Struts 2的工作原理 12 1.4 小结 14 第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 声明架构的两种方式 17 ...

    struts2讲义_吴峻申

    1.3 我们为什么要用Struts2 17 1.4 Web项目中使用Struts2初探 20 第2章 Web基础技术简介 31 2.1 B/S和C/S系统区别 31 2.2 JSP和Servlet介绍 32 2.3 XML知识介绍 34 第3章 Struts2核心技术 37 3.1 使用web.xml配置...

    structs程序设计从入门到精通word文档

    2.2 Struts原理、开发及项目实施 8 2.3使用STRUST控制流 8 2.4讨论STRUTS的优缺点 9 2.5 Struts入门经验 9 2.6用strtus制作登陆页面: 9 第3章Struts 基础学习 9 3.1Struts标记库 9 3.2Struts框架基础篇 9 3.3Struts...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    Java Web应用详解.张丽(带详细书签).pdf

    1.3 MyEclipse的安装及配置 1.4 MySQL的安装及配置 第2章 HTML及其应用 2.1 网页设计流程 2.2 HTML的基础知识 2.3 HTML文档结构 2.4 HTML常用标记 第3章 CSS及其应用 3.1 CSS的基础知识 3.2 DIV基础知识 ...

    JAVA WEB典型模块与项目实战大全

    1.3 基础技术简单简介  1.4 核心框架初步认识  1.5 小结  第2章 myedipse开发工具对各种框架的支持  2.1 使用jsp的两种模式  2.2 struts框架的实现  2.3 hibernate框架的实现  2.4 jpa框架的实现  ...

    Java Web程序设计教程

    第14章spring与struts2、hibernate框架的整合基础 277 14.1spring与struts2的整合方式 277 14.1.1struts2应用的扩展方式 277 14.1.2spring插件的应用 278 14.2spring和hibernate的整合 279 14.2.1spring对...

    Spring攻略(第二版 中文高清版).part2

    1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 1.4.1 问题 17 1.4.2 解决方案 17 1.4.3 工作原理 17 1.5 指定Bean引用 20 1.5.1 ...

    Spring攻略(第二版 中文高清版).part1

    1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 1.4.1 问题 17 1.4.2 解决方案 17 1.4.3 工作原理 17 1.5 指定Bean引用 20 1.5.1 ...

    网上商店系统的设计与实现(论文)

    2.3 Struts+Hibernate+Spring的技术原理 5 2.3.1 Struts技术原理 5 2.2.3 Hibernate技术 7 2.2.3 Spring技术 8 第3章 系统的分析 10 3.1 系统可行性分析 10 3.1.1 技术上可行性分析 10 3.1.2 经济上可行性分析 10 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    基于Java Web的学生成绩信息管理系统_学位论文

    第二章 基础知识及相关设计原理 2.1 Java 相关技术简介 2.1.1 Java 简介 2.1.2 JSP 技术简介 2.1.3 JDBC 简介 2.2 B/S 模式分析 2.3 Struts 框架 2.4 Servlet 技术 2.5 开发工具介绍 2.5.1 Eclipse 介绍 ...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    文献综述 摘 要 Web开发技术和Web开发框架整合实践研究是这个时代的一个热点,本文在参阅国内 外Web开发技术和Web开发框架及主要几个框架相关文献的基础上,对Web开发框架研究作 了较为全面的总结和梳理,并结合Web...

    java web 视频、电子书、源码(李兴华老师出版)

    0415_Struts基础开发 0416_Struts常用标签库 0417_Struts高级开发 0500_第五部分:附录 0518_附录A:实用工具 0519_附录B:MyEclipse开发工具 电子书目录: MLDN 李兴华 Java Web 开发实战经典.pdf (高清版)...

    Java全套知识体系

    文章目录一、Java基础1.1 多线程1.2 内存优化1.3 日志输出log4j21.4 lombok二、Java框架2.1 Spring2.1.1 IOC\AOP2.1.2 事务2.2 SpringMVC2.2.1 六大组件介绍和分析2.2.2 策略模式适配器模式2.3 MyBatis2.3.1 框架...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) 第16...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) ...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) 第16...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) 第16...

Global site tag (gtag.js) - Google Analytics