您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 第一讲(Struts2入门配置及包)
Struts2入门章节内容struts2引入2学习方法31第一个Struts2HelloWorld程序33如何解决struts.xml配置文件中无提示的问题34Struts2中的包351、学习方法学习框架,不要去记忆一些东西,更重要的是去理解一些东西,很多人,在写代码的时候,总是说:“原来这里是怎么写来着?”,这就是典型的记忆学习法,需要摒弃。2、struts2引入Struts2是在WebWork2基础发展而来的。和struts1一样,Struts2也属于MVC框架。不过需要注意的是:尽管Struts2和struts1在名字上差别不大,但Struts2和struts1在代码编写风格上几乎是不一样的。Struts2主要有以下优点:1在软件设计上struts2没有像struts1那样跟ServletAPI和strutsAPI有着紧密的耦合,Struts2的应用可以不依赖于ServletAPI和strutsAPI。Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。publicclassOrderListActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{}}2Struts2提供了拦截器,利用拦截器可以进行AOP编成,实现如权限拦截等功能。3Struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们需要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。4Struts2的输入校验可以对指定方法进行校验5Struts2提供支持多种表现层技术,如:jsp、freeMarker等6Struts2提供了全局范围、包范围、action范围的国际化资源文件管理实现。大家可以到目前最新版为2.2.3。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的jar包是不同的。下面给出了开发Struts2程序最少需要的jar.struts2-core-2.x.x.jar:Struts2框架的核心类库xwork-2.x.x.jar:XWork类库,Struts2在其上构建ognl-ognl-3.x.jar:对象图导航语言(ObjectGraphNavigationLanguage),struts2框架通过其读写对象的属性freemarker-2.3.x.jar:Struts2的UI标签的模板使用FreeMarker缩写commons-logging-1.1.x.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4j和JDK1.4+的日至记录。commons-fileupload-1.2.1.jar文件上传组建,2.1.6版本后必须加入此文件commons-io-2.0.1.jar输入输出搭建Struts2开发环境--开发struts2应用依赖的jar文件下载源软件下载下载struts2.1.6(选择下载fulldistribution)下载myeclipse,下载tomcat,下载xwork,(要注意的是下载与struts2.1.6的对应版本,即2.1.2)3、第一个Struts2HelloWorld程序建立第一个struts2.1的程序(参考struts源码)找到struts目录下对应的apps目录解压struts2-blank-2.X.X.warCopy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包会在文件上传和下载时需要,其他为必须Copy对应的struts.xml到src目录,在packageexplorer视图进行操作注释掉struts.xml的多余内容建立HelloStruts2.jsp文件*修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为Chinese,NationalStandard在struts.xml中照原配置进行对应的配置修改对应的web.xml,建立struts2的filter步骤一:注释掉struts.xml的原配置在struts.xml中照原配置进行配置struts!--constantname=struts.enable.DynamicMethodInvocationvalue=false/constantname=struts.devModevalue=false/includefile=example.xml/packagename=defaultnamespace=/extends=struts-defaultdefault-action-refname=index/actionname=indexresulttype=redirectActionparamname=actionNameHelloWorld/paramparamname=namespace/example/param/result/action/package--constantname=“struts.devMode”value=“true”/--开发模式(devMode)packagename=defaultnamespace=/extends=struts-defaultactionname=hellostruts2result/HelloStruts2.jsp/result/action/package/strutsjavateachersun@163.com步骤二:修改对应的web.xml,建立struts2的filter在struts1.x中,struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class!--自从struts2.1.3以后,下面的FilterDispatcher已经注为过时filter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class--/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。注意:struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件步骤三:建立HelloStruts2.jsp文件bodyHelloStruts2br/body直接执行:工程名/hellostruts2链接地址devMode问题讲解constantname=“struts.devMode”value=“true”/--开发模式上面这行,写在struts.xml中以后,以后在tomcat启动后,如果修改struts.xml文件,这个时候不需要重新加载启动tomcat。比较方便。就像jsp页面一样,修改后,不需要重新发布。简单HelloWord处理流程4、如何解决struts.xml配置文件中无提示的问题有时候,在struts.xml中,打“”的时候,不能出现一些标签,就是因为上面的struts-2.0.dtd没有找到,那就有两种做法,第一种:将自己的电脑连接到internet第二种:如下图所示,到myeclopsepreferences然后到相应的位置,找到自己电脑中的struts2.0.dtd的位置,按照下面的图解加载进去就可以了。javateachersun@163.compackagename=oristandnamespace=/testextends=struts-defaultactionname=helloworldclass=com.oristand.action.HelloWorldActionmethod=executeresultname=success/WEB-INF/page/hellostruts2.jsp/result/action/package在struts2框架中使用包来管理Action,包的作用和java中包是非常类似的,它主要用于管理一组业务。功能相关的action。实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为该包下Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action.namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。通常每个包都应继承struts-default包,因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等都是通过拦截器实现的。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。struts-default.xml也是Struts2默认配置文件。struts2每次都会自动加载struts-default.xml文件。包还可以通过abstract=true定义为抽象包,抽象包中不能包含action.5、Struts.xml配置中的包介绍packagename=struts-defaultabstract=true。。。。/package如果一个包定义为抽象,那么这个包只能被其他包所继承,在这个包里就不能定义action了。抽象包默认包原理:如果请求为/barspace/bar.action,系统首先查找/barspace命名空间里名为bar的Action,如果在该命名空间里找到对应的Action,则使用该Action处理用户请求;
本文标题:第一讲(Struts2入门配置及包)
链接地址:https://www.777doc.com/doc-3175513 .html