Struts2源码粗略分析一:开发环境
来源:互联网 发布:达内培训 京php班 编辑:程序博客网 时间:2024/06/05 15:32
**
简介
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
**
**
1.创建Tomcat工程
**
创建一个名为struts2的Tomcat工程,然后按照以下截图配置相关信息。
**
2.配置struts-2.2.1源码
**
将下载下来的struts-2.2.1解压至工程下,然后将以下信息加入构建路径中:
struts-2.2.1/src/xwork-core/src/main/javastruts-2.2.1/src/xwork-core/src/main/resourcesstruts-2.2.1/src/core/src/main/javastruts-2.2.1/src/core/src/main/resourcesstruts-2.2.1/src/apps/blank/src/main/javastruts-2.2.1/src/apps/blank/src/main/resources
3.目录结构
**
4.maven编译
**
因为源码自带的开发lib包内容不足,无法完全编译,所以要在目录
C:/Documents and Settings/Administrator/My Documents/Workspace/eclipse/struts2/struts-2.2.1/src/coreC:/Documents and Settings/Administrator/My Documents/Workspace/eclipse/struts2/struts-2.2.1/src/xwork-core
下执行命令,然后会生成一下两个target目录。
"C:/apache-maven-2.2.1/bin/mvn.bat" compile
C:/Documents and Settings/Administrator/My Documents/Workspace/eclipse/struts2/struts-2.2.1/src/core/target"C:/apache-maven-2.2.1/bin/mvn.bat" compile C:/Documents and Settings/Administrator/My Documents/Workspace/eclipse/struts2/struts-2.2.1/src/xwork-core/target
这一步的作用就是让maven去下载编译和执行所用的第三方jar包,这样就不需要一个一个找了。如果编译或者运行过程中缺少什么jar文件,请到maven下的repository目录中查找。
5.配置eclipse构建路径
除了下面两个包外,将struts-2.2.1的lib目录下所有jar文件拷贝到WEB-INF的lib目录中,因为这两个包的内容我们需要手动生成
struts2-core-2.2.1.jar
xwork-core-2.2.1.jar
(类文件保留也无所谓,反正Tomcat运行时会先装载源码生产的class文件,如果ClassLoader在后续操作中发现已有相同的class文件被装载则忽略后续内容,但jar文件里的资源文件会影响装载)
编译过程缺少或版本低的jar文件可以到maven对应的repository中查找,然后添加到构建路径中。下面就是xwork-extra中应该包括的包:
/struts2/web-app/WEB-INF/xwork-extraorgorg.apache.commonsorg.apache.commons.ioorg.apache.commons.lang.xworkorg.objectweb.asm.xwork
PS:编译整个工程之后,需要将这部分内容手动拷贝到WEB-INF/classes文件夹下,这样程序运行时才不会出现类缺失异常。
6.配置源码
将WEB-INF的lib中jar包全部加入构建路径
解压struts2-2.2.1文件夹的lib下的xwork-core-2.2.1.jar文件至WEB-INF/xwork-extra下,删除与xwork相关的class文件后把这些class文件也配置到构建路径中,以下是最终的配置信息
<?xml version="1.0" encoding="UTF-8"?><classpath> <classpathentry kind="src" path="struts-2.2.1/src/xwork-core/src/main/<a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>"/> <classpathentry kind="src" path="struts-2.2.1/src/xwork-core/src/main/resources"/> <classpathentry kind="src" path="struts-2.2.1/src/core/src/main/java"/> <classpathentry kind="src" path="struts-2.2.1/src/core/src/main/resources"/> <classpathentry kind="src" path="struts-2.2.1/src/apps/blank/src/main/java"/> <classpathentry kind="src" path="struts-2.2.1/src/apps/blank/src/main/resources"/> <classpathentry kind="src" path="xwork.demo.src"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.5.0_16"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="var" path="TOMCAT_HOME/lib/servlet-api.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/lib/jasper.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/lib/jsp-api.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/lib/el-api.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/lib/annotations-api.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/antlr-2.7.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/aopalliance-1.0.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/asm-3.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/asm-commons-3.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/classworlds-1.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-beanutils-1.7.0.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-chain-1.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-collections-3.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-digester-2.0.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-fileupload-1.2.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-io-1.3.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-lang-2.4.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-logging-1.0.4.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-logging-api-1.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/commons-validator-1.3.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/dwr-1.1.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/ezmorph-1.0.3.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/freemarker-2.3.16.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/json-lib-2.1-jdk15.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/juli-6.0.18.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/ognl-3.0.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/org.apache.felix.bundlerepository-1.2.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/org.apache.felix.framework-1.4.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/org.apache.felix.main-1.4.1.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/org.apache.felix.shell-1.0.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/org.apache.felix.shell.tui-1.0.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/oro-2.0.8.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/oval-1.31.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/plexus-<a href="http://lib.csdn.net/base/4" class='replace_word' title="Docker知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Container</a>-default-1.0-alpha-10.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/plexus-utils-1.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/sitemesh-2.4.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/<a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>spring</a>-beans-2.5.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/spring-context-2.5.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/spring-core-2.5.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/spring-test-2.5.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/spring-web-2.5.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/sslext-1.2-0.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/struts-core-1.3.10.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/testng-5.1-jdk15.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/tiles-api-2.0.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/tiles-core-2.0.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/tiles-jsp-2.0.6.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/velocity-1.6.3.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/velocity-tools-1.3.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/xpp3_min-1.1.3.4.O.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/lib/xstream-1.2.2.jar"/> <classpathentry kind="lib" path="web-app/WEB-INF/xwork-extra"/> <classpathentry kind="output" path="web-app/WEB-INF/classes"/></classpath>
7.配置web-app
将“struts2/struts-2.2.1/src/apps/blank/src/main/webapp”下所有内容拷贝至“struts2/web-app”下
8.启动第一个Struts2应用
编译所有的源码文件后启动Tomcat,如果中途有任何错误,请到maven的repository目录查找相关jar包直至顺利通过。
注:参考自http://blog.csdn.net/rcom10002/article/details/5963691
- Struts2源码粗略分析一:开发环境
- Struts2源码粗略分析一:准备开发环境
- Struts源码粗略分析一:准备开发环境
- Struts2源码粗略分析二:初始化详解
- Struts2源码粗略分析三:请求处理流程分析
- Struts2源码粗略分析四:理解xwork工作原理
- Struts2源码分析一
- struts2源码分析(一)(初始化)
- Struts2源码分析(一)
- bootstrap源码分析系列:一,文件结构和开发环境
- Struts源码粗略分析二:代码初探
- Struts源码粗略分析三:代码剖析
- Struts2源码分析--请求处理(一)
- Struts2学习笔记(一):struts2开发环境配置
- Struts2源码分析(一) 一一一 ModelDrivenInterceptor
- struts2源码分享(一)---环境搭建篇
- struts2粗略总结
- Struts2源码分析(二) 一一一 StrutsRequestWrapper
- javaweb 订单管理
- NuttX 操作系统用户手册(NuttX Operating System User’s Manual)
- io流中的几个面试题
- Swagger
- Android:最全面的 Webview 详解
- Struts2源码粗略分析一:开发环境
- xpath
- dubbo学习笔记
- ocker入门教程(二)命令
- 三星手机点击事件不执行或偶尔执行
- FastMM与Indy组件内存泄漏问题
- 数据库系统概念 读书笔记(四)
- 朴素贝叶斯过滤垃圾邮件
- 3dsmax中的UDIM