当前位置:首页 » 操作系统 » struts项目源码

struts项目源码

发布时间: 2022-12-31 07:38:05

A. 怎么把struts2源码导入到eclipse

方法如下:
右击project,选择 Build Path --> Add External Archives.. 选择lib所在目录。
建议建立一个UserLib:Windows -- java -- Build Path -- User Libraries ,在右边点击New,新建一个名为struts2的lib name, 然后点击Add Jars,把对应的jar包导入进去。
使用UserLib:右击项目,Add Library -- User Library -- 选择建的struts2的lib就Ok了。

B. 我想研究一下struts2源码,该怎么做

我前几天也跟你有一样的想法,研究了一下struts2的源码。
建一个空白的web工程(myeclipse),正确引入struts2的jar。做个最简单的例子跑通就行。
struts2的源码主要是struts2-core-2.xxx.jar和xwork-core-2.xxxx.jar 将这两个jar与源码包关联就可以了。这样可以看到源码了。
而且如果你想测试某个类,可以自己在自己的工程了建于struts2同名的包复制源码,加上自己的测试代码,跑起来会引用你写的,而其他的类则会去struts2的包类引用。
开始有点乱,看了三四天才整出点头绪,祝你好运!

C. Struts源码研究 - Action-Input属性篇

初学Struts 写了一个很简单的应用 主要功能和页面如下 首页显示一个 添加新用户 的链接 点击该链接出发一个forward动作 页面导向到添加用户的jsp页面 添加用户的jsp页面中 可供用户输入 用户名 和 用户描述 两项 用户输入完毕 将做输入数据合法性检查 检查通过 将输入信息保存进入文件(使用了Properties类) 然后返回首页 检查失败返回添加用户页面 数据合法性检查分成两块 第一部分检查条件使用Struts的Validator 检查条件配置在Validator xml中 第二部分检查放在ActionForm中 检查失败将错误信息置入ActionErrors中 然后返回到添加用户的页面并显示错误信息 JSP页面 ActionForm和Action类的代码书写都参照了struts example应用 所以这里代码不再列举 请看附件中的代码包这里值得一提的是 在开发过程中 碰到了一个小问题 正是由于该问题 才导致查看Struts源码 刨根问底的查找错误原因的过程该错误发生在Struts的配置文件中 首先将错误的配置文件列出如下 <?xml version= encoding= ISO ?><!DOCTYPE struts config PUBLIC //Apache Sofare Foundation//DTD Struts Configuration //EN config_ _ dtd ><struts config><! ======================================== Form Bean Definitions ><form beans><form beanname= CreateUserForm type= zchome CreateUserForm /></form beans><! ================================= Global Exception Definitions ><global exceptions></global exceptions><! =================================== Global Forward Definitions ><global forwards><! Default forward to Wele action ><! Demonstrates using index jsp to forward ><forward name= wele path= /Wele do /></global forwards><! =================================== Action Mapping Definitions ><action mappings><! Default Wele action ><! Forwards to Wele jsp ><actionpath= /Wele type= apache struts actions ForwardAction parameter= /jsp/Wele jsp /><action path= /createuserpage forward= /jsp/createuser jsp ></action><actionpath= /docreateuser type= zchome CreateUserAction name= CreateUserForm scope= request input= createuser ><forward name= createusersuccess path= /jsp/Wele jsp /><forward name= createuser path= /jsp/createuser jsp /></action></action mappings><! ===================================== Controller Configuration ><controller><set property property= processorClass value= apache struts tiles TilesRequestProcessor /></controller><! ================================ Message Resources Definitions ><message resources parameter= resources application /><! ======================================= Plug Ins Configuration ><! ========== Tiles plugin =================== ><! ><! This plugin initialize Tiles definition factory This later can takes someparameters explained here after The plugin first read parameters from web xml thenoverload them with parameters defined here All parameters are optional The plugin should be declared in each struts config file definitions config: (optional)Specify configuration file names There can be several maseparated file names (default: ?? ) moleAware: (optional struts )Specify if the Tiles definition factory is mole aware If true (default) there will be one factory for each Struts mole If false there will be one mon factory for all mole In this later case it is still needed to declare one plugin per mole The factory will beinitialized with parameters found in the first initialized plugin (generally theone associated with the default mole) true : One factory per mole (default)false : one single shared factory for all moles definitions parser validate: (optional)Specify if xml parser should validate the Tiles configuration file true : validate DTD should be specified in file header (default)false : no validationPaths found in Tiles definitions are relative to the main context ><! ment following if struts x ><plug in className= apache struts tiles TilesPlugin ><set property property= definitions config value= /WEB INF/tiles defs xml /><set property property= moleAware value= true /><set property property= definitions parser validate value= true /></plug in><! end ment if struts x ><plug in className= apache struts validator ValidatorPlugIn ><set propertyproperty= pathnames value= /WEB INF/validator rules xml /WEB INF/validation xml /></plug in></struts config>首先描述一下系统的出错背景 从首页点击链接来到添加用户的页面 正常 在添加用户页面中输入Vlidator xml文件中定义的错误数据 弹出Javascript对话框 提示出错 正常 在添加用户页面中输入合法数据 数据保存进入文件并重定向到首页 正常 在添加用户页面中输入ActionForm中定义的非法数据 系统应返回到添加用户的页面 出错!!!OK 来着重看这个添加动作的定义 如下 <actionpath= /docreateuser type= zchome CreateUserAction name= CreateUserForm scope= request input= createuser ><forward name= createusersuccess path= /jsp/Wele jsp /><forward name= createuser path= /jsp/createuser jsp /></action>从以上的定义可以看出 如果Validate验证出错 Struts应该为我们重定向到input域所定义的uri 即/jsp/createuser jsp看起来应该没有问题 再来看看出错信息 如下 java lang IllegalArgumentException: Path createuser does not start with a / characterat re ApplicationContext getRequestDispatcher(ApplicationContext java: )at re ApplicationContextFacade getRequestDispatcher(ApplicationContextFacade java: )at apache struts action RequestProcessor doForward(RequestProcessor java: )at apache struts tiles TilesRequestProcessor doForward(TilesRequestProcessor java: )at apache struts action RequestProcessor internalMoleRelativeForward(RequestProcessor java: )at apache struts tiles TilesRequestProcessor internalMoleRelativeForward(TilesRequestProcessor java: )at apache struts action RequestProcessor processValidate(RequestProcessor java: )at apache struts action RequestProcessor process(RequestProcessor java: )at apache struts action ActionServlet process(ActionServlet java: )at apache struts action ActionServlet doPost(ActionServlet java: )出错信息清楚的说明 createuser 这个path应该以 / 字符开头为定位这个错误 从以上错误信息 开始打开Struts的源码RequestProcessor java进行研究 首先来到这一段 public class RequestProcessor {protected boolean processValidate(H lishixin/Article/program/Java/ky/201311/28659

