Struts2学习——(一)基本概念概述
2015-11-27 15:52
225 查看
今天开始接触java web的框架部分。马克一记。
为了简便开发的过程,在学习中我用Myeclipse10作为开发工具。新建一个web project,之后右键工程“Myeclipse”→“Add struts capabilities...”添加struts支持。在今后的学习中,我都是用struts2,所以在这里添加支持的时候我选择的是struts2.1。finish之后,可以看到在web.xml中已经对struts2的filter做了配置,以及在src文件夹下自动生成了struts.xml配置文件。现在我唯一知道的是,每配置一个action,都需要在struts.xml中配置。
接下来,知道了如何配置,我就要开始继续学习里面的基本流程以及各种组成部件了。
提到框架,不得不提到的就是和MVC模式中的M模型、V视图、C控制器的对比了。在struts2中,他们分别通过动作(action)、结果(result)和过滤调度器(FilterDispatcher)来实现。
一、核心控制器FilterDispatcher
在struts1中,采用的是简单的servlet(ActionServlet)来管理控制的,而在2中则是采用特殊servlet——过滤器来处理请求。
在后面整合s2sh的时候,发现struts2.3.24.1配置过滤器的时候用的是:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个
类。如果用上面讲的类会报奇怪的错误,马克。
该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求。如果请求以.action结尾,则请求转入框架处理。这里要注意配置的方式,如果url-pattern设置为/*,则表示对所有文件过滤,在提交表单时不必以.action结尾。
二、业务处理器Action
在配置中,最重要的就是配置action。其中包含了对用户请求的逻辑处理,因此Action也称为业务处理器。
Action类完全是一个普通的POJO(简单java对象)。为了简化Action开发,我们经常通过继承ActionSupport类来简化过程。
Struts2的动作组件有两个作用。第一,一个action将业务逻辑调用封装到一个单独的工作单元中。第二,action是一个数据传输的场所。仅仅有数据,或者仅仅有业务逻辑,都不能获得最后的返回视图,也就是不能返回给用户正确的信息。
三、视图View
将应用程序的状态转换为一种用户可以与之交互的可视化的表示。根据action的不同返回值,可以获得不同的视图返回结果。
需要记住的是,Struts2框架中不仅仅包含MVC组件,为了实现整洁的MVC模式,同时依赖其他几个参与每一个请求处理的关键架构组件的帮助,包括:拦截器、OGLN、valuestack等。
四、拦截器
拦截器是一种可以在请求处理之前或者之后执行的struts2组件。(通常没有必要在之前和之后都执行,但是他们确实可以做到)它提供了一种在其中定义不同的工作流和横切任务的架构组件,以便能够简单的重用这些组件,并且能够与其他架构关注点分离。
什么样的任务应该放在拦截器中执行呢?比如说日志(log)。日志应该在每一个action被调用的时候记录,但通常来说不应该放在action内部,因为它通常不是action工作单元的一部分。如果细分的话,他应该时域高层系统管理的范畴。因此在这里使用拦截器,同时分离和重用这些横切关注点。
为了简便开发的过程,在学习中我用Myeclipse10作为开发工具。新建一个web project,之后右键工程“Myeclipse”→“Add struts capabilities...”添加struts支持。在今后的学习中,我都是用struts2,所以在这里添加支持的时候我选择的是struts2.1。finish之后,可以看到在web.xml中已经对struts2的filter做了配置,以及在src文件夹下自动生成了struts.xml配置文件。现在我唯一知道的是,每配置一个action,都需要在struts.xml中配置。
接下来,知道了如何配置,我就要开始继续学习里面的基本流程以及各种组成部件了。
提到框架,不得不提到的就是和MVC模式中的M模型、V视图、C控制器的对比了。在struts2中,他们分别通过动作(action)、结果(result)和过滤调度器(FilterDispatcher)来实现。
一、核心控制器FilterDispatcher
在struts1中,采用的是简单的servlet(ActionServlet)来管理控制的,而在2中则是采用特殊servlet——过滤器来处理请求。
struts1.x 中 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 。。。 < /servlet> Struts2.X 中 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
在后面整合s2sh的时候,发现struts2.3.24.1配置过滤器的时候用的是:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个
类。如果用上面讲的类会报奇怪的错误,马克。
该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求。如果请求以.action结尾,则请求转入框架处理。这里要注意配置的方式,如果url-pattern设置为/*,则表示对所有文件过滤,在提交表单时不必以.action结尾。
二、业务处理器Action
在配置中,最重要的就是配置action。其中包含了对用户请求的逻辑处理,因此Action也称为业务处理器。
Action类完全是一个普通的POJO(简单java对象)。为了简化Action开发,我们经常通过继承ActionSupport类来简化过程。
Struts2的动作组件有两个作用。第一,一个action将业务逻辑调用封装到一个单独的工作单元中。第二,action是一个数据传输的场所。仅仅有数据,或者仅仅有业务逻辑,都不能获得最后的返回视图,也就是不能返回给用户正确的信息。
三、视图View
将应用程序的状态转换为一种用户可以与之交互的可视化的表示。根据action的不同返回值,可以获得不同的视图返回结果。
需要记住的是,Struts2框架中不仅仅包含MVC组件,为了实现整洁的MVC模式,同时依赖其他几个参与每一个请求处理的关键架构组件的帮助,包括:拦截器、OGLN、valuestack等。
四、拦截器
拦截器是一种可以在请求处理之前或者之后执行的struts2组件。(通常没有必要在之前和之后都执行,但是他们确实可以做到)它提供了一种在其中定义不同的工作流和横切任务的架构组件,以便能够简单的重用这些组件,并且能够与其他架构关注点分离。
什么样的任务应该放在拦截器中执行呢?比如说日志(log)。日志应该在每一个action被调用的时候记录,但通常来说不应该放在action内部,因为它通常不是action工作单元的一部分。如果细分的话,他应该时域高层系统管理的范畴。因此在这里使用拦截器,同时分离和重用这些横切关注点。
相关文章推荐
- NetBeans中打包jar与exe4j将其打包成exe运行文件
- [转]MD5加密算法的java实现
- java中form以post、get方式提交数据中文乱码问题总结
- 【JAVA】使用javax.mail发送邮件
- jvm加载class文件的原理机制
- 调试jdk源码显示变量值
- 关于Quartz2.2.1的简单使用
- SSH:Hibernate框架(Hibernate查询排序和组件映射)
- Eclipse保存验证JS缓慢
- java设计模式----装饰器模式
- 如何在Eclipse开发环境进行android应用调试
- Java基础技术
- 将Java Project (非web项目)打成Jar包并实现相关功能
- spring中的事物管理的5种实现方式的总结
- eclipse导入工程失败解决方法
- javaWeb 复习系列(二)
- Java 选择排序 (Selection Sort)
- [Struts]Struts2 - 常用的constant总结
- 性能分析工具Eclipse Memory Analyzer tool(MAT)
- JavaSript模块规范 - AMD规范与CMD规范介绍