struts 入门基础知识学习总结(转)
2009-03-31 22:42
936 查看
一.struts工作流程 1.客户端所有特定(在web.xml中url-pattern中设置)的请求都由ActionServlet处理。 2.ActionServlet根据struct-config.xml的配置信息,将请求转发给相应Action对象。 3.当客户端提交表单的时候,会自动创建ActionForm对象,并将数据保存在对象里。 4.Action对象可以获取ActionForm对象里的数据。 5.Action对象调用业务逻辑组件,来完成业务处理。 二.struts 控制器的功能 1.接收用户特定请求 2.根据用户的不同请求,调用对应的模型组件完成相应的业务逻辑。 3.获取业务逻辑结果。 4.根据当前的处理结果,选择合适的视图组件返回给客户。 三.struts 控制器中重要的类 struts 框架中控制器的基础时ActionServlet。它负责从struts-config.xml中读取数据并初始化struts应用程序,并接收所有的用户请求。然后将请求的处理指派给RequestProcessor类。RequestProcessor首先选择与请求关联的Action Form Bean,然后把表单中提交的数据存储在Action Form Bean 里,在验证Action Form Bean.最后选择在配置文件中对应的action类来调用模型组件,来执行请求。并把处理结果,通过视图组件响应给客户。 ActionServlet —> RequestProcessor —> Action RequestProcessor作为接收请求和执行请求的桥梁。 四. ActionServlet类 org.apache.struts.action.ActionServlet 类是继承HttpServlet类。既然继承HttServlet类,也就有 init(),doGet(),doPost(),destroy()方法。所有特定的用户请求(在web.xml文件url-pattern元素中配置)都由ActionServlet接收,然户交给RequestProcessor类处理,在根据struts-config.xml配置文件,把请求交给相应的Action来执行。 ActionServlet 使用process(request,response)自身方法来接收请求。在process方法中调用RequestPrcessor类的process方法。通过RequestProcessor类的process方法从struts-config.xml配置文件读取请求的URI,然后根据URI查找匹配的<action>元素。并根据<action>元素的name属性,查找相关联的<form-bean>元素,确定要用到的Action Form.获得Form Bean 的名称后,process方法创建由<form-bean>属性type命名Action Form的一个实例,然后用提交的数据填充,并调用Action Form的validata()方法验证提交的值。 此后才真正的开始处理请求,它首先从<action>元素的type属性获得Action类的一个实例,然后调用execute()方法返回一个Action Forward对象,最后确定应用程序下一个视图。 struts-config.xml文件默认位置在WEB-INF下,它也可用任何名称放在放置WEB-INF或子目录任何位置。 只要在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> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> 而Action Servlet 将根据URL的模式截取HTTP请求。 <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 只要提交.do的请求,都由ActionServlet接收。 五. RequestProcessor类 RequestProcessor类处理ActionServlet类接收到所有用户的特定(根据web.xml中url-pattern截取特定的请求)请求。将请求分解成多个任务,分别用不同的方法执行。 RequestProcessor类的部分方法 processPath() 获取客户端的请求路径 processMapping() 根据请求路径获取映射信息 processRoles() 检查用户角色是否允许访问资源 processForward() 处理<action-mapping>元素的forward以匹配当前请求的路径 processValidata() 调用Form Bean 的Validata()方法 processLocale() 位请求选择一个语言环境 processActionCreate() 实例化当前<action>元素type属性指定类的实例 processActionPerform() 调用action的perform()或execute()方法 processPreprocess() 告诉控制器调用此方法后,是否继续处理请求 如果开发人员要扩展ActionServlet类 ,一般是从RequestProcessor类着手。 要开发自己RequestProcessor类应遵循以下几步。 1.创建一个继承自org.apache.struts.action.RequestProcessor的类,在该类中显示定义一个无参,方法体为空的构造函数。 2.重写所需的方法。 3.修改struts-config.xml文件,在<action-mapping>元素后面加上一个<controller>的元素,用以指定自定义的RequestProcessor类。 <controller>元素的属性 processorClass 属性指定处理请求java类的完整类名。默认值是org.apache.struts.action.RequestProcessor。也可以设置成自定义的类,该类必须继承RequestProcessor。 contentType 指定http响应的内容内类和编码方式 local 是否把local对象保存到当前用户session中 六.Action类 Action类是用户请求和业务逻辑之间的桥梁。开发者可以创建Action的一个或多个子类,在子类中加入所需的业务逻辑代码,准备处理不同的页面请求。Action类调用execute()方法处理请求,并返回ActionForward对象,已确定控制权转交到何处提供响应。 execute()方法的各种参数含义 ActionMapping 是对struts-config.xml文件的映射 ActionForm 与当前请求相关联Action Form Bean HttpServletRequest 指http请求对象 HttpServletResponse 指http响应对象 七.ActionForward 类 ActionForward对象映射是配置文件struts-config.xml中<forward>元素,封装了响应页面的URI <forward>元素的属性 name 指定ActionForward的逻辑名,ActionForward根据findForward()方法查找相应的ActionForward对象 path 指定ActionForward的URI redirect 指定页面的跳转方式。默认值为false(forward),如果位true(redirect) 而ActionForward类的对象是由ActionMapping类的findForward()方法产生的。在服务器启动初始化,会对struts-config.xml的配置信息初始化,服务器会针对每个<action>元素创建一个与之对应的ActionMapping实例,该实例作为参数传递给Action的execute()方法。ActionMapping的映射信息存储在<ation-mapping>元素中 九.struts-config.xml的DTD <!ELEMENT struts-config(data-source?,form-bean?,global-exceptions?,global-forwards?,action-mapping?controller?,message-resource?,plug-in?)> 在struts配置文件中,必须按照DTD指定的顺序来配置,元素不能颠倒顺序。 |
相关文章推荐
- python基础知识学习总结
- [置顶] Java基础知识学习总结链接
- PostgreSQL入门学习之数据库连接相关基础知识
- 基础知识04 - 零基础入门学习汇编语言04
- 新手必看的PHP学习入门的一些基础知识
- Java基础知识学习总结(四)---Hashtable和HashMap的区别与联系分析
- Java基础知识学习总结(三)---关键字理论篇
- spring boot学习总结(一)-- 基础入门 Hello,spring boot!
- linux学习入门 基础部分(10)[1.ip基础知识2.配置ip3.gateway 网关 4.dns6 压缩,解压]
- 小菜鸟的Struts MVC和Java反射机制等知识的学习总结
- # Python 学习从入门到放弃(四)--类和模块的基础知识
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
- React Native 入门基础知识总结
- jQuery入门基础知识学习笔记
- 关于进行java学习和Android开发,本人认为的一些基础的入门必需知识,全程手敲
- 栋栋晓09:Javascript学习总结:基础知识1(语法、关键字和保留字、变量、数据类型、操作符)
- Java基础学习总结(46)——JAVA注解快速入门
- DB2学习总结(1)——DB2数据库基础入门
- 【SQLServer】T-SQL查询学习总结(2)[基础知识]
- 小白入门angular-cli的第一次旅程(学习目标 学习目标 1. 路由基础知识)补充学习