源码之前,了无秘密。

说一句逼格很高的话来镇镇场子。

这两天在看陆舟的《Struts2技术内幕》,一边看脑子一边冒出四个字:相见恨晚。极力推荐想了解Struts2的人看看这本书,之前一直在看李刚的《轻量级JavaEE企业应用实战》,感觉不如他的疯狂java讲义好。为什么呢?就觉得书的定位不清楚。如果是拿来入门,则又略显繁琐,倒不如那本《深入浅出Struts2》来得简洁;拿来精进,又显得深度不够。就跟谭浩强的C语言系列一个毛病。所以如果大家想入门Struts2,就看那本《深入浅出Struts2》,如果感觉自己已经会用了,并且也尝试写了一些后台程序了,对于Struts2有了一些感性的认识了,那么这本陆舟的书,会是你的首选。

闲言少叙,回到题目,怎么搭建调试环境呢?

一、下载Struts2相关资源

可以打开此链接http://struts.apache.org/download.cgi#struts2324,也可以在我的附件中下载。

二、解压struts2-XXXX-all.zip到任意目录

可以看到Struts2的组织结构如图:

其中apps存放了所有Struts2的示例项目,强烈建议在初学的时候,一定要研究研究这些例子程序,都是麻雀虽小,五脏俱全的。

docs存放了所有Struts2与Xwork的文档。

lib存放了所有Struts2相关的JAR文件以及Struts2运行时所依赖的JAR文件。

src存放了所有Struts2的源码

三、部署Struts2环境

我用的平台是MyEclipse。

打开MyEclipse,Files-New-Web Project,建立一个web项目。

然后进入上一步解压后的目录,再进入apps,struts2-blank,如图所示。

然后按照目录里的结构,拷贝到MyEclipse中,如图所示

然后再把Tomcat服务器部署好(如何部署,可以很容易在网上搜到,此处略去),就可以了。

四、添加源码包

刚才下载好的第二个包,也就是struts2-XXXX.zip包,里面就是Struts2-core-XXX.jar的源码。

添加方法:

找到struts2-core-XXX.jar包,右击,选择属性,按照下图所示添加源码包即可。

当你看到如下图所示的效果,并且双击.class文件,可以显示源码时,即表明,添加源码成功。

以上是添加struts2-core.jar源码,如果要添加比如ognl源码时也是类似的步骤,下载ognl源码的连接http://www.java2s.com/Code/Jar/o/Downloadognl306jar.htm

但是可能会出现问题,我就出现过,明明已经导入源码包了,但是还是打不开.class文件,这个时候,你就需要想想是不是源码的版本问题了,建议你换一个更低的版本试试。

五、进行调试


在图中标出的地方设置断点后,就可以像调试普通Java程序一样进行单步跟踪调试了。

但是在调试时,需要将Tomcat服务器调到debug模式,不然会进不去调试模式。

至此,调试环境的搭建已大功告成。

开始源码之旅吧!

下面是我的几个亲测可用的版本附件:

struts2源码.zip

ognl源码.zip

struts2源码调试环境的搭建的更多相关文章

  1. 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)

    1 前言 这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境.如果有经验的小伙伴们可以略过此篇文章. 2 环境安装要求 IntelliJ IDEA JDK1 ...

  2. JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)

    前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...

  3. [原创]在Windows和Linux中搭建PostgreSQL源码调试环境

    张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...

  4. Sping学习笔记(一)----Spring源码阅读环境的搭建

    idea搭建spring源码阅读环境 安装gradle Github下载Spring源码 新建学习spring源码的项目 idea搭建spring源码阅读环境 安装gradle 在官网中下载gradl ...

  5. 深入理解Tomcat系列之二:源码调试环境搭建(转)

    前言 最近对Tomcat的源码比较感兴趣,于是折腾了一番.要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境.发现都不是帖子的问 ...

  6. [Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境

    网上很多文章都推荐使用Ant下载编译,但本地实践中屡屡失败,无法下载. 后来参考 https://blog.csdn.net/xiongyouqiang/article/details/7894107 ...

  7. Tomcat源码调试环境搭建

    我们一般都是为了解决某个问题,才去看源码的.Java体系就是这点好处,源码唾手可得.遇到问题,最后的解决方法总是可以从源码中找到. 参考了网上的文章,过程整理如下: 1. 下载和导入 官网下载编译好的 ...

  8. Eclipse中搭建Apache Tomcat7源码调试环境

    第一步:获取Apache Tomcat7源码,读者可以从Apache 官方网站获取,官方下载地址: http://tomcat.apache.org/download-70.cgi 注意选择Sourc ...

  9. 15分钟搭建RocketMQ源码调试环境

    下载源码 下载源码,github页面选择(rocketmq-all-4.7.1)版本压缩包,https://github.com/apache/rocketmq/tags 导入IDEA 1. 使用ID ...

随机推荐

  1. UITableView 隐藏多余的分割线

    //隐藏多余的分割线 - (void)setExtraCellLineHidden: (UITableView *)tableView { UIView *view =[ [UIView alloc] ...

  2. ProxyCreationEnabled 和 LazyLoadingEnabled 的关系

    我们会使用这两个设置来决定是否加载导航属性.默认情况这两个值都是true的,也就是说会以延迟加载的方式加载导航属性,也就是当我们访问导航属性的时候才会去查数据库获取导航属性的数据.db.Configu ...

  3. JSON 日期格式带 T 问题

    var iso = new IsoDateTimeConverter(); iso.DateTimeFormat = "yyyy-MM-dd"; object obj = new  ...

  4. 我们为什么要遵循W3C标准规范

    大部分的站长和拥有网站的企业负责人都会知道,每当有浏览器发布大更新的时候,我们刚建立不久的网站就会发生无法预知的严重错误,我们只能重新建立或改版网站,使其可以应归新发布的浏览器.好比1996-1999 ...

  5. 【Heritrix基础教程之2】Heritrix基本内容介绍

    1.版本说明 (1)最新版本:3.3.0 (2)最新release版本:3.2.0 (3)重要历史版本:1.14.4 3.1.0及之前的版本:http://sourceforge.net/projec ...

  6. spring postconstruct

    package com.jdw.service.impl; import java.util.List; import javax.annotation.PostConstruct; import o ...

  7. python cmd模块练习

    # encoding=utf-8 import cmd import sys # cmd模块练习 class Client(cmd.Cmd): ''' 1)cmdloop():类似与Tkinter的m ...

  8. Linux中的读函数与块高速缓存

    为了提高Linux块设备读写的效率,Unix会在内存中建立块高速缓存,块高速缓存存储了系统最近读的数据块和刚刚写入的数据块,也就是说IO访问其实是和块高速缓存打交道的(直接IO除外),块高速缓存会适时 ...

  9. mfc窗口,父窗口parentwindow,所有者窗口ownerwindow 区别

    一. parent:创建者,owner:所有者 小玉的父母生下小玉,养到8岁,卖给贾府当丫头小玉的父母是parent,贾府是owner 二. 1.Pop-up窗口: 一个弹出窗口是必须具有WS_POP ...

  10. 关于SubclassWindow()和SubclassDlgItem

    msdn上的解析 CWnd::SubclassWindowBOOL SubclassWindow( HWND hWnd ); Return Value Nonzero if the function ...