自己实现Struts2(一)Struts流程介绍和环境搭建
来源:互联网 发布:英国诺丁汉大学知乎 编辑:程序博客网 时间:2024/05/17 23:45
为什么要自己实现Struts2
Struts2是无疑是一个经典的、优秀的框架,实现了MVC模式,层次结构清晰,而且还提供了一些非常有用的插件。当然了,我的目的不是为了介绍Struts2的全部功能,说老实话Struts2的很多功能我都没用过也不知道。虽然这几年Struts2已经式微,逐渐被Spring MVC替代,但是Struts2作为一个曾经非常流行的框架,它整体框架的实现思想无疑是十分优秀的,这系列的文章就会介绍怎么实现一个拥有Struts2框架流程的精简版Struts2。
我们习惯了拿来主义,很多人都不提倡重复造轮子,但是轮子用多了,就可能会丧失创造力。在我看来,实现一个框架,可以让你对它的整体框架有更深刻的思考,提高自己的创造力。引用一下钱老的话
钱学森:手上无剑与有剑不用不是一回事
自己不能造轮子和可以造轮子但是不造是两码事
需要什么知识
要自己实现一个精简版Struts2,你得知道Java Web的基本知识,像Servlet、Filter什么的,然后你得使用过Struts2,并且了解其中的一些核心功能。我会假设你满足上面的要求。
Struts2框架执行流程
先贴上一张Struts2的架构图
需要注意的是FilterDispatcher自2.1.3开始就被StrutsPrepareAndExecuteFilter替代了。
现在来介绍一下它是怎么一个流程
客户端提交一个请求,被StrutsPrepareAndExecuteFilter拦截到了(StrutsPrepareAndExecuteFilter配置的拦截路径一般都是/*)。
在StrutsPrepareAndExecuteFilter拦截到请求后会访问ActionMapper来分析请求信息以决定是否调用某个action(因为有可能请求的是其它的静态资源或者不符合规定后缀的)。
如果要访问action,那么StrutsPrepareAndExecuteFilter会把请求的处理交给ActionProxy对象。
ActionProxy对象会通过ConfigurationManager加载核心配置文件struts.xml(Struts的action的配置信息文件)。
ActionProxy读取到要访问的action的配置信息后创建一个ActionInvocation对象,ActionInvocation实现了命令模式,在action调用的前后递归地调用涉及到的拦截器(Interceptor)。
一旦action执行完毕,会返回一个result,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
好了,流程介绍完了,下面就来搭建一下我们的环境。
环境搭建
先新建一个Web工程,我把工程命名为JStruts2(我的英文名是Jason),工程名你们可以自行选择。然后导入一些需要用到的jar包
- commons-beanutils-1.9.3.jar : 封装请求参数的时候要用到,一个内省工具包
- commons-logging.jar : beanutils依赖的jar包
- dom4j-1.6.1.jar : 读取配置文件时用到,解析XML的
- jaxen-1.1-beta-6.jar : 配合dom4j,令其支持XPath(XML路径语言,不是很难的,不知道的可以去了解一下)
当然了,上面的这些jar包版本可以随意,不做强制要求。还需要注意的是我的工程用的字符集是UTF-8的。
现在就可以启动Tomcat运行一下了。
项目已经上传到Github上
https://github.com/HuangFromJYU/JStruts2
- 自己实现Struts2(一)Struts流程介绍和环境搭建
- struts2的介绍和搭建struts2环境
- struts2入门教程一(环境搭建,基本案例实现)
- struts2入门教程一(环境搭建,基本案例实现)
- Struts教程(一):搭建Struts环境,初步使用Struts
- 【Struts 2】Struts2环境搭建
- Struts2.x+Spring3.x+Hibernate4.x 整合(一)Struts环境搭建
- Struts2学习笔记(一):简介和环境搭建
- struts2 (一)自己实现struts2框架
- Struts2学习(一)【介绍与环境搭建和第一个例子】
- struts 学习笔记(一)--搭建环境
- Struts2知识点回顾(一)Struts工作流程
- Struts2(一)---概述及环境搭建
- 基于Struts2和hibernate的WebSocket聊天室的实现教程一:环境搭建
- Struts2平凡之路(一)struts2的下载和开发环境搭建
- Struts+Spring+Hibernate (一) 集成原理和搭建环境
- Struts2 环境搭建,版本号struts-2.3.15.1
- 003_Hello Struts(Struts2环境搭建)
- thinking in java——0325学习笔记
- PAT-B 1034. 有理数四则运算(20)
- 19. Remove Nth Node From End of List
- 梦联2.0互助优势——打造一个没有难民的互联网金融平台
- 显著减少项目gradle编译时间
- 自己实现Struts2(一)Struts流程介绍和环境搭建
- Java-String用法
- CUDA之静态、动态共享内存分配详解
- java多线程详解
- py2.7《机器学习实战》利用SVD简化数据
- Spring4 整合Hibernate4,Struts2
- Springmvc 利用apache.commons.fileupload上传文件
- CHttpConnection的使用
- Java 中String.split()的用法简介