Struts_2.0基础教程全.doc_第1页
Struts_2.0基础教程全.doc_第2页
Struts_2.0基础教程全.doc_第3页
Struts_2.0基础教程全.doc_第4页
Struts_2.0基础教程全.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉中地数码科技有限公司 电信事业部武汉中地数码科技有限公司电信事业部Struts 2.0基础教程修订历史:版本作者/修订者日期描述目录Struts 2.0基础教程1目录31、struts 2.0简介42、使用版本43、添加struts2的支持44、Struts2的大致工作流程75、新建web工程76、五步完成添加struts2的应用87、用AJAX来与后台交互138、使用jsonplugin149、使用拦截器,统一权限验证1410、使用拦截器,统一错误处理1411、在action中获取session1412、与spring的整合14 1、 struts 2.0简介JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。2、 使用版本2事业部工具库02 软件开发工具Java框架&开源组件struts-2.0.14-all.zip内含有struts2.0.14的完整类库以及其源码,还有struts的2.0.14的API说明文档,也包含了一些struts的官方例子。3、 添加struts2的支持1) 最小需要的包:Commons-logging-1.0.4.jarFreemarker-2.3.8.jarOgnl.jarStruts2-core-2.0.14.jarXwork-2.0.7.jar在一般的开发中,我们只需要把这些包引用进来,即可以满足使用struts2的需要了。2) 将这些包引用到工程中想要引用这些包到工程中很简单,在工程上右键Build PathAdd External Archives弹出对话框选择相应包,即可引入。3) 将struts2.0常用包以常用library的方式引入(这样加了以后,第二步还需要吗?)首先我们在eclipse中建立一个名为struts2.0的用户library,WindowPreferencesJavaBuild PathUser LibrariesNew然后通过Add JARs给新建的用户library加入包:最后,在工程上右键Build PathAdd LibrariesUser LibraryNextStruts 2.0完成4、 Struts2的大致工作流程1) 浏览器发送请求,如请求/MyPage.action,Web容器根据过滤器,转发请求到Struts容器2) Struts核心控制器FilterDispatcher根据请求决定调用合适的Action3) Web Work的拦截器自动对请求应用通用功能,如验证框架等4) 回调Action的Execute方法,执行业务代码5) Execute方法执行完毕,返回结果,对于struts2而言,其执行结果被保存到了一个叫做valueStack的堆栈中6) 界面程序valueStack堆栈中取得结果5、 新建web工程1、 FileNewProjectMyEclipseJava Enterprise ProjectsWeb Project2、 填写工程名字:TestLogin3、 选择J2EE 解释级别为Java EE5.0,如图:4、添加struts2.0支持:工程上面右键Build PathAdd LibrariesUser LibraryStruts2.0Finish6、 五步完成添加struts2的应用1、 在Webroot/WEB-INF/Web.xml里面添加过滤器,将所有请求转向到struts容器。以下是该配置:struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*以上配置很明显已经将所有请求全部转向到了一个叫struts2的过滤器,该过滤器的类是org.apache.struts2.dispatcher.FilterDispatcher,那么之后的处理都交给了这个过滤器了。2、 编写Action类在本例中,我们模拟一个登录功能,因此我们设计一个简单的Action类:同时该类需要继承于ActionSupport类。当然,在建立这个类之前我们建立新包Actions,而我们所有的Action类都将会放在这个包下。新建包的操作为:工程上(或者某个包上)右键Newpackage。操作如下:在src目录上或者在工程上右键NewClass,弹出新建类的对话框:在Pachkage栏填写上包名,在Name栏写上类的名字,然后在Supperclass里选择父类com.opensymphony.xwork2.ActionSupport,最后点击完成即可生成该类文件,剩下的工作就是定义和实现类成员和方法了。3、 让Action类可以接收参数其实在设计这个Action类的时候,我们的成员变量就已经包含了需要传递的参数,struts给了我们非常方便的解决方案,我们不再需要自己写Request.getParams(),最重要的不再需要将String转换成Integer之类的,我们需要做的仅仅是将你设计的Action类中,用来接收参数的成员变量添加getter和setter方法即可,当然这里也有个约定,就是在客户端传递的参数名称和成员变量的名称要一致,而且大小写也一致。添加getter和setter方法,Eclipse也提供了更加方便的操作,在代码上右键SourceGanerate Getters and Setters,也可以直接Alt + Shift + s后按下R,弹出添加getter和setter的对话框:接着,我们实现登录处理方法:public String userLogin() throws Exception loginRes = 您好, + this.userName; return SUCCESS;4、 配置Action类前面我们已经配置过滤器将所有请求转发到struts框架了,那么理所当然,我们还需要一个映射配置,将各请求映射到相应的Action上,以及处理完后的转向页面,虽然此处的配置不只仅仅能配Action映射,但是这是最基本的配置。该配置文件我们一般都默认是struts.xml,一般性的都放在src目录下。因此首先我们在工程的src目录下建立一个文件叫做struts.xml,操作是在src目录上右键NewFile完成。上面只是生成了一个文件,文件名叫做struts.xml,而其实该配置文件之所以会成为struts框架的配置文件,关键在于加入以下的文档声明:接下来就是在配置文档中添加Action配置了:首先,整个配置将会被节点包含着,接下来是包名节点,再就是具体的Action节点了,其大概结构如下: /main.jsp/error.jsp /main.jsp/error.jsp P与java源文件类似,struts配置也有包的概念,只不过此包非彼包,在这里,包的名称对应着在web.xml中的过滤器的名称,反过来,如果过滤器在struts.xml中找不到与之名称对应的包,将会报错。包里面也可以包含子包。Package namespace定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/MyActions那么访问是的地址为http:/localhost:8080/CtnLogin/MyActions /XX.action。Package .extends定义包配置继承的模板,一般都是struts-default。Action一个action定义一个请求,class对应到相应的类,name值指定了该action的名称,请求时将以name.action进行请求,如http:/localhost:8080/CtnLogin/MyActions /login.action,当然在java的世界中,一切请注意大小写。Method指定本次action所对应action类中的某个方法,不指定则默认为action类的Execute方法。Result定义了action执行完后对各种结果的处理,result中的name是一个标识,也是action的返回值,上例配置中的SUCCESS和input都是struts框架中定义的字符标识,分别代表执行成功和执行异常。而在我们写的action中,有可能返回”ok”和”error”字符,甚至可能是1、2、3字符,我们就根据这字符区分执行结果该跳转到哪个页面进行处理。注意,action中的返回值并非我们真正要的结果,而是执行结果的一类标识。5、 开发用户界面程序首先我们还是看jsp的界面程序。很简单,主页面就一个form表单,两个input分别输入用户名和密码,一个提交按钮。Form表单的action指向MyActions/login.action。另外定义一个成功登录的页面和一个错误页面。/index.jsp 名称: 密码: /main.jsp My JSP Main.jsp starting page OK了,已经完成了我们的sturts程序,现在可以把这个web应用程序部署到web服务器上去了,请参考java开发环境搭建.doc。接着我们在浏览器里面输入http:/localhost:85/CtnLogin便可以测试了,我们可以看到如下结果:7、 用AJAX来与后台交互与平常一样的,引入common.js和ctn-all.js,然后写异步请求函数,增加按钮触发。下面是在index.jsp中增加的代码: function login() var url = MyActions/login.action?; var data = userName= + document.getElementById(userName).value + &userPwd= + document.getElementById(userPwd).value; document.write(CtnTrans.getText(url + data); 就这么简单,我们已经用AJAX来替换了传统的请求方式。只是,我们还会发现,我们必须要保留着页面main.jsp来作为结果的存储容器,这是多么的浪费。其实解决此道有几个方法,我们可以在action类中通过访问struts框架的valuestack直接将结果输出来,但是在这里我们不去实验了,我们介绍另外一个组件,叫jsonplugin,是由google公司开发的开源组件。通过jsonplugin不仅可以解决刚才的问题,更重要的,它可以自动把我们的action中的结果序列化成json对象并输出到客户端,而且更加吸引人的是该plugin无需我们对action做出任何改动,仅仅需要在struts.xml中稍微改动下配置即可。8、 使用jsonplugin我们使用Jsonplugin的版本是0.32,就是jsonplugin-0.32.jar。首先我们把这个jar包引用到工程中来。接下来,我们修改下struts.xml如下:/main.jsp/error.jsp没有太多改变,只是将package的模板更改为了json-default,以及指定result的类型type为json。接下来我们就又可以测试了。输出变成了如下结果:9、 在action中存取session1、在struts2中,原来servlet中的session被封装成了map对象,通过如下方法可以取得改map对象:Map session

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论