- 浏览: 216732 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
SpringMVC初探_(1) -
LinApex:
测试,如何看性能,如何评比各种服务器,你也写篇日志呗
压力测试 (LoadRunner+Websphere +Tomcat) -
tanying2869:
没找到附件
集成struts2 spring hibernate,使用注解 -
xiaotao.2010:
ranwei09321115 写道晕 不是免费的!...我也发 ...
各种免费的Webservice接口 -
xiaotao.2010:
gaoxingang2008 写道这些方法 都用了 还是不行呀 ...
禁用浏览器后退按钮
6.Struts 的 MVC 组件
6.1 组件
ActionServlet , Action Classes , Action Mapping (包含 ActionForward ), ActionForm Bean 。
6.2 Struts 中的 MVC :
1 、模型( Model ):本质上来说在 Struts 中 Model 是一个商业逻辑类,开发者实现商业逻辑。
2 、视图( View ), View 是由与控制器 Servlet 配合工作的一个整套 JSP 定制标签库构成,利用他们可以快速建立应用系统的界面。
3 、控制器( Control ),前端控制器(中心控制器)是一个 Servlet ,他将客户端请求转发到相应的后端控制器 Action 类 。
6.3 ActionServlet( 中型控制器 )
定义:
继承自 javax.servlet.http.HttpServlet 类,是中心控制器(总控制器)。它提供一个中心位置来处理全部的终端请求。
作用:
接受请求、填充数据、派发请求、相应用户
配置:
在 Web 配置文件( web.xml )声明。
例:
<servlet>
<servlet-name>action </servlet-name>
<servlet-class> org.apache.struts.action.ActionServlet </servlet-class>
</servlet>
<servlet- mapping >
<servlet-name> action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Struts1.3_API 对 ActionServlet 配置文件的说明
6.4 Action 原理(后端控制器 Action 类)
后端控制器 Action 类:
问题:
1、 Action 什么时候初始化?
发出该 Action 请求,不是在读取配置时初始化。
2、 Action 会初始化几次?
每个 Action 指挥初始化一次。
3、 Struts _1 中的 Action 是线程不安全的,因为所有请求共享一个 Action 实例。
编程人员需要将它变得安全( Struts_2 中的 Action 是安全的)。
Struts_1 API_Action
4、 怎样实现 Action 的安全性编程。
n 注意不要用实例变量或者类变量共享只是针对某个请求的数据
n 注意资源操作的同步性。
应用( Action 不安全性的):
统计一个 Action 访问次数。(创建同步性)
代码:
6.5 Action Mapping
l 每一个 <action> 元素都与类 org.apache.struts.action.ActionMapping 的一个实例对应。
包括:
<action path=”” type=”” name=””>
<forward name=”” path=””> </forward>
</action>
代码实例:
< action-mappings >
< action path = "/login" type = "com.ibm.LoginAction" name = "loginForm" >
< forward name = "loginSuccess" path = "/LoginSuccess.jsp" ></ forward >
< forward name = "loginFailure" path = "/LoginFailure.jsp" ></ forward >
</ action >
</ action-mappings >
使用 mapping 中的方法:
注意:
Mapping 类中的 只能使用使用 mapping.getX(); 方法。
Mapping.setX() ;方法被冻结 不能由用户使用。若用户强行使用抛出
异常。(此处体现出软件设计思想)
6.6 ActionForward (导航器)
实例:
ActionForward 对象是配置对象。这些配置对象拥有独一无二的标识以允许他们按照 name 属性等来检索。
ActionForward 对象封装了向前进的 URL 路径且被请求处理器用于识别目标视图。
属性 :
Name : 逻辑名称。
Path : 页面或者模块访问路径。
Redirect :
False ( no ): ------ResquestDispacher.forwa () ;容器内跳转
Path= “相对路径”;
True ( yes ): -----HttpServletResponse.sendRedirect(); 容器外跳转
Path= “绝对路径”;例: path=”http://www.baidu.com”;
6.7 ActionForm
工作原理
处理 ActionForm 的一般步骤:
1、 检查 Action 的映射,确定 Action 中已经配置了对 ActionForm 的映射。
2、 根据 name 属性,查找 form bean 的配置信息。
3、 检查 Action 的 form bean 的使用范围,确定在此范围下 (request,sesstion), 是否已经有次 form bean 的实例。(作用范围: scope )
4、 假如当前范围下,已经存在了此 form bean 的实例,而是对当前请求来说,是同一种类型的话,那么就重用。
5、 否则(当前范围下,没有此 form bean 的实例),就重新构建一个 form bean 的实例(调用构造方法),并且保存在一定作用范围。
6、 Form bean 的 reset() 方法被调用
7、 调用相应的 setter 方法,对状态属性赋值
8、 如果 validate 的属性设置为 true ,那么就调用 form bean 的 validate() 方法。( validate :校验)
9、 如果 validate() 方法没有返回任何错误,控制器讲 ActionForm 作为参数,传给 Action 实例的 execute() 方法并执行。
注: reset ()和 validate () 方法是直接继承于 ActionForm 类,并不能实现什么处理能力,所以必须重写覆盖。
调用构造方法
(后有分析)
Input
所指路径
注意:
1、 无参构造方法必须有
2、 Scope 缺省值是 session
分析:
Scope.setAttribute ();
3、 从过程去查看
HttpSessionAttributeListener
ServletRequestAttributeListener
4 、从结果去查看
备注: 1 、(在 Action 拿到 Form 的值)
// 测试实例化一个 FORM 并加入 Scope.setAttribute ( name , form )
// 等到这个 AddStudnetForm 的实例 AddStudentForm addStudentFormInScope = null ;
// 判断传递的作用范围 (request||session) if (mapping.getScope().equals( "request" )){ // 得到从 request 作用范围类传递的 AddStudentForm 的实例; addStudentFormInScope = (AddStudentForm)request.getAttribute( "addStudentForm" ); } else { // 得到从 session 作用范围内传递的 AddStudentForm 的实例; addStudentFormInScope = (AddStudentForm)request.getSession().getAttribute( "addStudentForm" ); } System. out .println(addStudentFormInScope.getMajor());
System. out .println(addStudentFormInScope.getScore());
System. out .println(addStudentFormInScope.getSname());
// 参数 Form 和中心控制器放入的 Form 是相同的 if (addStudentFormInScope == form){ System. out .println( "addStudentFormInScope == form" );
} |
2 、 JSP 页面提交表单传入参数时, Form 实例化时调用 JSP 表单参数对应的标准的 set 方法。
比如: JSP 页面提交参数(标签的 name=’’ 属性)是 username;
Form 则去调用 相对应的 setUsername(); 方法。而不是 Form 的 username 属性。
3 、 validate ( ActionMapping mapping,javax.servlet.http.HttpServletRequest request )
Org.apache.struts.action.ActionForm
Return super.validate(mapping,request);
注:此处的返回值 super.validate(mapping , request) = null;
Validate 属于 <action ></action> 属性
例:
< action path = "/addStudentAction" type = "com.ibm.AddStudentAction" name = "addStudentForm" validate = "true" > |
若不写,则默认为 validate = “true”;
发表评论
-
键码(KeyCode)
2013-02-28 16:32 18987字母和数字键的键码值(keyCode) 按键 键 ... -
Hibernate基于注解_Oracle
2012-10-10 23:30 1177不细说了直接上代码 代码中的注释可以参考Hiberna ... -
1111111
2012-08-24 14:35 0{id=news_ln_statistics, categor ... -
my aa
2012-07-18 17:15 19女士们,先生们,早上好!很荣幸有机会参加此次面试。我希望今天 ... -
SSH 配置文件
2011-04-18 15:50 1368将一年前写的SSH基于配置的改成 Hibernate基于注解的 ... -
备份配置 - spring
2011-04-16 20:43 680<?xml version="1.0" ... -
Hibernate-学习笔记06-Relationship-One2One
2011-04-14 20:57 1082Hibernate真的很强大,尤其是在关系这方便,方便到只要你 ... -
Spring-学习笔记01-CrossCuttingConcern
2011-04-14 19:30 910近做Spring试验发现了个问题: 1、advice不能监控 ... -
Hibernate-学习笔记05-数据持久化的三种状态
2011-04-13 20:26 1458Hibernate 数据持久化 ... -
Hibernate-学习笔记04-数据更新方法
2011-04-13 20:02 4232试验目的: 更新数 ... -
Hibernate-学习笔记03-getCurrentSession和openSession区别
2011-04-12 19:52 1535SessionFactory得到Session的方法有两种ge ... -
Hibernate-学习笔记01
2011-04-11 15:53 1102第一个Hibernate小程序 Hiberna ... -
Interceptor的初步认识
2011-03-31 18:15 1107一个名称 : AOP(Aspect ... -
Struts2 Action中的数据填充
2011-03-31 13:53 1916开门见山 直接上代码 ... -
struts-笔记-7
2011-03-18 16:02 9048 Dynamic ActionForm ... -
struts-笔记-6
2011-03-18 16:01 10557 标签 Struts ... -
Struts-笔记-4
2011-03-18 15:55 8024.Struts 工作原理和开发流程 4 ... -
Struts-笔记-3
2011-03-18 15:54 11103. 用 struts 开发简单的登录示例程 ... -
Struts-笔记-2
2011-03-18 15:53 8692 . 搭建 Struts 开发环境 ... -
Struts-笔记-1
2011-03-18 15:50 870******************************* ...
相关推荐
5. **Tiles 模块**:Tiles 是一个页面布局框架,允许开发者创建可重用的页面片段,并组合成完整的页面。Struts 2 可以与 Tiles 结合使用,提供更复杂的应用程序布局。 6. **异常处理**:Struts 2 提供了全局和局部...
Struts-笔记-1很可能是对学习或研究Struts框架过程中的重要记录,它可能包含了初学者如何理解Struts的核心概念、架构以及如何在实际项目中应用的要点。 首先,Struts框架的起源和发展对于理解其重要性至关重要。...
标题 "记录-笔记-用ANT构建-struts-spring-hibernate" 暗示了这篇笔记主要涉及使用Apache Ant工具来构建一个整合了Struts、Spring和Hibernate的Java Web项目。Struts是MVC(模型-视图-控制器)框架,Spring是全面的...
这份“Servlet-Struts-Hibernate笔记分享”涵盖了这三者的基础知识,旨在帮助开发者构建功能丰富的Web应用程序。 Servlet是Java提供的一种用于扩展服务器功能的接口,它允许开发者编写代码来处理HTTP请求并生成响应...
### Struts2 综合知识点解析 #### 一、Struts2 概述与历史背景 **Struts2** 是一款流行的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发过程。Struts2 提供了一...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
### Struts概述与核心概念 #### 一、Struts简介 **Struts** 是由 Apache 开源联盟提供的一套基于构建 Java Web 应用程序的框架。它的目标是分离 Web 程序的表示层(View)、控制层(Controller)和模型层(Model)...
张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...
5. **`web.xml`**:虽然不是Struts2专有的配置文件,但在其中通过`<include>`标签引用其他配置文件(如`struts-part1.xml`),可以实现更灵活的配置管理。 #### 五、流程控制结果类型 Struts2支持多种结果类型,...
本笔记主要涵盖了Struts2的基础知识,包括但不限于配置、Action、拦截器、结果类型以及异常处理等内容。 1. **Struts2框架简介** Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,弥补了Struts1在...
Struts2 学习笔记-part2: 实现用户登录功能 在上一部分中,我们了解了构建一个基于Struts2的Java Web项目所需的基本库和配置文件。现在,我们将逐步实现一个简单的用户登录功能。 一、创建Action类 在Struts2框架...
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...
5. **其它配置文件**:如velocity.properties、struts-default.vm、struts-plugin.xml,分别用于Velocity模板引擎、默认视图模板和插件配置。 #### 三、工具集成与开发技巧 **MyEclipse提示xml信息**:为了在编写...
在本学习笔记中,我们将深入探讨 Struts 1.3.8 的核心概念、功能以及实际应用。Struts 为开发者提供了构建动态 Web 应用程序的结构框架,简化了开发流程,增强了代码的可维护性和可扩展性。 首先,我们来了解 MVC ...