您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 使用Struts2开发JavaWeb应用程序
使用Struts2开发JavaWeb应用程序第一章Struts2概览Struts是什么?Struts2是一个雅致的,可扩展的,用来建立企业级JavaWeb应用程序的框架。Struts2不但注重程序的开发过程,更注重部署和后期维护。Struts2来源于WebWork2。Struts2融合了Struts和WebWork的社区力量,是这两个社区努力的结果。Struts2非常容易使用。Struts2最大可能的保留了和Strut1.x的相似行。Struts2的特性有那些?上面提到,Struts2关注开发,部署和后期维护三个方面。我们就从这三个方面说明Struts2的新特性。构建上手非常容易,可以使用起步教程,模板工程或者Maven原型建立Struts2工程。(起步简单)Struts2的官方站点上有很多关于Struts2入门的资料,Struts2的下载目录中包含空白的模板工程(struts2-blank-2.x.war)和示例工程(struts2-showcase-2.x.war)可以参考。Maven2中有Struts2的项目模板,可以使用Maven2直接建立Struts2工程更好的设计,Struts2中不想要要在在处理和HTTP相关的操作,自需要使用框架的接口即可。在Strut2中不再会涉及到诸如HttpServletRequest,HttpServletResponse,HttpSession等Http相关的Servlet接口类,取而代之的是Struts2的接口,例如RequestAware,SessionAware等。强大的标签库,Struts2的标签基于CSS,标签可以提供自己需要的HTML支持。Struts2的标签利用了CSS和模板,使用起来会非常方便,在Struts1.x中我们需要使用Table来组织表单,但是在Struts2中所有的标签自带了Table内容,可以方便的处理格式。例如s:textfield标签自动添加了trtd等标签。有状态的Checkbox,可以以一种统一的方式记录checkbox状态的变化。在Struts2中即使没有被选中的checkbox其内容仍然存在于Struts2框架中,不必像在Struts1.x中那样需要做特殊的存在性判断。灵活的取消按钮,在取消按钮点击的时候可以指向一个不同的action。@TODO可以在制定Form的action的同时,制定cancel按钮的action,当点击submit和cancel的时候出现完全按不同的功能。第一等级的AJAX的支持,在普通struts标签的基础上,使用AJAX增加了交互性和灵活性。Struts2的标签内置了Ajax的支持。Struts2的标签使用了DojotoolkitAjax框架,不但能够使用Ajax特性,而且能够使用非常丰富和强大的浏览器小控件,例如日期选择控件见到那集成Spring框架,非常简单的使用Spring框架提供的依赖注入功能。可以方便的使用Spring管理Struts2的action的创建,通过使用Spring可以充分的利用Spring的依赖诸如功能,并且能够很好的集成其他的框架,例如Hibernate,iBatis等。更多的返回形式,除了JSP还支持,JasperReports,JFreeChart,Action链,文件下载等。除了支持JSP的表现形式,还支持JasperResports报表,JFreechart图标,Action链,文件下载等。POJO表单,不再需要ActionForms,使用Javabean获得客户的收入或者将属性表示出来,完全消除了ActionForm组建,可以使用任意合适的类型来接受页面传来的数据或者将数据表现出来。ActionFrom可以使用POJO的JavaBean来替代,JavaBean中的属性可以使用String,也可以使用具体的类型,例如Date,Int等。POJOAction,使用任意的类作为Action类,甚至可以使用接口。任何类都可以作为Action类,只要接口满足一些简单的定义,不需要在使用Action类似的基类,你可以完全自由的发挥。部署插件结构,使用jar文件扩展框架功能,不需要在做手动的配置,内置了JavaServerFaces,JasperResports,JFreeChart,Tiles等插件。扩展一个功能只需要添加一个插件,插件甚至可以热插拔,在你的应用不停止的情况下追加新的功能。集成了分析功能,可以方便的找到程序性能的问题点。可以不借助外力发现程序的热点,找到问题的所在,准确的报告错误,可以非常准确的指出程序的问题点。准确的报告运行时的错误,方便解决问题。维护Action容易测试,直接测试Struts2的Action,不需要使用MockHttp对象来测试。Action是普通的类,不需要特殊的环境,所以Struts2的Action特别容易测试。聪明的默认值,不需要配置不必要的配置,大部分的框架配置元素的都有非常合适的默认值,基本上你不需要在做任何配置。Struts2有很多的配置项,但是每一个都有默认值,基本额上不需要更改默认的选项即可保证最佳容易定制的控制器,可以定制每一个Action的处理过程。可以使用Intercepter来过滤每一个Action,在Action执行前后追加自定义的操作。集成了Debugging,可以使用内容之的debugging工具找到问题。灵活的标签库,可以通过修改FreeMarker模板来定制标签的输出,不需要在操作像天书异样的JSPTaglibAPI,模板语言支持,Freemarker和Velocity可以自定义模板库,或者修改已有模板的内容来定制页面的显示。Struts2中使用的模式CommandChainofresponsibilityStruts2处理流程概要上图来源于Struts2官方站点,是Struts2的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤1客户端初始化一个指向Servlet容器(例如Tomcat)的请求2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)3接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类6ActionProxy创建一个ActionInvocation的实例。7ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关*********(Intercepter)的调用。8一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。第二章一个简单的Login应用程序第一节需求定义简单的需求如下图1用户处在Welcome.jsp页面,点击登录连接到达Login.jsp页面2在Login.jsp输入用户名密码,点击登陆按钮,转到LoginAction处理3.1在登陆成功的情况下,再回到Welcome.jsp页面,在页面上显示登录信息3.2在登陆失败的情况下,返回到Login.jsp显示登陆错误信息Welcome.jspLogin.jsp1开始登陆2登陆3.1登陆成功3.2登陆失败LoginAction第二节使用maven建立基本开发结构使用如下命令建立Struts2应用程序框架结构mvnarchetype:create-DgroupId=com.jpleasure-DartifactId=login-DarchetypeGroupId=org.apache.struts-DarchetypeArtifactId=struts2-archetype-starter-DarchetypeVersion=2.0.5-SNAPSHOT-DremoteRepositories=目录说明生成的Struts2开发框架目录满足一般的maven项目,主要由以下目录组成:src├─main源代码目录│├─javajava代码│├─resources资源文件等│└─webappWeb目录│├─jspJSP目录│├─stylesCSS目录│└─WEB-INFWEB-INF目录└─test测试代码目录├─javajava代码└─resources资源文件等重要文件:src\main\resourcesapplicationContext.xmlSpring配置文件log4j.propertieslog4j配置文件struts.propertiesstruts参数文件struts.xmlstruts配置文件xwork-conversion.propertiesxwork参数文件src\main\webapp\WEB-INFdecorators.xmldwr.xmlDWR配置文件sitemesh.xmlSiteMesh配置文件web.xmlWeb部署描述文件进入工程目录(login目录)使用如下命令建立Eclipse工程文件mvneclipse:eclipse使用如下命令打包工程mvnpackage应用程序打包完成之后可以再login\target目录中看到login.war文件,这个文件就是最终的成果文件使用如下命令运行应用程序mvnjetty:run也可以将login.war拷贝到tomcat的webapps目录下来运行struts2应用程序。打开IE在浏览器中输入:可以看到如下画面说明自动生成的框架已经可以运行。第三节补充Login功能下面我们来完成login功能首先将login工程导入到Eclipse中之后建立在src\main\java目录中建立LoginAction类,代码清单如下:packagecom.jpleasure.login.action;importjavax.servlet.http.HttpSession;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.ServletActionContext;publicclassLoginActionextendsActionSupport{privateStringname;privateStringpassword;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringforward()throwsException{returnSUCCESS;}@OverridepublicStringexecute()throwsException{if(a
本文标题:使用Struts2开发JavaWeb应用程序
链接地址:https://www.777doc.com/doc-2687318 .html