播客专注于JavaNet和Php网页平面设计工程师_第1页
播客专注于JavaNet和Php网页平面设计工程师_第2页
播客专注于JavaNet和Php网页平面设计工程师_第3页
播客专注于JavaNet和Php网页平面设计工程师_第4页
播客专注于JavaNet和Php网页平面设计工程师_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第1深入浅写写在最前其中Model,通常指的就是JavaBean。Controller,通常指的是Servlet或者Filter,以及框架中封装的各类控制器。表现层模型MVC的由Model1模Model1Model1模型是很早以前项目开发的一种常见模型,只有jspJavaBean两部分组成。第二:所有逻辑代码都是写在JSP中的,导致代码重用性很低。 Model2模 性。下图展示的就是Model2模型:MVC模型的优略MVC MVC基于异步请求的MVVM模它全称是它全称是ModelViewVielModel。是针对mvc模型的再次改良,不过只改良了展示数据的部分。理和数据展示分开,可以让使用者在后期时,针对不同的需求进行调整。例如:如果是逻辑部分需要处理,则修第2章MVC模型框架之SpringMVC的源码分SpringMVC的执行过程分 通过此图,我们可以看到其实都是由前端控制器负责找到要执行的控制器方法。这个前端控制器就是 * /public oControler publicStringsay o(){return"success";}**publicStringo2()return}} ,最终发现它是通SpringMVC中三大组件详是在Spring的3.1版本之后加入的。它的出现,可以让使用者更加轻松的去配置SpringMVC的请求路径xml的配置(2.1.8小节。它的配置有两种方式:都是在springmvc.xml中加入配置。 bean(2.1.9小它起的作用是为我们建立起@RequestMap注解和控制器方法的对应关系。并且存在于MapRegistry对象中的mapLookupMap中,该MapLinkedHashMap。对应关系的建立时机是在应用加载的时候,也就是当服务器启动完成后,这些对应关系已经建立完成了。从而做到在我们的时候,我们通过2.1.1小节,学习了SpringMVC的执行过程,最终调用的是前端控制器DispatcherServlet的doDispatch方法,而该方法中的HandlerAdapter的handle方法实际调用了我们自己写的控制器方法。而我们使用此适配器,适用的控制器写法:要求实现Controller接口 @Companypublic oController2implementsControllerpublicModelAndViewhandleRequest(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsException{ModelAndViewmv=newModelAndView();return}}<beanid="simpleControllerHandlerAdapter" <bean 使用此适配器的控制器写法:要求实现HttpRequestHandler接口 @Company HttpServletResponseresponse)throwsServletException,}}<bean <beanid="httpRequestHandlerAdapter"这种方式也是我们实际开发中采用最多的。它的要求是我们用注解@Controller配置控制器 /public oControler publicString {return}}<bean 视图解析一个高度抽象的View接口。分视图类说是InternaleResourceViewResolver版本之后才有的。之前使用的是接下来就是了解视图解析器的作用。ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过分解析器类说 在分析之前,我们先需要回顾下控制器方法的返回值,此处我们都是以注解在分析之前,我们先需要回顾下控制器方法的返回值,此处我们都是以注解@Controller配置控制器为例,HTMLRequestMap映射地址。前往指定视图的方式,默认是请求转发,可以通过第二种:void,即没有返回值。因为我们在控制器方法的参数中可以直接使用原始SerlvetAPI对象HttpServletRequestHttpServletResponse对象,所以无论是转发还是重定向都可以轻松实现,而无需第三种:ModelAndViewDispatcherServletdoDispatch方法执行时,HandlerAdapter的handle方法的返回值就是ModelAndView,只有我们的控制器方法定义为void时,才不会返回此类型。当返回值是String的时候也会创建ModelAndView并返回。 请求参数封装的实现原我们原始的 /public oControlerpublicStringo(Stringname,Integerreturn}}无论get/post/put/delete请求方式,参数的体现形式都是key=value。但是如果形参变量名称和请求参数的key不一致呢?此时,参数将无法封装成功。 /publicclassParamController1 returnreturn}下,要想实现封装以我们前面的内容是无法实现的。此时需要我们使用@RequestBody注解。JSP代码片段<script<script }控制器代码片段**<p>Company: /publicclassParamController publicString o2(@RequestBodyStringreturn}}风格的URL,在现如今的开发中使用越来越普遍了。那么它是如何实现封装的呢?请看下图: 通通过上面执行过程的全图,我们看出SpringMVC在实现请求URL使用占位符传参并封装到控制器方法的形参中,器的AOP思 publicclassMyInterceptor1implementspublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throws return}Objecthandler,ModelAndViewmodelAndView)throwsSystem.out.println("postHandle方法}publicpletion(HttpServletRequestrequest,response,Objecthandler,ExceptionthrowsException }} 自定义器中三个方法说明及使用场为什么不使用XML第一步:配置web.xml<bean o2" <bean o3" <bean mvc:annotation-driven<!--Begin--<!-- <!--HandlerAdapter--<!--End--第3章基于MVC模型框架之Struts2中的源码struts2的执行过程分析 过滤器-- *@authorpublic oAction*publicString return}}<!DOCTYPEstruts"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" <%@pagelanguage="java"contentType="text/html;charset=UTF-8" "时序 struts2的过滤器(StrutsPrepareAndExecuteFilter)struts.xml配置然后,当客户端发送请求到服务器,先经过过滤器(StrutsPrepareAndExecuteFilter),它会根据请求的名struts.xml中找到对应的配置,创建我们的动作类对(每次时都会创建新的Action对象),然后执行指定的方法,根据方法的返回值找到Result的配置进行页面的跳转.最后响应浏览器。内部流程ContextMap,ActionContext和ValueStack面找到。它是一个Map结构的对象,其中key是字符串,valueObject。Map的key(它是ActionContext对象以及和ContextMapActionContext何时 ActionContext的线程安我们都知道,java的web工程是多线程的,那么每个线程在Action时,都会创建自己的答案就是,每次创建ActionContext使用图中的是对发起一个请求struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例,OgnlValueStack贯穿整个Action的生命周期。 数据一个容器。它的封装是ValueStack的内部结只能操作集合第一个元素的方法,所以我们说它实现了栈的特性。同时,它里面定义了一个ContextMap的 值栈中都有什值栈中包含了我们通过调用push方法压栈的对象,当前执行的动作了和一个名称为OGNL表达式获取数据时的注意细因为它对EL表达式做了如下改变:pageScope——>requestScope——>sessionScope——>applicationScopeEL表达式改变后的搜索顺序:pageScope—>requestScope—>valueStack—>contextMap—Struts2中的什么 什么需要。 Struts2中使用的前 Struts2中资源包的搜索顺在在 Struts2中如何自定义结果视struts2中提供的结果视 而配置中的这些类都有一个共同的特点,这些类都实现了而配置中的这些类都有一个共同的特点,这些类都实现了com.opensymphony.xwork2.Result接口。或者继承自该接口的实现类org.apache.struts2.dispatcher.StrutsResultSupport。如何自定义结果视第一步:写一个类,实现接口或者继承接口的实现第二步:在struts.xml文件中配置结果类第第三步:在action配置最终扩展:通过可配置的参数,实现图像大小Struts2中自定义器的使用细器概在在Webwork的中文文档的解释为— 器是动Action调用的对象。它提供了一种机制可以使开发actionaction谈到器,还要向大家提一个词——器链(InterceptorChain,在Struts2中称为器栈InterceptorStack)。器链就是将器按一定的顺序联结成一条链。在被的方法或字段时,拦截器链中的器就会按其之前定义的顺序被调用。过滤器是servlet规范中的一部分,任何javaweb工程都可以使用。 器它是只有进入struts2 的是jsp,html,css,image或者js是不会进行 器。比如:servletConfig,staticParam,params,modelDriven等等。我们通过实现接口方式获取ServletAPI以及封装请求参数,都是 在在Interceptor接口中publicinterfaceInterceptorextends{voidinit();voiddestroy();}voidinit():该方法在 器被创建后会立即被调用,它在 voiddestroy():该方法与init方法相对应,在 Stringintercept(ActionInvocationinvocationthrowsException:该方法是器的方法,用来添加真正执行工作的代码,实现具体的操作。它返回一个字符串作为逻辑视图,系统根据返回的字符串跳转到对应的视图资源。每一个动作请求Ac

温馨提示

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

评论

0/150

提交评论