SpringMVC01

1、MVC(Model、View、Controller)

即:模型、视图、控制器的简写,是一种软件设计规范

模型:dao、service,数据模型,提供要展示的数据,包含数据和行为

视图:jsp,负责进行模型的展示

控制器:servelet,接收用户请求、返回模型数据给视图,相当于一个调度员

SpringMVC

  • 轻量简单高效
  • 基于请求响应的MVC框架
  • 约定由于配置
  • 功能强大:RESTful、数据验证、格式化、本地化、主题
  • 简洁灵活

Spring 中的一部分,实现MVC的轻量级Web框架

Spring 的web框架围绕DispatcherServlet 设计,他的作用是将请求分发到不同的处理器

2、SpringMVC 的执行原理

SpringMVC01

SpringMVC01

SpringMVC01

  1. 用户请求找到DispatchServlet, DispatchServlet中绑定了一个SpringMVC 的配置文件,根据配置就能够找到 这个SpringMVC 的配置文件。
  2. SpringMVC 配置文件中的处理器映射器,能够找到 用户 url 中的控制器,并将这个控制器返回出去。
  3. 处理器适配器就找到映射器返回的Controller来处理具体的业务,最终返回一个ModelAndView ,并由HandlerAdapter将视图逻辑名或模型返回给DispatcherServlet
  4. 最后视图解析器根据处理器适配器返回的ModelAndView,视图解析器会将前缀、后缀以及用户请求的页面名称拼接起来,调用具体的视图最终呈现给用户

3、Controller配置

实现Controller接口

  1. 添加web 框架支持
  2. web.xml配置文件
  3. springmvc-config.xml 配置文件
  4. controller
  5. 视图层
  • 缺点:一个控制器中只有一个方法,如果要多个方法则需要定义多个Controller;定义的方式比较麻烦;

通过注解开发

  1. web.xml 配置文件
    1. 注册DispathcerServlet
    2. 关联 springmvc 配置文件
    3. 启动级别
    4. 拦截
  2. SpringMVC-config.xml 配置文件
    1. 让IOC 的注解生效
    2. 静态资源过滤
    3. MVC的注解驱动
    4. 配置视图解析器
  3. controller
    1. 标识controller
    2. 标识访问路径 @RequestMapping
    3. 定义一个方法,返回值为标识层页面,封装数据用Model
  4. 创建视图层

视图是被复用的,而控制器与视图之间是弱偶合关系。

注解方式是平时使用的最多的方式!

4、RestFul 风格

  • Restful就是一个资源定位及资源操作的风格,只是一种风格。
  • 基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。更快速、更安全。
  • 获得参数更加方便,框架会自动进行类型转换。

**传统方式操作资源 :**通过不同的参数来实现不同的效果!方法单一,post 和 get

**使用RESTful操作资源 :**可以通过不同的请求方式来实现不同的效果!但是功能可以不同!

@PathVariable :路径变量,让方法参数的值对应绑定到URL模板变量上。

@RequestMapping( value=“URL” method=RequestMethod.XXX ),value/path 来定义路径,method来定义请求方式

组合注解:

就分别对应给method属性设置这些请求方式

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

组合注解的作用:

@RequestMapping(value = “url” method =RequestMethod.GET) == @GetMapping( “url” )

5、转发和重定向

我们通常会使用视图解析器来实现页面的转发和重定向

重定向地址栏会变化

无需视图解析器

@Controller
public class ResultSpringMVC {    
    @RequestMapping("/rsm/t1")    
    public String test1(){        
    //转发        
    return "/index.jsp";    
    }     
    @RequestMapping("/rsm/t2")    
     public String test2(){        
     //转发二        
     return "forward:/index.jsp";    
     }     
     @RequestMapping("/rsm/t3")    
     public String test3(){        
     //重定向        
     return "redirect:/index.jsp";    
     } 
}

使用视图解析器

//    2. 使用视图解析器,return的时候默认是转发操作
//       重定向直接加上  redirect:/XXX  就可以
    @RequestMapping(value="/test2")
    public String test2(){
        return "test2";
    }
    @RequestMapping(value="/test")
    public String test(){
        // 重定向
        return "redirect:/test2";
    }

6、参数处理

  1. 单一值:请求中的参数可以直接被controller 接收
  2. 对象 :将Controller 中的方法参数设置为 实体类,url中的域名称设置为实体类的属性即可被接收

如果域名称和方法中的参数名不一致则可以使用 @RequestParam(“xxxx”) xxx表示提交域传入的域名称

每个从前端接收到的参数都要使用这个注解(清楚明了,更好的配置)

7、乱码问题

我们可以使用过滤器来解决这个问题,注意 /* 才会过滤jsp文件

  1. 自定义过滤器
  2. SpringMVC提供的过滤器
  3. 大神的过滤器

8、JSON

  • JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。
  • 采用完全独立于编程语言的文本格式来存储和表示数据。
  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
  • JSON 是 JavaScript 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。任何JavaScript 支持的类型都可以通过 JSON 来表示

    语法要求

    • 对象表示为键值对,数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组
  • JSON 和 JavaScript 对象转换

    • JSON字符串 =》 JavaScript 对象, JSON.parse()
    • JavaScript 对象 =》 JSON字符串,JSON.stringify()

Jackson

  1. @RestContrller 作用于一个Controller ,让这个Controller中的所有方法都返回json 字符串
  2. @ResponseBody 作用于一个方法,返回json字符串。
  3. 对java 对象的转换
    1. 对象
    2. 列表
    3. Date
  4. JsonUtil 类

乱码问题

  1. @RequestMapping 的 produces 属性

    //produces:指定响应体返回类型和编码
    @RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
    
  2. Spring 统一配置

    <mvc:annotation-driven>
       <mvc:message-converters register-defaults="true">
           <bean class="org.springframework.http.converter.StringHttpMessageConverter">
               <constructor-arg value="UTF-8"/>
           </bean>
           <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
               <property name="objectMapper">
                   <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                       <property name="failOnEmptyBeans" value="false"/>
                   </bean>
               </property>
           </bean>
       </mvc:message-converters>
    </mvc:annotation-driven>
    

Fastjson

上一篇:008.网络基础


下一篇:2021-10-31前后端查询标识的不同