阅读更多

20顶
0踩

编程语言

原创新闻 Struts2开发快速调试插件configdebug

2011-06-13 09:26 by 见习记者 四个石头 评论(42) 有16409人浏览

    Project Hosting(项目托管)http://code.google.com/p/configdebug/

1.   概述

在使用Struts2进行web项目开发的时候,我们需要使用配置文件来解耦action和视图资源(例如:jsp页面)

开发完某个功能之后,我们在页面做一个操作(例如点击一个按钮),然后跳转到另一个页面,在调试的过程中,我们需要知道我的这个操作调用了哪个action,并且action执行之后,返回到哪个页面,然后在action中,或页面上,或配置文件中来找到是否出错

一般的调试过程是:

l  根据url,在Struts2配置文件中找到该url对应的配置信息

l  然后根据配置信息,找到对应的action类,以及对应的方法

l  然后看该操作返回那个结果字符串

l  再到配置文件中,找到该结果字符串对应的视图资源位置

l  最后找到视图资源

这个过程对开发人员来说,是繁琐的,无聊的。

我们要做的,就是省去上面的步骤,直接找到需要的调试相关信息

2.   功能列表

l  用户进行一个操作,如果经过Struts2处理,就会在控制台打印相应的信息,信息如下:

该操作的访问方式:例如POSTGET

调试url地址:url及参数(POST方式的参数被转为GET方式),便于用url直接调试

POSTGET参数的多行显示:每行显示一个键值对,参数名称=参数值

执行的action以及方法:便于快速找到该操作对应的action及方法

该操作的执行时间(单位毫秒):便于确定该操作的执行效率

action配置信息所在配置文件的路径以及名称:便于快速找到对应的配置文件

action配置信息在配置文件中的行数:便于快速找到配置该action的位置

action返回的结果名称:便于快速确定action中方法返回的结果名称

action返回的视图位置:便于快速找到该操作返回的视图资源的实际位置

Session范围中的信息:便于观察session中的信息

l  方便的开关控制台信息的显示

通过配置Struts.xml文件中的devMode的值为truefalse,来启用或停用控制台的提示信息,从而达到在开发的时候,设置devMode=true(打印信息),在程序上线的时候,设置devMode=false(不打印信息),不会造成效率的影响。

或者在Struts.xml中去掉该插件相关的拦截器配置(在项目发布时,可以不包含该插件包),来关闭调试信息。

l  可自定义提示前缀和提示信息

configdebug.properties属性文件中进行配置。

3.   使用效果

3.1.  操作

用户在一个添加用户页面中,输入如下信息,然后点击提交按钮

该操作调用Struts2action



 

 

3.2.  结果

 

在控制台打印出如上信息,说明:

1.         accessMethod

该操作的访问方法是POST方式提交的

2.         debugUrl

调试的url,显示完整的url以及参数,对于参数的处理,如果是GET方式,就按原样打印,如果是POST方式,就将参数转换为GET方式,即在url后面添加参数对儿。如果这次增加操作出现异常,那么在修改后台代码之后,就不用在添加页码再次输入这些信息,只需要将该debugUrl在浏览器的地址栏中执行即可,直到该功能调试成功,节省了输入信息的时间。

3.         parameters(Multirow)

如果有参数,将参数分开,多行显示,便于开发人员观察参数的值是否正确等

4.         actionAndMethod

该操作实际调用的是com.demo.action.UserAction中的add方法,便于开发人员快速找到该方法进行修改逻辑,或修改bug

5.         executeTime

该操作的执行时间是375毫秒

6.         configFilePath

action(com.demo.action.UserAction)是在类路径下的struts.xml中配置的

7.         configFileLineNumber

action(com.demo.action.UserAction)struts.xml中配置位置的行号是47

8.         actionReturnResult

action(com.demo.action.UserAction)add方法中的返回结果值为success

9.         actionReturnView

