【Jsp精品源码栏目提醒】:网学会员在Jsp精品源码频道为大家收集整理了“Struts2工作原理及配置MyEclips运行第一个Struts2项目 - 其它资料“提供大家参考,希望对大家有所帮助!
Struts2 工作原理及配置 MyEclips 运行第一个 Struts2 项目 配置 struts2 在 MyEclipse 中的环境: 启动 MyEclips,在启动时设定工作目录名为 D:test,启动后新建一个 Web Project,假如取名为 struts2,并在 J2EE Specification Level 选项中选择 Java EE 5.0,单击 finish。
建好后把事先下载的 struts2 程序包解压后进入.. struts-2.2.1.1lib 中(该 struts2 开发包中有4个文件夹,apps 是一些实例文件;docs 是帮助文档;lib 是开发包;src 是开源的源代 ,选择须最小配置的几个包:码) commons-fileupload-1.2.1.jar(处理文件上传的)、 commons-io-1.3.2.jar(是 commons-fileupload-1.2.1.jar 所依赖的)、 commons-logging-1.0.4.jar(关于日志处理的) 、 ognl-3.0.jar(对象图的表达语言) 、 、 struts2-core-2.2.1.1.jar(struts2 的核心包) 、 xwork-core-2.2.1.1.jar(基于 xwork 的内核) freemarker-2.3.16.jar() 把这个 7 个 jar 直接拷贝粘贴到刚才新建的 web 工程中的:struts2/WebRoot/WEB-INF/lib中,此时 MyEclipse 会自动新建一个引用库夹 Referenced Libraries,所拷贝的几个包自动进入其中。
修改 WebRoot/WEB-INF/web.xml 的内容为: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepa reAndExecuteFilter struts2 / 该 文 件 是 在 tomcat 启 动 时 就 会 自 动 解 析 的 , 而 该 配 置 是 把 所 有 请 求 都 交 给org.apache.struts2.dispatcher.ng.filter.StrusPrepareAndExecuteFilter类去处理,而此类是 strtus2 的类,所以也就把 web 应用纳入了 struts2 的范围之内了。
在 WebRoot 上新建一个 login.
jsp 文件: username: password: 从可知,接受提交的是 login,那么 login 它在哪里呢?这 就 要 根 据 struts.xml 里 的 指 示 去 寻 找 了 。
( 这 里 的 actionlogin 实 际 上 是actionlogin.action的默认形式) 除此 web.xml 配置之外,struts2 还有自己的一个配置文件,这个文件在 MyEclips 界面中的 src 目录下建,右键单击文件夹 src选择 newXMLBasic Templates, File name取为 struts.xml 说 明 : 在 src 中 建 立 的 该 文 件 MyEclips 会 自 动 复 制 一 份 到D:teststruts2WebRootWEB-INFclasses 中(该路径可通过单击工具栏上的 Openin Explorer 图标打开寻找)。
不只是这个 xml 文件是这样,实际上我们所建的所有类文件都会这样,因在 IDE 界面中,我们是看不到 classes 这个目录的。
该 struts.xml 是通过 DTD 文件来进行验证的,可在下载下来的 struts 开发文件夹 apps中找到相同的样本。
Apps/struts2-blank.war 是一个空实现的实例,该文件可用解压软件打开,打开后进入 struts2-blankWEB-INFsrcjava 里,打开 struts.xml 文件,把里面的 DTD 部分:拷贝下来粘贴到自己的 strus.xml 中,并建立 struts 根元素,建好后该文件内容如下: /result.
jsp 这里的意思是,提交到 login 的请求,将由类 com.hf.struts2.LoginAction 来处理 所以接下来我们要建立类 com.hf.struts2.LoginAction 在 src 中先建立一个包,假设包名取为 com.hf.struts2,并在该包上建立一个 class,取名为 LonginAction,其内容如下:package com.hf.struts2public class LoginAction private String username//与前面建的login.
jsp中的表单中的对应控件名一致 private String password //与臆面要建的login.
jsp中的表单中的控件名一致 public String getUsername return username public void setUsernameString username this.username username public String getPassword return password public void setPasswordString password this.password password public String execute return success 当 login.
jsp 提交到 login 时,根据 struts.xml 的配置: /result.
jsp 会交由刚才所建的类来处理,在 struts2 中,此类会根据表单中的控件名 username 与password 自 动 调 用 对 应 的 setUsername 与 setPassword , 并 把 username 与password 这两个属性值保存在 Http 的 request 中,最后执行 execute方法,返回字符串 success 接下来再根据 struts.xml 的配置,当 LoginAction 类执行完后,根据类的返回值去寻找 name“返回值”的那条的配置,在这里就恰好有符合该条件的配置,即: /result.
jsp 于是,以后就转到该语句中配置的页面 result.
jsp 上去了。
根据前面的分析,须建立result.
jsp页面:在WebRoot中建立result.
jsp页面,其内容如下: username:requestScope.username password:requestScope.password 到此,该项目编写完备,那么怎样运行呢。
首先在Eclipse中配置tomcat:通过菜单windwsPreferencesMyEclipsServersTomcatTomcat 6.x打开选中单选钮Enable,并单击Browse…选择自己的tomcat后单击OK。
然后在tomcat中配置虚拟目录我的电脑D:apache-tomcat-6.0.18apache-tomcat-6.0.18confserver.xml,打开此server.xml文件,在结点前加上:第三步 在MyEclips中启动tomcat: 此时会出现异常:Caused by: java.lang.IllegalArgumentException:Javassist library is missing in classpath Please add missed dependency其原因是缺乏Javassist这个包的支持。
这是struts2.2的内部变化造成的,请看下面: Struts 2.2.1 的内部变化主要有: 现在成为了 Struts 2 的一部分。
XWork 已经迁移到了 Apache 软件基金会, 新版 XWork 2.2.0 也随着 Struts 2.2.1 一同发布。
未来,XWork 将会迁移到 Struts 2 中。
XWork Maven artifact 现在已位于org.apache.struts.xwork 下。
XWork 使用了最新版的 OGNL 3.0,OGNL 源代码仓库则位于 Github 上。
Javassist 依赖被 OGNL 排除,要记得将其包含进来,除非在 JBoss 服务器上加载应 用。
解决了 XWork 一些突出的缺陷。
所有的示例应用(除了 jboss-blank)都包含了 Javassist 依赖。
新的 jboss-blank 示例应用使用了 JBoss 服务器,它没有将 jboss-blank 库包含进 来,因为 JBoss 服务器已经提供了。
增加了新的 Freemarker 缓存选项,这会提升标签的渲染速度。
所以我们要手工把Javassist.jar包引入工程中,而该包在struts2开发包中的appsstruts2-blankWEB-INFlib javassist-3.7.ga.jar即是,将其拷贝到MyEclips中的WebRoot/WEB-INF/lib中重启tomcat服务器即可。
当tomcat正常启动后,启动浏览器,在地址栏中输入http://localhost:8080/struts2/login.
jsp即可看到所设计的页面了。
如何把trruts2的源代码导入MyEclips中 在没有引入源代码前,当我们双击一个工程如struts2里的ReferencedLibrariesstruts2-core-2.2.2.2.jarorg.apache.strust2.dispatcher.ng.filterstrutsPripareAndExecuteFilter.class类时,显示的是其编译的文件,看不到源代码。
如需查看源代码,需将struts2的源代码引用进来。
其方法是:在项目名上单击鼠标右键,依次选择Build Pathconfigure Build Path…,在打开的窗口中选择Libraries标签,并展开struts2-core-2.2.1.1.jar前边的号,选中Source attachment:None,单击右边的Edit…按钮,在接着打开的对话框中单击右边External Folder…按钮,随后寻找到struts2开发包的存放地点,如F:softjavastrutsstruts-2.2.1.1-allstruts-2.2.1.1srccoresrcmainjava(只选java文件夹这一步,不能往下选到org)点击确定,返回后再单击OK,即把struts2的源代码引入了MyEclips里,如果再去查看ReferencedLibrariesstruts2-core-2.2.2.2.jarorg.apache.strust2.dispatcher.ng.filterstrutsPripareAndExecuteFilter.class类时,显示的是则是源代码了。
怎样根据源代码生成struts2的帮助文档第一步 新建一个Web Project,取名如struts-doc第二步 寻找struts2源文件的路径,如打开到此层后F:softjavastrutsstruts-2.2.1.1-allstruts-2.2.1.1srccoresrcmainjava把其org文件夹选中并复制粘贴到刚才新建的struts-doc的src文件夹中(在MyEclips界面中选中src直接粘贴),此时有很多错误,那是因为struts要依靠许多的jar文件,而这些jar文件我们还没有放到classs文件夹中。
加入这些jar文件的步骤是:在项目名上单击鼠标右键,依次选择Build PathconfigureBuild Path…,在打开的窗口中选择Libraries标签,单击右边Add External JARs…按钮,然后进入到你存放struts2目录的lib目录中,把其中的所有jar文件全部选上,点击OK返回后,其错误便全部消失了。
第三步 在本地磁盘新建一个文件文件夹,取名如为struts2-doc,用于存放生成帮助文档第四步 在MyEclips中选择菜单ProjectGeneration Javadoc…,在打开的窗口中选中前面新建的项目名struts-doc,并通过Browse…按钮选中刚才建立的存放生成帮助文档的目录strus2-doc后,单击Next按钮,在打开的窗口中选中Document title:并在其文本框中输入标题文字如Struts2.2.1.1,在要求选择归纳的文件中,单击右边的Select All按钮,使其全选中,再单击Next,在接着打开的窗口中点击Finish按钮,在出现的询问窗中点击Yes To All按钮,便开始生成了。
生成过程中会出一些警告,往往是一些标记找不到引用而也,不会影响使用的。
至此,Struts2的帮助文档便生成了。
Struts2里的类型转换