广州尚学堂7月11号部分笔记

1. SpringMVC概述

1.1. 什么是Spring MVC

SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC框架.

MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化、等等),而且使用简单,与Spring无缝集成。 支持 RESTful风格的 URL 请求 。

采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。


1.2. SpringMVC的作用

MVC模式:(Model-View-Controller):为了解决页面代码和后台代码的分离.

2. SpringMVC底层实现

在没有使用SpringMVC之前我们都是使用的Servlet在做Web开发。但是使用Servlet开发在接受请求数据参数,数据共享,页面跳转等操作相对比较复杂。


SpringMVC底层就是的Servlet,SpringMVC就是对Servlet进行更深层次的封装


2.1. 回顾MVC模式

回顾什么是mvc模式

  模型model(javabean),  视图view(jsp/img)  控制器Controller(Actionrvlet)  C存在的目的.就是为了保证M和V的一致性

  当M发生改变时,C可以把M中的新内容更新到V中.

 

2.1.1. 原始MVC 模式

MVC模式最早开始是在CS 架构上面 20世纪70+年代

下面为原始的mvc模式.

目前web应用中,99%的项目都会使用mvc模式开发.

2.1.2. WEB开发的MVC

WEB开发从20世纪90+年代开始,也是使用MVC模式。在最原始的MVC上有一些改进

优秀的框架改变了这种模式,将model更广泛的使用,这样会比原始的mvc好多了.

像现在一些优秀的mvc的框架,如Struts2,springMVC

在客户端提交也使用了模型来请求参数

spring MVC 也实现的相关的功能


1. SpringMVC的全注解开发


1.1. Spring中IOC 注解


上面是注解

下面是说明

@Component

通用组件注解(一般配置其他非三层相关的类)


@Controller

表现层(控制层)


@Service

业务逻辑层(服务Service)


@Resposotory

数据持久层(DAO)


1. SpringMVC执行流程和原理

SpringMVC流程:

01、用户发送出请求到前端控制器DispatcherServlet。

02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。

03、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。

04、DispatcherServlet调用HandlerAdapter(处理器适配器)。

05、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。

06、Controller执行完成返回ModelAndView对象。

07、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

08、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。

09、ViewReslover解析后返回具体View(视图)。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。


两种限制

SpringMVC支持对请求的限制.如果不满足限制的条件,就不让访问执行方法.

这样做,大大提高了执行方法的安全性.

主要的限制有两种:(method)方法限制,参数限制

1.2.1. 方法限制

就是设置请求的method类型.如果发送过来的请求与方法设置的method不一样,就不能访问执行方法.

请求method : GET , POST

 

   

 

/**

* 接收的请求,必须是POST

* @return

*/

@RequestMapping(value="login",method=RequestMethod.POST)

public String login(){

System.out.println("-登录-");

return "/login.jsp";

}

前台发送的是GET请求,而方法限制是POST请求,所以请求无法执行方法

方法限制可以配置多个参数

@RequestMapping(value="login",method={RequestMethod.GET,RequestMethod.POST})

public String login(){

System.out.println("-登录-");

return "/login.jsp";

}

1.2.2. 参数限制

1.就是请求里面必须包括哪些参数,或不包括哪些哪些.

2.参数包括哪些值,不包括哪些值

限制参数格式:

1.参数必须包括:params={"username","password"}

2.参数不能包括:params={"!userid"}

3参数值必须是指定的值:params={"username=zhangsan"})

4.参数值必须不是指定的值:params={"userid!=123"})

请求:没有后台方法指定的参数

登录页面

账号:

密码:

后台代码

/**

* 需求:登录时必须包括用户名,密码

* @return

*/

@RequestMapping(value="login2",params={"username","password"})

public String login2(){

System.out.println("-登录-");

return "/login.jsp";

}

如果前台请求没有指定后台要求的参数,会报错.

你可能感兴趣的:(广州尚学堂7月11号部分笔记)