action(com.demo.action.UserAction)返回的视图资源(例如:jsp)的位置在项目根路径下的app/user/user_list.jsp

10.     sessionInfo

当前session中的信息有,loginUser=张三

 

 

下载地址:http://code.google.com/p/configdebug/downloads/list

20
0
评论 共 42 条 请登录后发表评论
22 楼 songlixiao 2011-06-14 09:15
感觉像是读的struts2配置文件来运行的?
不知道这个工具对使用annotation配置的struts2项目管用不??
21 楼 asilan 2011-06-14 09:10
不错,学习学习。。。
20 楼 wtslh 2011-06-14 09:09
很好,很容易配置。
可否在后续版本中增加一种配置,就是可控制拦截某些action方法调用,而不是全部。
比如通配拦截:
*Add()
*Modify()
或者
doAdd*()
doModify*()
类似这个意思。
19 楼 longforfreedom 2011-06-14 08:36
用JSF不就行了
18 楼 mengyancui 2011-06-13 23:09
好东西,不知道是谁写的
17 楼 sinlack 2011-06-13 19:50
奇怪,为什么我报下面的配置文件无法读取。。

Caused by: Unable to load jar:file:/D:/Tomcat6/temp/2-pcc/WEB-INF/lib/configdebug-1.0.jar!/struts-plugin.xml - [unknown location]

这个路径下的jar包也有。。
16 楼 四个石头 2011-06-13 19:30
谢谢大家的评论和建议
15 楼 Angi 2011-06-13 19:12
好东东,谢谢分享!
14 楼 weng 2011-06-13 17:18
想试试springMVC
13 楼 四个石头 2011-06-13 14:25
xugq035 写道
提2个建议:
1.名字可否改为struts-configdebug,以表明是针对struts的调试工具
2.configdebug.properties的路径可以允许用户指定:
   <interceptor-ref name="configdebug" >
      <param name="configLocation">/WEB-INF/struts-configs/configdebug.properties</param>
   </interceptor-ref>

非常感谢xugq035的建议,第二个建议采纳,会在以后的版本中实现,
对与第一个建议,本来名称是想叫struts2debug,但是我是第一次发布开源软件,并且这个插件使用的都是struts2中的内容,如果名称中包含struts2,不知道会不会违反struts2开源协议中的内容(本人对开源协议不是很了解,在网上找了一些,说的也不是很清楚),所以在名称中就没有使用struts2。就想javaeye,本来好好的,但是也被迫改名了,为了不必要的麻烦,就这样了
12 楼 xugq035 2011-06-13 14:17
提2个建议:
1.名字可否改为struts-configdebug,以表明是针对struts的调试工具
2.configdebug.properties的路径可以允许用户指定:
   <interceptor-ref name="configdebug" >
      <param name="configLocation">/WEB-INF/struts-configs/configdebug.properties</param>
   </interceptor-ref>
11 楼 四个石头 2011-06-13 12:00
kingwood2005 写道
怎么下不了?

我在博客上也放了下载的压缩包
在googlecode上不能下载的话,就去博客中下载,都是一样的
http://shileijava.iteye.com/blog/1061558
10 楼 kingwood2005 2011-06-13 11:55
怎么下不了?
9 楼 四个石头 2011-06-13 11:50
xugq035 写道
谁能发我一个,我不能访问下载地址,谢谢各位
邮箱地址:xugq035@gmail.com


可能是googlecode出了问题了,过一会应该能访问吧
8 楼 xugq035 2011-06-13 11:49
谁能发我一个,我不能访问下载地址,谢谢各位
邮箱地址:xugq035@gmail.com
7 楼 suyulin6688 2011-06-13 11:17
icanfly 写道
要是能整个SpringMVC的调试模式就爽了,,SpringMVC现在增加或者修改一个URL映射都要重新启动服务器,太不爽了