D. 怎样将struts2的源码关联到myeclipse中

简单设置一下就能实现了。这里有篇文章,是以在eclipse中查阅struts2的源代码为例,图文详解,希望对楼主有所帮助,myeclipse同样适用。文章地址:http://jingyan..com/article/454316ab596470f7a7c03aab.html怎样在Eclipse中快速查看各种源代码?

E. Struts2中关于xwork和OGNL的源代码下载

还有cvs干吗,怎么不用svn来checkout呀。

F. Struts2增删改查(完整项目版+源码+数据库)

ajax的ok不

G. Struts源码研究 - html-Link标签篇

Struts里的:Cancel标签是在Form中经常运用的一个标签 主要功能就是cancel当前Form 一般写法如下 ===========================<:cancel><bean:message key= createuser cancelbutton /></:cancel>===========================这个标签将生成如下的HTML代码 <input type= submit name= apacl CANCEL value= 返回 onclick= bCancel=true; >bCancel=true是一段javascript bCancel是在使用Struts的Validator时 Struts自动为我们加的一段Javascript代码里的一个变量这段Javascript简略摘要如下 ===========================<script type= text/javascript language= Javascript ><! Beginvar bCancel = false;function validateCreateUserForm(form) {if (bCancel)return true;elsereturn validateMaxLength(form) && validateRequired(form) && validateMinLength(form);}===========================由上可以看到 这个bCancel=true时 Javascript将自动将表单提交(return true) 也就是说 如果我们在后台Action的代码里没有对这个Cancel动作写特定代码的话 这个Cancel标签产生的效果和submit按钮产生的动作完全一致!!(因为这个按钮的type也等于submit)这一点需要非常的注意!所以 一般来说 我们在Action类的execute方法里面会加上如下的一段代码来处理这个Cancel动作 ===========================// Was this transaction cancelled?if (isCancelled(request)) {return (mapping findForward( createusersuccess ));}===========================有了以上的代码 Cancel动作就有了相应的处理代码 转到相关的页面了 本来事情已经解决 但本着对Struts源码研究的精神 我们还需要对以上代码研究一下OK 让我们来看一下isCancelled这个方法在什么地方被定义了 内容是什么?首先发现 这个方法被定义在Action类里面 代码如下 ===========================/*** <p>Returns <code>true</code> if the current form s cancel button was* pressed This method will check if the <code>Globals CANCEL_KEY</code>* request attribute has been set which normally occurs if the cancel* button generated by <strong>CancelTag</strong> was pressed by the user* in the current request If <code>true</code> validation performed* by an <strong>ActionForm</strong> s <code>validate()</code> method* will have been skipped by the controller servlet </p>** @param request The servlet request we are processing* @see apacl CancelTag*/protected boolean isCancelled(HttpServletRequest request) {return (request getAttribute(Globals CANCEL_KEY) != null);}===========================哦 原来是在request对象中查找Globals CANCEL_KEY这个key值是否绑定了一个对象 如果是 那么就代表按下Cancel按钮后 Struts会在request对象中绑定一个对象 并以这个key值来命名那Struts是在什么地方绑定了这个对象呢?很自然的 让我们从头找起从ActionServlet的process方法开始找起 历经多次方法调用 终于找到了根源 原来是在RequestProcessor java中 代码如下 ===========================/*** <p>Process an <code>HttpServletRequest</code> and create the* corresponding <code>HttpServletResponse</code> </p>** @param request The servlet request we are processing* @param response The servlet response we are creating** @exception IOException if an input/output error occurs* @exception ServletException if a processing exception occurs*/public void process(HttpServletRequest request HttpServletResponse response)throws IOException ServletException {//省略代码若干// Process any ActionForm bean related to this requestActionForm form = processActionForm(request response mapping);//答案就在这个processPopulate方法中processPopulate(request response form mapping);if (!processValidate(request response form mapping)) {return;}/*** Populate the properties of the specified ActionForm instance from* the request parameters included with this request In addition * request attribute <code>Globals CANCEL_KEY</code> will be set if* the request was submitted with a button created by* <code>CancelTag</code> ** @param request The servlet request we are processing* @param response The servlet response we are creating* @param form The ActionForm instance we are populating* @param mapping The ActionMapping we are using** @exception ServletException if thrown by RequestUtils populate()*/protected void processPopulate(HttpServletRequest request HttpServletResponse response ActionForm form ActionMapping mapping)throws ServletException {if (form == null) {return;}// Populate the bean properties of this ActionForm instanceif (log isDebugEnabled()) {log debug( Populating bean properties from this request );}form setServlet(this servlet);form reset(mapping request);if (mapping getMultipartClass() != null) {request setAttribute(Globals MULTIPART_KEY mapping getMultipartClass());}RequestUtils populate(form mapping getPrefix() mapping getSuffix() request);// Set the cancellation request attribute if appropriateif ((request getParameter(Constants CANCEL_PROPERTY) != null) ||(request getParameter(Constants CANCEL_PROPERTY_X) != null)) {request setAttribute(Globals CANCEL_KEY Boolean TRUE);}}===========================OK 看最后几行代码 Struts从request中取得Constants CANCEL_PROPERTY这个参数 如果这个参数不为空 那么他就将TRUE这个对象以Globals CANCEL_KEY为key值 放到了request对象中至于这个Constants CANCEL_PROPERTY这个值是什么 现在都可以猜到了 显然就是:Cancel这个标签生成的HTML代码中 Cancel这个按钮的名称嘛!查了一下 果然是 <input type= submit name= apacl CANCEL value= 返回 onclick= bCancel=true; >而Constants CANCEL_PROPERTY这个值就是 apacl CANCEL lishixin/Article/program/Java/ky/201311/28930

热点内容
漆昼之翁密码是多少 发布:2025-05-10 15:52:55 浏览:844
linux与windows的分区 发布:2025-05-10 15:40:18 浏览:996
搜狐视频破解缓存 发布:2025-05-10 15:39:06 浏览:807
存储器主要用来 发布:2025-05-10 15:17:34 浏览:427
两台服务器怎么部署redis 发布:2025-05-10 15:16:09 浏览:903
cocoa编程 发布:2025-05-10 15:15:18 浏览:181
中控导航什么配置好 发布:2025-05-10 15:15:07 浏览:790
个人网站的数据库 发布:2025-05-10 15:10:17 浏览:119
会编程好处 发布:2025-05-10 14:58:49 浏览:480
编程的过程 发布:2025-05-10 14:58:38 浏览:343