首页 > 技术文章 > springmvc笔记

beanjk 2019-08-01 11:41 原文

第1章 SpringMVC 的基本概念

1.1 三层架构

表现层:

也就是我们常说的web层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求web 层,web 需要接收 http 请求,完成 http 响应。

表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。

表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。

表现层的设计一般都使用 MVC 模型。(MVC 是表现层的设计模型,和其他层没有关系)

业务层:

也就是我们常说的 service 层。它负责业务逻辑处理,业务层在业务处理时可能会依赖持久层。

持久层:

也就是我们是常说的 dao 层。持久层就是和数据库交互,对数据库表进行曾删改查的。

1.2 SpringMVC 概述

1.2.1 SpringMVC框架概述

SpringMVC框架是三层开发模式中web层的框架,其中包含了MVC设计模式中的View和Controller两个模块。View其实就是页面,实现技术现在比较热门的有Jsp,Ios,安卓,php,h5。Controller就是一个控制器,负责分发View层发送的指令。

1.2.2 SpringMVC和Struts2框架优劣势分析

共同点:

(1)它们都是表现层框架,都是基于 MVC 模型编写的。

(2)它们的底层都离不开原始 ServletAPI。

(3)它们处理请求的机制都是一个核心控制器

区别:

(1)Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter

(2)SpringMVC是方法级别的,表示一个方法就是一个独立的控制器,不能有私有属性,用单例就行了。而Struts2是类级别的,一个类才是一个控制器,类中可以有私有属性,该对象必须是多例的。

(3)Struts2里面解析页面参数等用的OGNL表达式,开发简单,效率会稍差一点。当然Struts2也可以选择JSTL。SpringMVC用的JSTL,开发稍微复杂,但是效率高。

第2章 SpringMVC 的入门

2.1案例的执行过程

 

2.2 springMVC中的组件

2.2.1 前端控制器

其实就是刚才在web.xml中配置的核心servlet。

2.2.2 Springmvc三大组件

处理器映射器

处理器适配器

视图解析器

其中处理器映射器和处理器适配器只用配置一个开启springmvc注解支持即可。

 

使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器) 和RequestMappingHandlerAdapter( 处理适配器)

视图解析器就是下面的配置

 

处理器

其实就是我们controller中的方法

视图

其实就是页面,可以是jsp,安卓,ios,php,h5等技术

2.3 RequestMapping 注解

(1)作用:用于建立请求 URL 和处理请求方法之间的对应关系

(2)出现位置:

【1】类上:请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理:知道是哪个类的那个方法。

【2】方法上:请求 URL 的第二级访问目录。

value:用于指定请求的 URL。它和 path 属性的作用是一样的。

method:用于指定请求的方式。

params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和

配置的一模一样。

例如:

params = {"accountName"},表示请求参数必须有 accountName

params = {"moeny!100"},表示请求参数中 money 不能是 100。

headers:用于指定限制请求消息头的条件。

注意:

以上四个属性只要出现 2 个或以上时,他们的关系是与的关系

2.4处理器如何接收参数(参数绑定)

2.4.1 接收简单类型和String类型的参数

注意:传值的name必须和处理器中的参数名保持一致

<a href="${pageContext.request.contextPath }/test">初始化案例HelloMvC</a>

路径:http://localhost:8080/test?age=35&name=dfs

页面

 

后台

 

2.4.2接收对象类型的参数

编写一个User对象

页面

 

后台

 

2.5请求参数乱码问题

post 请求方式:

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

tomacat 对 GET 和 POST 请求处理方式是不同的,GET 请求的编码问题,要改 tomcat 的 server.xml

配置文件

第三章 常用注解

(1)RequestParam的使用

作用:把请求中指定名称的参数给控制器中的形参赋值。

属性:

value:请求参数中的名称。

required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

页面

 

后台

 

说明:如果配置了@RequestParam,默认情况下必须给该属性赋值,否则报错。当然可以指定required=false时,不赋值也不错。

(2)RequestBody的使用

作用:

用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。

get 请求方式不适用。

属性:

required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值

为 false,get 请求得到是 null。

页面

 

后台

 

说明:get方式不能使用此注解,post得到请求体中所有的参数。

 

推荐阅读