【JavaEE之SpringMVC】SpringMVC杂记

和前一篇文章一样,这个SpringMVC一样是杂记,主要是给自己写的,或许你们看起来会觉得很乱,你可以评论问我哦,好了,接下来进入正题

SpringMVC

  1. Spring通过一套注解,让POJO类成为处理请求的控制器,无需实现任何接口
  2. Spring支持RESTFul风格的URL请求
  3. SpringMVC是通过DispathcarServlet这个核心处理类展开,它负责拦截请求,并将它分配给相应的处理器处理,总而言之,一句话,我帮你弄,你不要自己弄,我会先检查你传的数据是否正确
  4. SpringMVC优点:1.模块复用 2. 分工处理,提高开发效率 3. 一个模型可以有不同的表现形式,也能够为一个模型重新创建一个视图,而无需重写模型
  5. web.xml : 上下文配置位置,前端控制器,注册ContextLoaderListener
  6. application-Servlet.xml: 视图解析器,开启SpringMVC注解
  7. 在显示网页时图片没出来的原因:因为它会被导演拦截,没有任何处理器能处理它,图片是静态资源,我们希望 导演不要拦截静态资源
    解决方法:静态资源处理
  8. .JavaWeb提供了filter过滤器,SpringMVC提供了拦截器

SpringMVC的注解和一些特性:

  1. @Controller=@Component=@Repository 标注这个类是web控制器
  2. @RequestMapping—这个注解会将Http请求映射到MVC和REST控制器的处理方法上
  3. @RequestParam(,true为必须传入参数,defaultValue为这只默认值)将请求的参数注入
  4. 根据请求的媒体类型来产生对象,要用到@RequestMapping的 produces 参数结合@ResponseBody注解
    根据@RequestMapping的 consumes 参数结合@RequestBody注解用请求媒体类型来消费对象
  5. @CookieValue—将Cookie里面的某个值绑定到方法参数上
  6. @PathVariable–使用@PathVariable注解可以从URI模版中获取路径参数值
  7. SpringMVC框架会按照请求参数名和POJO属性名进行自动匹配
  8. ServletAPI主要是指控制器方法参数类型为Java Servlet API 中的类
    HTTPServletRequest,HTTPServletResponse,HttpSession
  9. 控制器方法返回值类型:
    ModeAndView–既包含视图信息,又包含模型数据信息
    Map以及Model:包含模型数据信息,model比map更好用----SpringMVC在调用方法之前会创建一个隐含的模型对象,作为模型数据 的存储容器,又称“隐含模型” ,如果处理方法的入参类型时map或model,MVC会将隐含的引用传给入参@ModelAttribute(,)
    String :逻辑视图名或者@ResponseBody注解标注作为响应内容返回
    void : 如果使用ServletResponse/HttpServletResponse处理响应
  10. SpringMvc常用特性
    1.上传文件
    参数: MultipartFile类
    用到的类:Base64类,multipartFile
    2.异常处理
    Spring提供了多种将异常转换成响应
    1.特定的Spring异常将会自动映射为指定的HTTP状态码
    2.异常上添加 @ResponseStatus 注解,从而将其映射为某一个HTTP状态码
    3.方法上添加 @ExceptioinHandler 注解,使其用来处理异常,但是该注解标注的方法只能处理同一个控制器中所有处理器方法的异常
    所以,我们在想有没有一种能够处理所有控制器中处理器方法所抛出的异常!!!
    当然有啦,控制器通知方法刚好解决该问题
    控制器通知(Controller Advice)是任意带有@ControllerAdvice注解的类,这个类可以包含一个或者多个如下类型的方法:
    a.@ExceptionHandler 注解标注的方法
    b.@InitBinder 注解标注的方法
    c.@ModelAndAttribute 注解标注的方法
    PS:@ControllerAdvice 最为实用的一个场景就是将所有@ExceptionHandler方法收集到一个类中,这样所有控制器的异常就能在一个地方进行一致的处理。
    3.静态资源处理
    为什么会需要静态资源处理呢?
    不知道你有没有遇到过自己写的web,图片显示不出来?这是因DispatcherServlet请求映射配置为/,Spring MVC将捕获Web容器中的所有请求,包括静态资源的请求,Spring MVC会把它当成普通的请求,因为找不到能处理它的处理器,故而出错
    处理静态资源Spring提供了两种方法:
    1. 采用默认Servlet
    2. 采用Spring的Resources,Spring自己处理
    4.拦截器
    SpringMVC中为我们提供了拦截器。当收到请求时 ,DispatcherServlet将请求交给处理器映射(HandlerMapping),让它找出对应请求的HandlerExecutionChain对象
    HandlerExecutionChain是负责处理请求并返回ModelAndView的处理执行链,请求在被Handler执行的前后链中装配的HandlerInterceptor会实施拦截操作。

我在github上面写了一些关于SpringMVC的样例,有兴趣可以参考:
https://github.com/enternal0/SpringMVC-case
https://github.com/enternal0/SpringMVC-case2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值