Spring MVC

SpringMVC他是spring框架的一个模型

SpringMVC是一个基于mvc设计模式的web框架

 

Springmvc的工作流程:

第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler
可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析 根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染 视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果

组件:

1.前端控制器(DispatcherServlet),(不需要开发,需要配置)

     作用,接受用户请求,就类似cpu

    使用前端控制器有点:减少其他组件的耦合度

2.处理器映射器HandlerMapping(不需要开发,需要配置)

    作用,根据请求的url找相应的hander

3.处理器适配器,(不需要开发,需要配置)

    作用,按照规则去调用执行处理器(hander)

4.hander处理器 (需要开发,需要配置)

     作用:处理返回modeAndView

5.视图解析器(不需要开发,需要配置)

    作用:进行视图解析,解析成真正的视图

6.视图:(需要开发,jsp)

View是一个接口,支持不同的view类型(jsp,pdf。。。)

    作用: 

总结

Springmvc前端控制器,处理器映射器,处理器是适配器,视图解析器

前端控制器:配置一个DispatcherServlet,在servlet中需要加载springmvc的配置文件

<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:springmvc.xml</param-value>
  </init-param>

处理器映射器:

1)非注解处理器映射器(理解)

2)注解处理器映射器(掌握)

     对标记的@Controller类中标识有@RequestMapping注解的方法进行映射,需要在@RequestMapping中定义url

处理器是适配器;

1)非注解的处理器适配器(理解)

2)注解处理器适配器(掌握)

注意:注解处理器映射器必须和注解处理器适配器配合使用

<mvc:annotation-driven></mvc:annotation-driven>可以替代

<!-- 注意:注解处理映射器和注解处理适配器必须配对使用 -->
	<!-- 处理器映射器 -->
	<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> -->
	<!-- 处理器适配器 -->
	<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> -->

视图解析器:

     在视图解析器中可以配置前缀和后缀(我在程序中不需要指定前缀和后缀了)

<!-- 视图解析 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

数据绑定

直接controiiler方法形参上定义下边类型的对象,就可以使用这些对象,早参数绑定过程中,如过遇到下边类型直接进行绑定。

 

 

7、 JSON 类型 

JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/ 值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
例:{"name":"Json"}
在 JS 语言中,一切都是对象。

Springmvc和json数据交换的两种方式

1、请求json、输出json,要求前端页面必须把数据转成json串,不太方便

2、请求key/value,输出是json串,比较方便

 

拦截器

拦截器1放行,拦截器2不放行:拦截器2的preHander才会执行;

拦截器2的preHander不放行,拦截器2的postHander和afterCompletion不会执行

只要一个拦截器不放行,postHander就不执行

拦截器1不放行,拦截器2放行:postHander和afterComletion不会执行,拦截器2不会执行

 

我要做一个登陆验证,应放在拦截器链的第一个位置,

我要做一个权限认证,应放在登陆认证拦截器之后,因为我登陆通过后才能做权限认证

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值