struts原理.doc_第1页
struts原理.doc_第2页
struts原理.doc_第3页
struts原理.doc_第4页
struts原理.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Struts1工作的基本原理1、 初始化ModuleConfig对象 Struts框架总控制器(ActionServlet)是一个servlet。 读取配置文件(struts-config.xml)的配置信息。 为不同的Struts模块初始化相应的ModuleConfig对象:ActionConfigControlConfigFormBeanConfigForwardConfigMessageResourceConfig 2、 Http请求用户提交表单或者调用URL向Web应用程序其提交一个请假,请求的数据用Http协议上传给web服务器3、 填充FormBean(实例化、复位、填充数据、校验、保存)(*.do请求)从ActionConfig中找出对应该请求的Action子类,如没有对应的Action,控制器直接转发给JSP或静态页面。如有对应的Action且这个Action有一个相应的ActionForm,ActionForm被实例化并用Http请求的数据填充其属性,并且保存在ServletContext中(request或session中),这样它们就可以被其它Action对象或者JSP调用4、 将请求转换到具体Action处理控制器根据匹配信息ActionConfig将请求派发到具体的Action,相应的FormBean一并传给这个Action的execute()方法5、 调用后台业务功能类完成业务逻辑Action一般只包含一个execute方法,它负责执行相应的业务逻辑(调用其他业务模块)。完毕返回一个ActionForward对象,控制器通过该ActionForward对象进行返回6、 返回目标相应对象Action根绝业务处理的不同结果返回一个目标相应对象给总控制器,该目标相应对象对应一个具体的JSP页面或另一个Action7、 查找响应(翻译响应) 转换Http请求到目标相应对象 总控制器根据业务功能Action返回的目标响应对象,找到对应的资源对象,通常是一个具体的JSP页面(也可以是下一个Action)8、 Http响应目标相应对象将结果展现给用户目标响应对象(JSP)将结果用户展现给用户配置文件的作用就是:将所有的控件绑定在一起。最主要的就是ActionForm,ActionServlet Action 还有一个就是strutsd的配置文件,也就是struts-config.xml文件。首先用户通过浏览器发送请求道前段的ActionServlet, 然后就是将Form表单的数据发送到Action进行处理,然后Action将forward keyword到ActionServlet。ActionServlet再将数据返回给浏览器。组件 ActionServlet 、 Action、 ActionMapping、 ActionForward、 ActionFormBeanStruts的MVC1、 模型:本质上来说在Struts中Model是一个商业逻辑类,开发者事先商业逻辑2、 视图:view是由与控制器servlet配合工作的一整套JSP定制标签库构成,利用他们可以快速建立应用系统的界面3、 控制器:前段控制器是一个servlet,它将客户端请求转发到相应的后端控制器Action类ActionServlet(中心控制器) 定义:继承自javax.servlet.http.HttpServlet类,是中心控制器(总控制器)。它提供一个中心位置来处理全部的终端请求(.do的请求)。 作用:接受请求、填充数据、派发请求、响应用户 配置:在web配置文件(web.xml)声明Action就是一个适配器(在请求与业务逻辑之间) 中心控制器(ActionServlet and RequestProcessor)派发给对应的Action 最终是要调用execute方法。1、 Action的实例化:需要看它的构造方法,Action的初始化是在发出该Action第一次请求的时候,不是在读取配置时初始化。2、 每个Action只会初始化一次。3、 Action是线程不安全的,因为所有的请求共享一个Action实例4、 怎样实现Action的安全性编程? (1)、注意不要用实例变量或者类变量共享指示针对某个请求的数据 (2)、注意资源操作的同步性 应用: 统计一个Action询问次数。 设计一个实例变量count ActionMapping 包括name、path、forward等属性其请求实例用于Action如何获取mapping实例,其是由控制器所传递过来的ActionForward(导航器)(代表了控制器跳转的目的地) ActionForward对象是配置对象。这些配置对象拥有独一无二的标识以允许它们按照name属性等来检索。ActionForward对象封装了向前进的URL路劲且被请求处理器用于识别目标视图 Name:逻辑名称 Path:页面或者模块访问路径Redirect 当其值为:false或者为No, 就利用RequestDispacherForward进行跳转 Path是相对前路径(相对路径) 当其值为:true或者为yes,就利用HttpServletReuqest sendRedirect进行跳转 Path需要写绝对路径ActionForm 工作原理 处理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()方法并执行注意:直接从ActionForm类继承的reset()和validate()方法,并不能实现什么处理功能,所以有必要自己重新覆盖 必须要有一个无参数的构造函数 Scope属性的缺省值就是session 调用setter方法,实质上是对象的标准setter方法。比如:username,就是调用的setUsername属性validate是校验的一个开关ActionMapping,Action,ActionForm这几个不同层次的组建相互协调工作。这些配置文件是在系统启动的时候,读入到内存中,供控制器使用的。 Web.xml struts-config.xmlAction Attribute用来存取form的关键字,缺省值与name一样。 Validate是用于控制是否校验表单,也就是相当于一个开关,true(缺省值)校验,false不校验Input:如果表单的校验失败不通过,则跳转到该值所代表的目标模块,一般结果validate为true来结合使用全局跳转:(global-forwards) Action A -error.jsp Action B-error.jsp Action C-error.jspAction A,B,C-error.jsp搭建自己的struts框架1、 ActionServlet读取配置dom4j填充form派发请求,调用对应的action的execute方法查找响应2、 ActionForm Reset Validate3、 ActionExecute()4、 ActionMapping 属性:PathNameTypeValidateAttribute HashMap-forward5、 ActionForwardNamePath6、 配置文件7、 ActionConfig保存所有的Action FormConfig分析: 穿件一个form对象-根据类的全名进行反射 需要把页面的参数名提取出来(request.getParameterName()-String) 把参数名与bean中的属性名进行【匹配。 如果能够进行匹配,就把取出来的值填充到bean中(借助BeanUtils) 保存form设计一个类FormUtilfileForm(HttpServletRequest request) 动态表单 ActionForm DynaActionForm 感性认识,可以不编写form代码 在form-bean 中配置name 和type属性即可 type=“org.apache.struts.action.DynaActionForm” 配置动态form需要配置用户添加的属性 Action异常处理机制需要在配置文件中配置,此标签中需要定义key属性。注意:此标签需要定义在forward标签前面。 需要新建一个资源文件,根据关键字去资源文件中查找错误信息 此资源文件需要被注册(message-resources) 出现异常则跳到异常页面,否则正常运行,直接跳入到forward所指定的页面 怎样使用1、 配置exception 可以指明:path、key、typePath:出现异常后的跳转页面的地址Key:异常信息的键,对应的值在资源文件当中。Type:所要处理的异常2、 在相应的Action中的execute方法抛出异常信息3、 在异常处理页面(path所指页面),使用标签打印提示信息 Struts插件Plugin为了方便在已有的系统上再添加其他的功能1、 生命周期方法init/destroy2、 用户提供setter方法,告诉ActionServlet中心控制把属性设置进去应用: 在struts启动时把hibernate加载进来(读取hibernate配置文件和打开hibernate的sessionFactoru)1、 环境:struts jar包+hibernate.jar包2、 设计一个类:hibernatePlugin实现plugin接口 属性:String hibernateConfigFile读取hibernate配置文件 打开SessionFactory Destroy3、 啊struts-config配置文件中填上一对,在plugin标签中加上属性设计: 把插件的生命周期交给中心控制器去管理可以在中心控制器ActionServlet的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论