springmvc 的学习

1 什么是springMVC ,有什么用?

springmvc 作为web 层,面对的是和页面请求路径直接的配置。由于他的controller注解,也可以称web层为controller层。

mvc 模型, model 为数据模型,用于封装数据对象。

view 是展示数据,如jsp ,html

controller 是处理用户交互的部分,处理程序逻辑

如用户提交注册用户的表单,js要校验数据准确性,来到后台controller 也要进行校验,错误或者失败把错误页面给用户,成功把数据模型传递给页面模型,实现完成的业务需求

主要内容:

前端控制器(DispatcherServlet)  请求到处理器映射(HandlerMapping)  处理器适配器(HandlerAdapter)  视图解析器(ViewResolver)  处理器或页面控制器(Controller)  验证器( Validator)  命令对象(Command  请求参数绑定到的对象就叫命令对象)  表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。 

1.1和struts2 比较,

处理请求的机制都是一个核心控制器。 

但是springmvc 入口是servlet  ,struts2是filter.( 这就更好区分拦截器 和过滤器的区别了)

Spring MVC 是基于方法设计的,而 Struts2 是基于类,Struts2 每次执行都会创建一个动作类。所 以 Spring MVC 会稍微比 Struts2 快些

spring mvc 过滤器和filter 拦截器的区别

过滤器是可以所有url的请求 如 urlPatter = "/"

而spring拦截器基于方法的,只拦截请求的方法,如果是*.jsp 或者*.html 等页面或者静态资源时拦截不到的

2 spring mvc 的使用:

步骤:

1  maven  pom.xml 引入坐标

2 web.xml配置核心控制器 dispacherServlet ,拦截所有访问路径

3 springmvc.xml  配置 controller 的包,和视图解析器 ,注解驱动.完毕。

4 测试。

maven 引jar包坐标,

 <groupId>org.springframework</groupId> 

 <artifactId>spring-context</artifactId> 

<artifactId>spring-web</artifactId> 

<artifactId>spring-webmvc</artifactId> 

<artifactId>servlet-api</artifactId> 

  <artifactId>jsp-api</artifactId> 

1) web.xml

2) springmvc.xml 配置扫面的@controller注解所使用的类所在的包

把url 和扫描的包的url 比对 ,比对成功,视图解析器返回相应的视图结果

3 扫描位置编写类和方法

流程 及原理:

以上是对springmvc 初步的配置和使用:

3 请求参数 和编码过滤器 自定义类型转换器(string -date)

3.1请求参数和返回值对象参数 

基本类型参数:  包括基本类型和 String 类型

POJO 类型参数:   包括实体类,以及关联的实体类

数组和集合类型参数:   包括 List 结构和 Map 结构的集合(包括数组)  

如果是基本类型或者 String类型:  要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写)

如果是 POJO类型,或者它的关联对象:  要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型。

如果是集合类型,有两种方式: 

第一种:   要求集合类型的请求参数必须在 POJO 中。在表单中请求参数名称要和 POJO 中集合属性名称相同。
   给 List 集合中的元素赋值,使用下标。   给 Map 集合中的元素赋值,使用键值对。

 第二种:   接收的请求参数是 json 格式数据。需要借助一个注解实现

3.2请求参数乱码问题 

post 请求方式:

在 web.xml 中配置一个过滤器 :

get 请求方式:要改 tomcat 的 server.xml 配置文件,如下: 

3.3 自定义类型转换器 

3.4 另外 springmvc 对于servlet 的几个HttpServelt 域对象也是支持的。

4 对于spring mvc 的拦截器:

我们要想自定义拦截器, 要求必须实现:HandlerInterceptor 接口

1. 拦截器的概述 
1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。

2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链 中的拦截器会按着定义的顺序执行。

3. 拦截器和过滤器的功能比较类似,有区别

  1. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。

   2. 拦截器是SpringMVC框架独有的。

   3. 过滤器配置了/*,可以拦截任何资源。

   4. 拦截器只会对控制器中的方法进行拦截。

4. 拦截器也是AOP思想的一种实现方式

5. 想要自定义拦截器,需要实现HandlerInterceptor接口。

拦截器的前处理和后处理机制,怎么个顺序进入,怎么个顺序退出。

5 其他重要请求的注解

requestparam requestbody pathVarible

 获取请求头requestHeader  cookieValue SessionAttribute

6 响应对象及相关注解 

6.1返回页面有两种方式,默认字符串是 转发 。

6.2 如果要响应数据为JSON数据:使用注解@RequestBody

使用@RequestBody注解把json的字符串转换成JavaBean的对象( 不加也可以)
 使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应 

数据总是传不过去,改为:

data : JSON.stringify({"name":"hehe","password":"123","age":30}),

 注意:json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

>jackson-databind >jackson-core >jackson-annotations

7 图片上传

7.1 普通图片上传


 

7 自定义异常

系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端 控制器交由异常处理器进行异常处理.spring mvc 的异常处理器HandlerExceptionResolver 

自定义异常有4步骤:

1 定义异常类 2定义异常页面 3 定义一场处理器 4 配置一场处理器 5 测试异常 主动抛出异常

发布了28 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/java_utf8/article/details/103965511
今日推荐