我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器。在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多。
三层架构中,每一层各司其职,接下来我们就说说每层都负责哪些方面:
表现层
也就是我们常说的web层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求web层,web需要接收http请求,完成http响应。
业务层
也就是我们常说的service层。它负责业务逻辑处理,和我们开发项目的需求息息相关。
数据访问层(DAL,dao)
也就是我们是常说的 dao层。负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗的讲,持久层就是和数据库交互,对数据库表进行增、删、改、查的。
MVC全名是Model view Controller, 是模型(model) — 视图(view) — 控制器(controller) 的缩写,是一种用于设计创建Web应用程序表现层的模式。MVC中每个部分各司其职:
模型(model)
视图(view)
控制器(controller)
例如:
综上所述,我们可以用一幅图来描述MVC三层架构:

SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring FrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行 WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2 等。
SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的MVC框架。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。

(1)入门案例
SpringMVCDispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml 1
SpringMVCDispatcherServlet /
欢迎你。SpringMVC
@Controller
public class HelloController {@RequestMapping("/hello")public String sayHello(){System.out.println("hello,springmvc");return "success";}
}

(2)入门程序处理流程分析
(1)疑问?
(2)分析解决?
DispatcherServlet(核心控制器),在核心控制器内部提供了一个属性contextConfigLocation,它可以用来加载Spring配置文件load-on-startup 来设置servlet的加载时机(在访问时加载,还是在tomcat容器初始化时加载),因此,当servlet加载时,通过配置contextConfigLocation则Spring容器也会加载(配置实例bean组件也会初始化创建)
(3)配置
(1)Springmvc的核心执行流程

(2)具体步骤


(1)接口
(2)@RequestMapping
作用:
出现位置:

属性:
(1)基本参数类型绑定

(2)POJO类型参数绑定
实体属性名.关联实体属性名
(3)集合类型参数绑定
(1)在 web.xml 里面设置编码过滤器
CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true
CharacterEncodingFilter /*
(2)在 Springmvc.xml 里面设置

(1)场景

(2)自定义类型转换器

public class StringToDateConverter implements Converter {@Overridepublic Date convert(String source) {DateFormat format = null;try {if(StringUtils.isEmpty(source)) {throw new NullPointerException("请输入要转换的日期");}format = new SimpleDateFormat("yyyy-MM-dd");Date date = format.parse(source);return date;} catch (Exception e) {throw new RuntimeException("输入日期有误");}}
}
(3)@DateTimeFormat注解


SpringMVC还支持使用原始ServletAPI对象作为控制器方法的参数。支持原始ServletAPI对象有:
我们可以把上述对象,直接写在控制的方法参数中使用。


(1)@RequestParam
(2)@RequestBody
(3)@PathVariable

(4)@RequestHeader
(5)@CookieValue
(6)@ModelAttribute
(7)@SessionAttribute