哥们,推荐你使用jRebel和jRebel for Eclipse插件,相当强悍。
1.增加或者修改一个URL映射,不需要重新启动服务器
2.增加或者修改方法名和方法里面的内容,不需要重新启动服务器
3.增加一个类,不需要重新启动服务器
6 楼 icanfly 2011-06-13 10:50
要是能整个SpringMVC的调试模式就爽了,,SpringMVC现在增加或者修改一个URL映射都要重新启动服务器,太不爽了
5 楼 volking 2011-06-13 10:35
ognl比较难调试
4 楼 香克斯 2011-06-13 10:29
这个功能看着挺不错的
3 楼 四个石头 2011-06-13 10:16
感谢大家的评论,在使用的时候,有什么想法和意见可以提出来,我继续改进,谢谢大家

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 算术表达式的自上而下语法分析及其实现

    算术表达式的自上而下语法分析及其实现 这篇文章里主要是站在编译原理的角度讲述一种语法分析程序的实现的方法,通过对一个典型的例子——算术表达式的分析,从而使大家了解构造一个实用的语法分析程序的方法,同时,也为广大程序员提供一种解决实际问题的思路。

  • 2021年上半年软件设计师上午真题及答案解析(五)

    调用hoo(a,x)函数,此时a=2传给hoo函数中的x,并且由于是引用方式,此时x在hoo函数内的修改会影响原a的值(注意区别,hoo函数的x与foo函数的x是不用的局部变量)。以下UML状态图中,假设活动的状态是A,事件b=0发生并且a>5,发生条件是c状态到d状态的转换条件的是( ),D变为活动的状态,有关状态图的叙述中,不正确的是( )。执行y=y+10=15,执行x=y-x=15-2=13,此时x的值会传回原foo函数的a,即a=x=13。A.确定的有限自动机,它能识别以bab结尾的。

  • 语法分析器(c++)

    编译原理实验二,语法分析,LR0,LR1

  • C++ 算数表达式分析模块(附原理简介)

    表示式分析可以用来计算一般的算数表达式,可以作为函数计算的模块。 目前版本为1.3,附带实现原理(编译原理的基本内容)。 main.cpp 有示例使用方法,in.txt为示例输入。 代码中有注释,使用方法有详细说明。 /* * Expression类是解析表达式的类 * 表达式支持 + - * / ^(pow) -(neg)运算符 * 表达式支持 ( ) 控制优先级 * 表达式中的实数只能为实数加小数点,不支持科学计数法表示(不会错误提示,但得不到正确表达式) * SetExprStr失败后会破坏原来的表达式 * 支持26个字母(不区分大小写)表示变量 * 使用SetVar设置变量值 * 默认变量值为 1 * GetResult时,若表达式求解不合法,返回非0 * GetExprErrorStr 获取表达式错误代码的表示字符串 * GetResultErrorStr 获取求解错误代码的表示字符串 */

  • 编译原理实验二 自上而下语法分析

    自上而下 语法分析实验 一、实验目的 (1)给出 PL/0 文法规范,要求编写 PL/0语言的语法分析程序。 (2)通过设计、编制、调试一个典型的自上而下语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。 (3)选择最有代表性的语法分析方法,如递归下降分析法、预测分析法;选择对各种常见程序语言都具备的语法结构,如赋值语句,特别是表达式,作为分析对象。 二、实验内容 (1)已给 PL/0 语言文法,构造表达式部分的语法分析器。 分析对象〈算术表达式〉的 BN

  • Java实现算术表达式词法分析程序

    Java实现算术表达式词法分析程序,更多详情可以查看博客wmathor.com

  • C++算术表达式求值(支持函数)

    C++算术表达式求值(支持函数) sin cos tan asin acos atan log sqrt cos(sin(sqrt(100*sqrt(100*10^2))))*(1.0e+5)/(1.0e-5) = 8.74513e+009

  • 算术表达式语法分析

    东北大学编译原理实验二用递归下降子程序法判断算术表达式的语法是否正确

  • 【编译原理】自上而下语法分析(C/C++源码+实验报告)

    文章目录1 实验目的和内容1.1 实验目的1.2 实验内容1.3 实验要求2 设计思想2.1 根据BNF描述该文法2.2 根据文法画相应的语法图2.3 判断是否是LL(1)文法---求First、Follow集2.4 递归下降子程序3 算法流程4 源程序5 调试数据6 思考:词法分析+语法分析6.1 将实验一的词法分析作为函数写入语法分析程序6.2 调试数据6.3 调试结果7 实验调试情况及体会7.1 实验调试情况7.2 实验体会 1 实验目的和内容 1.1 实验目的 (1)给出 PL/0 文法规范,要求编

  • 第五章 语法分析——自上而下分析

        一、知识总结    本章介绍自下而上语法分析方法。所谓自下而上分析法就是从输入串开始,逐步进行“归约”,直至鬼月到文法的开始符号。或者说,从语法树的末端开始,步步向上”归约“,直到根结。 1、自上而下分析基本问题    自上而下分析法是一种”移进-归约“法,大意是用一个寄存富豪的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(归约为...

  • 编译原理 - 语法分析(自上而下)

    语法分析编译 :高级语言-&gt;汇编语言( .s)语法分析任务 : 识别是否为句子语法分析器 : 是否符合文法规则语法分析的分类自上而下 ⭐自上而下的主旨 - 最左推导自上而下 存在问题 - 存在回溯,效率低左递归问题 - 陷入了无限循环常见左递归形式左递归的消除 - LL(1)分析法回溯自下而上LL(1)分析法直接左递归消除 - 左递归改右递归间接左递归的消去 - 代入法 编译 :高级语言-&gt;汇编语言( .s) 1.词法分析 :单词组成是否合乎规则 2.语法分析 :每一行表达式是否正确 3.语义分

  • java实现语法分析

    首先改写文法为LL(1)文法;然后为每一个非终结符,构造相应的递归过程,过程的名字表示规则左部的非终结符; 过程体按规则右部符号串的顺序编写。

  • 算术表达式的计算

    在计算机中进行算术表达式的计算是通过栈来实现的。这一节首先讨论算术表达式的两种表示方法,即中缀表示法和后缀表示法,接着讨论后缀表达式求值的算法,最后讨论中缀表达式转换为后缀表达式的算法。1. 算术表达式的两种表示通常书写的算术表达式是由操作数(又叫运算对象或运算量)和运算符以及改变运算次序的圆括号连接而成的式子。操作数可以是常量、变量和函数,同时还可以是表达式。运算符包括单目运算符和双目运算符两类

  • java 字符串 表达式计算_java 通过解析字符串数学表达式简单进行计算(包括自定义函数以及带括号的数学表达式)...

    packagecom.jxv.common.utils;importcom.alibaba.fastjson.JSON;importorg.apache.commons.lang3.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjavax.script.ScriptEngine;import...

  • 自顶向下语法分析器的设计与实现

    根据某一文法编制调试 自顶向下语法分析器( 递归下降分析程序、 LL ( 1 )分析程序), 以便对任意输入的符号串进行自顶向下的语法分析。 本次实验的目的主要是加深对自顶向下的语法分析法的理解。

  • 04语法分析——自上而下分析

    例如,如果分号作为语句的结束符(C语言中就是这样的),那么作为语句开头的关键字就可能不在产生表达式的非终结符的 FOLLOW 集中。(3)如果把FIRST(A)中的符号加入非终结符 A 的同步符号集,那么,当FIRST(A)中的一个符号在输入中出现时,可以根据 A 恢复语法分析。(5)如果不能匹配堆栈顶的终结符号,一种简单的想法是弹出堆栈顶的这个终结符号,并发出一条信息,说明已经插入这个终结符,继续语法分析。我们以预测分析为例。①若M[A,a]是A的一个产生式,则X出栈,同时将产生式的右部反序一一进栈;

Global site tag (gtag.js) - Google Analytics