11-30唐兆文

Spring2

Servlet 原始 API 可以作为控制器中方法的参数,我们可以使用request/response进行重定向以及请求转发操作

ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。

forward 转发controller 方法在提供了 String 类型的返回值之后,默认就是请求转发

如果用了forward:则路径必须写成实际视图 url,不能写逻辑视图。

Redirect 重定向contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:

ResponseBody 响应 json 数据

该注解用于将 Controller 的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml 等,通过 Response 响应给客户端

RestControllerRestController相当于将ResponseBody注解在一个注解有Controller的类上。这时,类中所有返回的字符串都会解析为一个串返回,而不经过视图解析器,也就是说返回的字符串不再是一个逻辑视图了。

系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理

Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器(handle)进行预处理和后处理。

拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

过滤器和拦截器的区别:

过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp,html,css,image 或者 js 是不会进行拦截的。它也是 AOP 思想的具体应用。我们要想自定义拦截器,要求必须实现:HandlerInterceptor接口

拦截器是基于java的反射机制的,而过滤器是基于函数回调。2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。6. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1