- 浏览: 211979 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 18840字母和数字键的键码值(keyCode) 按键 键 ... -
Hibernate基于注解_Oracle
2012-10-10 23:30 1093不细说了直接上代码 代码中的注释可以参考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 1338将一年前写的SSH基于配置的改成 Hibernate基于注解的 ... -
备份配置 - spring
2011-04-16 20:43 609<?xml version="1.0" ... -
Hibernate-学习笔记06-Relationship-One2One
2011-04-14 20:57 1055Hibernate真的很强大,尤其是在关系这方便,方便到只要你 ... -
Spring-学习笔记01-CrossCuttingConcern
2011-04-14 19:30 882近做Spring试验发现了个问题: 1、advice不能监控 ... -
Hibernate-学习笔记05-数据持久化的三种状态
2011-04-13 20:26 1432Hibernate 数据持久化 ... -
Hibernate-学习笔记04-数据更新方法
2011-04-13 20:02 4197试验目的: 更新数 ... -
Hibernate-学习笔记03-getCurrentSession和openSession区别
2011-04-12 19:52 1502SessionFactory得到Session的方法有两种ge ... -
Hibernate-学习笔记01
2011-04-11 15:53 1056第一个Hibernate小程序 Hiberna ... -
Interceptor的初步认识
2011-03-31 18:15 1074一个名称 : AOP(Aspect ... -
Struts2 Action中的数据填充
2011-03-31 13:53 1870开门见山 直接上代码 ... -
struts-笔记-7
2011-03-18 16:02 8668 Dynamic ActionForm ... -
struts-笔记-6
2011-03-18 16:01 9887 标签 Struts ... -
Struts-笔记-4
2011-03-18 15:55 7714.Struts 工作原理和开发流程 4 ... -
Struts-笔记-3
2011-03-18 15:54 10763. 用 struts 开发简单的登录示例程 ... -
Struts-笔记-2
2011-03-18 15:53 8322 . 搭建 Struts 开发环境 ... -
Struts-笔记-1
2011-03-18 15:50 833******************************* ...
相关推荐
struts-2.3.4-all.zip 笔记
NULL 博文链接:https://xiaotao-2010.iteye.com/blog/966651
NULL 博文链接:https://pp-vv-pp.iteye.com/blog/703620
如何搭建struts2环境——/struts-normal/如何搭建struts2环境.txt
简洁易懂,涵盖基础Servlet+Struts1介绍+Hibernate相关。
STRUTS经典笔记STRUTS经典笔记STRUTS经典笔记STRUTS经典笔记STRUTS经典笔记
struts笔记,还行。 笔记、java、struts、架构。
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
黑马程序员Struts2笔记,包括前两天的内容,不包括源码,只是笔记文档
struts2笔记
struts2学习笔记,非本人所写,但有学习的价值,总结的很好,分享一个!
struts标签-HTML标签笔记
struts笔记
Struts2笔记 本人工作中积累的,故做成笔记以供大家一起学习进步. 模块分的非常详细,各个细节都会关注到,只挑选其精华,工作中用得到的技术!!! 不要看资源小,起到的作用却非常大!!!
毕生学习struts2的学习笔记,整理了好久,实打实的干货
自己学习struts的笔记,希望对大家有一点点帮助。
struts2学习笔记总结