Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 基础

  • JVM

  • Spring

    • SpringMVC
      • 1 什么是SpringMVC?
      • 2 SpringMVC的执行流程
      • 3 SpringMVC怎么样设定重定向和转发的?
      • 4 SpringMVC常用的注解
      • 5 SpingMVC中控制器的注解
      • 6 POST及GET请求中文乱码问题
      • 7 SpringMVC控制器是不是单例?有什么问题?
      • 8 拦截请求中,怎么拦截get方式提交的方法?
      • 9 怎样在方法里面得到Request,或者Session?
    • Spring
    • Mybatis
  • Redis

  • 消息中间件

  • 持久化

  • 算法

  • 网络

  • 系统架构

  • 知识整理
  • Spring
luoxiaofeng
2022-05-07
目录

SpringMVC

# 1 什么是SpringMVC?

SpringMVC是一个轻量级的web框架。

SpringMVC把web应用分成几个清晰的模块,分别是model、view、controller。

SpringMVC可以使用各种视图技术,不仅仅局限于jsp。

# 2 SpringMVC的执行流程

1.客户端发送请求到前端控制器DispatcheServlet。

2.DispatcheServlet通过处理器映射器HandlerMapping获取处理器Handler。(处理器映射器返回处理器执行链,包含处理器Handler和拦截器HandlerInterceptor)。

3.DispatcheServlet通过处理器适配器HandlerAdapter执行Handler。(Handler也就是controller)

4.Handler执行完后返回ModelAndView给到DispatcheServlet。

5.DispatcheServlet将ModelAndView传给ViewResolver(视图解析器)做解析。

6.ViewResolver(视图解析器)解析完返回View视图对象给到DispatcherServlet。

7.DispatcherServlet把Model数据填充到View试图对象中。

8.响应用户。

# 3 SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"

(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"

# 4 SpringMVC常用的注解

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

# 5 SpingMVC中控制器的注解

一般用@Controller注解,也可以使用@RestController。

@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。

# 6 POST及GET请求中文乱码问题

(1)解决post请求乱码问题:

在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8。

(2)get请求中文参数出现乱码解决方法有两个:

① 修改tomcat配置文件添加编码与工程编码一致,如下:

② 另外一种方法对参数进行重新编码:

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。

# 7 SpringMVC控制器是不是单例?有什么问题?

1.是单例模式。

2.在多线程访问的时候有线程安全问题。

3.解决方案是在控制器里面不能写可变状态量,如果需要这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。

# 8 拦截请求中,怎么拦截get方式提交的方法?

可以在@RequestMapping注解里面加上method=RequestMethod.GET。

# 9 怎样在方法里面得到Request,或者Session?

直接在方法的形参中声明request,SpringMvc就自动把request对象传入。

#Spring
上次更新: 2022/06/02, 11:20:10
生产配置示例
Spring

← 生产配置示例 Spring→

最近更新
01
AI是如何学习的
06-05
02
chatGpt提示原则
06-05
03
提示词工程实践指南
06-05
更多文章>
| Copyright © 2022-2025 Kevin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式