-
@RequestParam MultipartFile file 绑定form表单上传的文件 。注意文件的enctype为“multipart/form-data”,以及提交方式为post。查看全部
-
springmvc上传文件 ①注册使用到的类:CommonsMultipartReslover类,这个类需要在spring的配置文件中进行配置,并设置一些必要的属性,比如是否延迟加载,上传文件的大小等等。 ②注意form表单中,对应的表单的name值应该和controller中参数Multipart file的名称一致,另外注意表单提交方式为post,MIME编码为multipart/form-data ③在controller中通过传入的参数类型为Multipart file并且使用@Requestparam注解,完成参数的绑定,这样表单中的file就被复制到参数对象中。然后通过Multipart的一些方法,获取文件的名字信息并得到文件流对象,然后使用FileUtils类的copyInputStreamToFile(文件流,文件)完成文件的上传。查看全部
-
疑惑:本例中,在方法参数Course上,没有使用参数注解的时候,通过给Course对象设置一个id为123,然后跳转到了后缀为123的页面,之后,介绍@ModelAttribute这个注解时候,把这个注解限定于Course参数,但是效果一样,那么这个例子说明了什么? @ModelAttribute注释一个方法的参数 ①从model中获取 ②从Form表单或URL参数中获取(实际上,不做此注释也能拿到user对象) 参考:http://wangwengcn.iteye.com/blog/1677024查看全部
-
想要使用Restful风格的URL,那么需要使用@PathVariable注解,将url请求中的模板变量绑定到Controller方法的方法参数上。这样就支持了Restful架构风格的URL。查看全部
-
springMVC的上下文层级关系: 一种是与SpringMVC核心相关的,也就是Dispatcherservlet上下文,作用只是负责与SpringMVC业务相关的功能,比如HandlerMapping、Controller、ViewResolver等等,另外一种就是供所有组件调用的公共的应用程序上下文,这一部分一般是由Spring的ContextloadListener加载管理的,可以加载多个,比如controller层、service层、Dao层等等,以便于业务扩展时,可以复用ContextloadListener加载管理的组件。 这两个配置文件都需要在web.xml中进行配置。 在springmvc配置文件中,<context:annotation-config></context:annotation>意思是激活spring基于注解配置的依赖注入和控制反转,可以使用注解注入的方式来获取service层。<context:conponment-scan>组件扫描 <mvc:annnotation-driven></mvc:annnotation>开启基于springMVC的注解,也就是可以使用注解参数绑定,使用注解映射请求等等 <mvc:resources >配置静态资源 最后一项,配置视图解析器,一般是固定配置格式,到网上搜索即可,使用的类是InternalResourceViewResolver类。 ----------------------------- 在spring的ApplicationConfig中,目前只是开启了基于注解的IOC。查看全部
-
思考: ①请求如何给前端控制器?在web.xml中进行部署配置 ②前端控制器如何根据请求信息选择controller进行功能处理?可以在Controller上使用注解,那么HandlerMapping就很容易的找到我们所需的controller了 ③controller如何调用业务对象?利用springIoc依赖注入功能 ④controller如何返回模型数据?使用ModelAndView返回 ⑤Dispatcherservlet如何根据controller返回的逻辑视图名选择具体的视图渲染?使用ViewReslover进行解析 ⑥不同的视图技术如何使用相应的模型数据?因为Model是一个Map,很容易支持其他视图技术 ⑦查看全部
-
ViewResolver(视图解析器) 一般是通过配置文件,把逻辑视图名解析为具体的View,View会根据传递过来的Model数据进行渲染,此处的Model实际上是一个Map数据结构,渲染完毕之后,返回给前端控制器,前端控制器响应给客户,到此整个请求过程完成。查看全部
-
ModelAndView的具体表现: √ModelAndView √Map √Model查看全部
-
通过前端控制器,HandlerMapping将会把请求映射为HandlerExecutionChain对象,那么HandlerMapping的主要任务就是根据url填充HandlerExecutionChain对象,HandlerExecutionChain执行完毕之后,这个对象中就包含了一个handler处理器也就是我们自己编写的controller实现、视图解析器、以及多个HandlerInterceptor(处理器拦截器)。 (再理解)在HandlerMapping工作完毕之后,会给Dispatcherservlet返回一个HandlerAdapter,这个HandlerAdapter中就有我们需要的controller的具体实现,而这个controller是被HandlerInterceptor(处理器拦截器)包裹着,他们共同构成了一个HandlerExecutionChain(可执行的链条)。 当前端控制器拿到Handler之后,执行controller的整个流程是 preHandler----->Controller method---->postHandler---->afterCompletion查看全部
-
HandlerInterceptor处理器拦截器,是一个接口,内部有三个接口方式,分别是preHandler(); postHandler(); afterHandler(); 内部参数处理提供原生的HttpServlet的Response和Requset作为参数之外,都有Handler对象,区别在于第四个参数: preHandler();虽然没有第四个参数,但是却有返回值,它是预处理回调方法,当返回为true时,流程将向下继续执行,否则流程中断,此时需要通过response对象来产生响应。 postHandler();后处理回调方法,实现处理器的后处理,但是是在渲染视图之前,此时可以通过ModelAndView对象对模型数据进行处理或者对视图进行处理加工,ModelAndView对象也可能为空。 afterCompletion();整个请求处理完毕之后回调方法,也就是在视图渲染完毕之后时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源的清理,类似于try-catch-中的finally。查看全部
-
springmvc能帮我们做什么? √能帮我们设计出非常简单的web层 √天生与spring框架集成(Ioc、Aop) √提供强大的约定大于配置的契约式编程支持 √能简单的进行web层的单元测试 √支持灵活的url到页面控制器映射 √容易与其他的视图集成,因为模型数据不是放在一个特定的api中,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用) √灵活的数据验证、格式化以及数据绑定机制,能使用任何对象进行数据绑定 √支持灵活的本地化、主题等解析 √更加简单的异常处理 √对静态资源的支持 √只是Restful风格查看全部
-
前端控制器:负责为表现层提供统一的访问点,从而避免出现重复的控制逻辑,由前端控制器统一回调相应的功能方法;并且可以为为多个请求提供公用的逻辑,如准备上下文等,将选择具体视图和具体的功能分离。<br> 应用控制器:是一种策略模式的实现,就是用来管理由前端控制器分离出的具体视图和业务功能,可以很容易的切换视图或者页面控制器,互相不产生影响。 页面控制器、动作处理器:收集参数、封装参数到模型,转调业务对象处理模型,返回逻辑视图名交给前端控制器,由前端控制器委托给应用控制器选择具体的视图来展示,是一种命令模式的实现。 上下文:将相关数据放置于上下文。 ------------------------------------ 策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。 GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。 Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。 GoF《设计模式》中说道:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。查看全部
-
一般web服务器是不能主动通知web客户端更新能容,但是现在有些技术如服务器推(Comet)还有现在的html5websocket可以实现web服务器主动通知web客户端。查看全部
-
1111111111111111查看全部
-
1112121查看全部
举报
0/150
提交
取消