笔者简言

笔者在博园里面注册是在二年前。可是那个时候我不知道要写些什么,也怕写出来被别人骂误人子弟。而现在却动笔了是因为前一段时间内我去参加一些大公司的面试,让笔者内心深处留下很多问号。最近三年来我一直从事.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 源码分析——前言的更多相关文章

  1. Struts2 源码分析——Hello world

    新建第一个应用程序 上一章我们讲到了关于struts2核心机制.对于程序员来讲比较概念的一章.而本章笔者将会亲手写一个Hello world的例子.所以如果对struts2使用比较了解的朋友,请跳过本 ...

  2. Struts2 源码分析——DefaultActionInvocation类的执行action

    本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...

  3. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  4. Struts2 源码分析——Action代理类的工作

    章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...

  5. Struts2 源码分析——配置管理之PackageProvider接口

    本章简言 上一章讲到关于ContainerProvider的知识.让我们知道struts2是如何注册相关的数据.也知道如何加载相关的配置信息.本章笔者将讲到如何加载配置文件里面的package元素节点 ...

  6. Struts2 源码分析——配置管理之ContainerProvider接口

    本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的Contai ...

  7. Struts2 源码分析——调结者(Dispatcher)之执行action

    章节简言 上一章笔者写关于Dispatcher类如何处理接受来的request请求.当然读者们也知道他并非正真的执行action操作.他只是在执行action操作之前的准备工作.那么谁才是正真的执行a ...

  8. Struts2 源码分析——过滤器(Filter)

    章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析—— ...

  9. Struts2 源码分析——项目分析

    项目知识点分析 从上一章中我们知道了接下来我们要去了解源码的项目(struts2-showcase).而这一章将讲述我三年后在次接触struts2-showcase项目是一个什么样子的情况.我有一个工 ...

随机推荐

  1. goalng 发布的版本中自动加上 git revision

    概述 起因是这样的,在编译发布 golang 工程时,希望版本号中包含有 git revision number. 但是,没有commit之前,是没法知道 revision number 的,comm ...

  2. 用nifi executescript 生成3小时间隔字符串

    import java.io from datetime import datetime from org.apache.commons.io import IOUtils from java.nio ...

  3. C#/net 使用Protocol Buffers入门

    Protocol buffers 是一个由谷歌开发的开源的编码机制用于将结构化的数据序列化或者反序列化,被设计成语言以及平台中立,protobuff比xml更简单比json还要紧凑一些,网上有一些关于 ...

  4. Backbone源码解析(五):Route和History(路由)模块

    今天是四月十二号,距离上次写博已经将近二十天了.一直忙于工作,回家被看书的时间占用了.连续两个礼拜被频繁的足球篮球以及各种体育运动弄的精疲力竭,所以很少抽时间来写技术博客.今天抽出时间把backbon ...

  5. mongodb(回滚)

    事实上mongodb是不支持事务的,个人理解原因如下:1.避免大量对document加锁,从而影响性能,2.非关系型的数据库,从设计上就应能尽可能的比较关联复杂的多document,一个数据应能记录在 ...

  6. 《你必须知道的.NET》读书笔记:从Hello World认识IL

    通用的语言基础是.NET运行的基础,当我们对程序运行的结果有异议的时候,如何透过本质看表面,需要我们从底层来入手探索,这时候,IL便是我们必须知道的基础. 一.IL基础概念 1.1 什么是IL? IL ...

  7. Hello Mybatis 02 mybatis generator

    接着上一篇文章通过Mybatis完成了一个User的CRUD的功能之后,这篇开始还需要建立一个Blog类,这样就可以模拟一个简单的微博平台的数据库了. 数据库准备 首先我们,还是需要在数据库中新建一个 ...

  8. HTML5触屏版多线程渲染模板技术分享

    前言: 了解js编译原理的屌丝们都知道,js是单线程的,想当年各路神仙为了实现js的多线程,为了解决innerHTML输出大段HTML卡页面的顽疾,纷纷设计了诸如假冒的“多线程“实现,我自己也在写开源 ...

  9. java内存管理总结

    编译好的java程序需要运行在jvm中. 程序,无论是代码还是数据,都需要存储在内存中.JVM为java提供并管理所需要的内存空间. JVM内存分为堆.栈.方法区. 对象存储在堆中. This liv ...

  10. 数据库的Timeout

    数据库的Timeout 其实有很多种情况. 一个是执行的超时时间 executionTimeOut,一个是连接的超时时间connectionTimeOut, 还有呢? 等待的超时时间 ReadTime ...