Struts2 源码分析——前言
笔者简言 |
笔者在博园里面注册是在二年前。可是那个时候我不知道要写些什么,也怕写出来被别人骂误人子弟。而现在却动笔了是因为前一段时间内我去参加一些大公司的面试,让笔者内心深处留下很多问号。最近三年来我一直从事.NET方面的开发。对于现在的公司我并不是很开心,原因有很多。最重要是公司让我失信于人,心灰意冷。所以我就想出去看看,也就有了面试大公司的事情。其中有一家做跟车相关的技术主管说对我的技术表示怀疑,怕我不能上手JAVA。所以我就想着借助博园来帮我复习记录,同时希望能帮助他人了解Struts2。如果有写不好的地方,也请个各读者见凉。
记得第一次接触Strust系列相关的知识点是在2008年下学期某JAVA培训机构里面(那个时候我是一名在校生)。struts1这就是样子出现在我的面前,对他我冲满好奇和渴望。用了一周的时间学习他的机制和软件思想。这也是我第一次明白软件思想的魅力(MVC思想)。我不清楚Struts2是什么时候出现,我只能记得大概是在我学完Struts1之后半年出现了。那个时候很多人会问Struts1是不是Struts2的升级版。当然对这样子的问题,我还只能说声——管他的,只要是好的框架我都学。如果非要认真来讲的话,笔者认为都是MVC框架,但Struts2要比struts1来得好一些。当然智者见智仁者见仁,并没有一个准确的说活。struts2实际是在Webwork框架上引入strtus1部分思想(当然这是我的认个看法)。
注意: 1.笔者只是对Struts2进行源码分析,并不是对Struts2如何使用进行讲解。所以如果不了解Struts2或是JAVA初学者最好不要看,
请先学好相关的JAVA知识和Struts2知识在来。
2.笔者在写这一系列的文章的时候,定位只是用于指引我复习的便利,所以并非是针对于学习教程的。所以请读者见凉。
学习环境 |
1.Eclipse 4.5.2 (Mars)
2.JDK 1.7
3.Pache-tomcat-7.0.70
4.struts-2.5.2
学习准备 |
不管是进行什么样子的源码学习,我们一定要先拿到对应的源码才行(源码下载:1.官网:http://struts.apache.org/download.cgi。2.Github:https://github.com/apache/struts )。当我们下载源码解压打开就有如图下的文件目录。我们将要用到的是Apps文件里面的struts2-showcase.war。请在用解压软件打开解开就会拿到我们需要的项目源码。这也是我们将来学习源码的项目环境。
我用Eclipse新建了一个名为Showcase的动态Web项目。然后把源码复制到项目里面。如图下就是复制之后
我们可以看到这个项目大部的Struts2的知识都用到了。所以我们完全可以在这上面进行二次开发。项目现在是有了,但是如果只是这个的话,显示是不够的。我们还要有运行这个项目对应的服务器。我的选择是Tomcat 作为我项目的服务器是因为他是一个小型的服务器。相关的eclipse和Tomcat配置的知识点的话。这里不作介绍。下图是运行项目成功后。
Struts2 源码分析——前言的更多相关文章
- Struts2 源码分析——Hello world
新建第一个应用程序 上一章我们讲到了关于struts2核心机制.对于程序员来讲比较概念的一章.而本章笔者将会亲手写一个Hello world的例子.所以如果对struts2使用比较了解的朋友,请跳过本 ...
- Struts2 源码分析——DefaultActionInvocation类的执行action
本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...
- Struts2 源码分析——拦截器的机制
本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...
- Struts2 源码分析——Action代理类的工作
章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...
- Struts2 源码分析——配置管理之PackageProvider接口
本章简言 上一章讲到关于ContainerProvider的知识.让我们知道struts2是如何注册相关的数据.也知道如何加载相关的配置信息.本章笔者将讲到如何加载配置文件里面的package元素节点 ...
- Struts2 源码分析——配置管理之ContainerProvider接口
本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的Contai ...
- Struts2 源码分析——调结者(Dispatcher)之执行action
章节简言 上一章笔者写关于Dispatcher类如何处理接受来的request请求.当然读者们也知道他并非正真的执行action操作.他只是在执行action操作之前的准备工作.那么谁才是正真的执行a ...
- Struts2 源码分析——过滤器(Filter)
章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析—— ...
- Struts2 源码分析——项目分析
项目知识点分析 从上一章中我们知道了接下来我们要去了解源码的项目(struts2-showcase).而这一章将讲述我三年后在次接触struts2-showcase项目是一个什么样子的情况.我有一个工 ...
随机推荐
- JSON数据查询方法
在进行前端项目开发的时候时长会遇到JSON的数据查找问题,如何方便快速查找?这里推荐一个linqjs组件,项目主页参见http://linqjs.codeplex.com/ 查询对象 var json ...
- CoinPunk项目介绍
CoinPunk是一个bitcoin比特币钱夹服务web应用程序,你可以自己构建钱夹服务.开源,免费. 轻量级,高效 响应式设计 轻易创建新账户 详细的交易记录 构建于Node.js与H ...
- C# System.Threading.Timer 使用方法
public class TimerHelper { System.Threading.Timer timer; public TaskSendMMS tasksendmms { get; set; ...
- MySQL中VARCHAR与CHAR格式数据的区别
区别 CHAR与VARCHAR类型类似,但它们保存和检索的方式不同.CHAR有固定的长度,而VARCHAR属于可变长的字符类型.它们最大长度和是否尾部空格被保留等方面也不同.在存储和检索过程中不进行大 ...
- ENode 1.0 - Command Service设计思路
开源地址:https://github.com/tangxuehua/enode 上一篇文章,介绍了enode框架的物理部署思路.本文我们再简单分析一下Command Service的API设计: C ...
- 【C语言学习】《C Primer Plus》第9章 函数
学习总结 1.函数有利于我们可以省去重复的代码,函数可以使程序更加模块化,从而有利于程序的阅读.修改和完善.我们在系统设计或架构设计的时候,往往追求的是模块化.组件化.松耦合,而函数就是其代码的表现. ...
- ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的
最近做的C++项目中需要使用xml文件保存一些信息,程序启动时会读取这些信息.最终经过主程的评测,决定使用ACEXML库来读取解析XML文件. 好吧,至于为什么选择ACEXML库,我就不说了.既然选择 ...
- MySQL--将MySQL数据导入到SQL Server
随着时代的进步,社会的发展,各种技术层出不穷五花八门乱七八糟数不胜数(写作文呢!!!) 不扯废话,简单而言,很多公司都会同时使用多种数据库,因此数据在不同数据库之间导入导出就成为一个让人蛋疼的问题,对 ...
- [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文
综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...
- [stm32] SIM808模块之发短信\GPS\TCP\HTTP研究
SIM8008是四频模块,全球可用.含有TTL电平接口等接口,能够实现发短信.打电话.GPRS传输数据.GPS等功能.[正版资料请找beautifulzzzz·博客园] 一些细节: >> ...