struts2-完整版(传智播客_王昭珽)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

.Struts2课件1Mvc与servlet1.1Servlet的优点1、是mvc的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上发展过来的。所以掌握servlet是掌握mvc的关键。2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。3、程序员可以对servlet进行封装。Struts2就是从servlet中封装以后得到的结果。4、市场上任何一个mvc的框架都是servlet发展过来的,所以要想学好struts2这个框架,了解servlet的运行机制很关键。1.2Servlet的缺点1、每写一个servlet在web.xml中都要做相应的配置。如果有多很servlet,会导致web.xml内容过于繁多。2、这样的结构不利于分组开发。3、在servlet中,doGet方法和doPost方法有HttpServletRequest和HttpServletResponse参数。这两个参数与容器相关,如果想在servlet中作单元测试,则必须初始化这两个参数。4、如果一个servlet中有很多个方法,则必须采用传递参数的形式,分解到每一个方法中。2重构servlet针对servlet以上的特点,我们可以对servlet进行重构,使其开发起来更简单。更容易,更适合团队协作。重构的目标:1、只写一个serlvet或者过滤器,我们这里选择过滤器。2、不用再写任何的servlet,这样在web.xml中写的代码就很少了。3、原来需要写serlvet,现在改写action。4、在action中把HttpServletRequest参数和HttpServletResponse参数传递过去。5、在过滤器中通过java的反射机制调用action。6、详细过程参照cn.itcast.action包中的内容3Struts2介绍1、struts2是apache组织发明的开源框架。是struts的第二代产品。2、struts2是在struts和webwork基础上整合的全新的框架。3、struts2的配置文件组织更合理,是企业开发很好的选择。4、struts2的拦截器为mvc框架注入了全新的概念。4Struts2入门4.1新建一个工程为struts24.2修改工程的编码为utf-84.3导入jar包4.4创建test.jsp文件4.5创建HelloWorldAction在新建的工程下创建一个文件夹名为lib,把相应的jar包到入到lib文件夹中,并且放入到classpath中,jar包有:packagecn.itcast.struts2.action;importcom.opensymphony.xwork2.Action;publicclassHelloWorldActionimplementsAction{publicStringexecute()throwsException{//TODOAuto-generatedmethodstubSystem.out.println(helloworldaction);returnsuccess;}}4.6编写success.jsp文件4.7编写struts配置文件该文件放在src下即可bodyThisismyJSPpage.brbase命名空间下的HelloWorld运行完成!/body4.8编写web.xml文件4.9运行结果body测试struts2,输出有命名空间的helloWorldbrahref=${pageContext.request.contextPath}/base/helloWorldAction.actionhelloWorld/abr测试struts2,输出没有命名空间的helloWorldbrahref=${pageContext.request.contextPath}/helloWorldAction.actionhelloWorld/a/body4.10加载struts.xml过程说明:1、在web服务器启动的时候,执行的是过滤器中的init方法。在这里回顾一个问题:一个过滤器中的init方法在什么时候执行?总共执行几次?2、在启动服务器的时候,执行了过滤器中的init方法,加载了三个配置文件struts-default.xml、struts-plugin.xml、struts.xml3、因为这三个文件的dtd约束是一样的,所以如果这三个文件有相同的项,后面覆盖前面的。因为先加载前面的,后加载后面的。4、struts.xml文件必须放在src下才能找到。5Struts2基本配置5.1Extends用法说明:1、上述内容中,因为在struts.xml文件中,所有的包都继承了struts-default包(在struts-defult.xml文件中),所以程序员开发的action具有struts-default包中所有类的功能。2、而struts-default.xml文件在web服务器启动的时候就加载了。3、在struts-default.xml文件中,定义了struts2容器的核心内容。4、可以做这样的尝试:把extends=”struts-default”改为extends=””会怎么样呢?5.1.1例子在struts.xml文件中在上述的配置中,重新设置了一个包,名称为test,这个包继承了base。所以当访问时也能输出正确的结果,并且命名空间和base包中的命名空间没有任何关系了已经。如果在struts2的配置文件中不写extens=”struts-default”会出现什么样的结构呢?packagename=testnamespace=/testextends=base/package5.2ActionSupprot在struts框架中,准备了一个ActionSupport类说明:1、代码段一说明了ActionSupport也实现了Action接口(以前写的类实现了Action接口)2、代码段二说明如果程序员写自己的action继承了ActionSupport,需要重新覆盖execute方法即可。3、这个方法默认的返回的是success;代码段一:publicclassActionSupportimplementsAction,Validateable,ValidationAware,TextProvider,LocaleProvider,Serializable{代码段二:/***Adefaultimplementationthatdoesnothinganreturnssuccess.*p/ActionSupport是一个默认的Action实现,但是只返回了一个字符串success*Subclassesshouldoverridethismethodtoprovidetheirbusinesslogic.*p/子类需要重新覆盖整个方法,在这个方法中写相应的逻辑*Seealso{@linkcom.opensymphony.xwork2.Action#execute()}.**@returnreturns{@link#SUCCESS}*@throwsExceptioncanbethrownbysubclasses.*/publicStringexecute()throwsException{returnSUCCESS;}代码段三:publicstaticfinalStringSUCCESS=success;在配置文件中,还可以这么写:actionname=actionSupprotActionresultname=success/baseconfig/successActionSupport.jsp/result/action可以看到action标签中没有class属性,在struts-default.xml中,default-class-refclass=com.opensymphony.xwork2.ActionSupport/说明:如果在action标签中没有写class属性。那么根据上述的配置文件,struts2会启用ActionSupport这个类。所以action标签中的class属性可以不写。5.3include在struts.xml中可以按照如下的形式引入别的struts的配置文件这样在加载struts.xml文件的时候,struts-include.xml文件也能被加载进来。实例见Baseconfig/testInclude.jsp文件5.4命名空间在说明extends用法的时候,我们引用了这样一个url:。如果我们把url改成这样:。行吗?答案是可以的。再改成这样的url:行吗?答案也是可以的。如果这样呢可以吗?这样就不行了。为什么?步骤:1、struts2会在当前的命名空间下查找相应的action2、如果找不到,则会在上级目录中查找,一直查找到根目录3、如果根目录也找不到,报错。4、如果直接访问的就是根目录,找不到,这样的情况就会直接报错。不会再去子目录中进行查找。6结果类型6.1说明1、每个action方法都返回一个String类型的值,struts一次请求返回什么值是由这个值确定的。2、在配置文件中,每一个action元素的配置都必须有result元素,每一个result对应一个action的返回值。3、Result有两个属性:name:结果的名字,和action中的返回值一样,默认值为success;type:响应结果类型,默认值为dispatcher.includefile=cn/itcast/struts2/action/include/struts-include.xml/include6.2类型列表在struts-default.xml文件中,如下面所示:说明:1、从上述可以看出总共10种类型2、默认类型为ServletDispatcherResult即转发。3、结果类型可以是这10种结果类型的任意一种。6.2.1Dispatcher类型6.2.1.1说明Dispatcher类型是最常用的结果类型,也是struts框架默认的结果类型。6.2.1.2例子页面参照:resulttype/testDispatcher.jspresult-typesresult-typename=chainclass=com.opensymphony.xwork2.ActionChainResult/result-typename=dispatcherclass=org.apache.struts2.dispatcher.ServletDispatcherResultdefault=true/result-typename=freemarkerclass=org.apache.struts2.views.freemarker.FreemarkerResult/result-typename=httpheaderclass=org.apache.struts2.dispatcher.HttpHeaderResult/result-typename=redirectclass=org.apache.struts2.dispatc

1 / 82
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功