SpringMVC的介绍以及使用

6.1. SpringMvc介绍

  1. MVC 介绍 : 将软件按照模型-视图-控制器划分
    • M : Model , 模型层,指的是JavaBean,用来处理数据,一种是实体类bean一种是业务处理bean-->Service或者是Dao对象
    • V : View , 视图层,指工程中的 html 或 jsp 等页面,作用是与用户进行交互,展示数据
    • C : Controller,控制层,指工程中的 servlet,作用是接收请求和响应浏览器
    • MVC的工作流程 : 用户在视图层发送请求到服务器,服务器中的请求被Controller接收,Controller调用相应的Model层处理请求,处理完后将结果返回给Controller,再根据请求处理的结果找到相应的View视图,渲染数据最终给了浏览器
  1. SpringMVC介绍 : 是MVC的一个后续产品,是他的一个子项目,具有以下特点 :
    • Spring原生家族产品,能够和IOC容器等直接衔接
    • 基于原生的Servlet,通过了功能强大的 前端控制器 DispatcherServlet对请求和响应进行统一处理
    • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
    • 代码简洁,性能好
1.1 DispatcherServlet
统一收口,接收请求,响应结果,相当于转发器,中央处理器。
有了 DispatcherServlet 减少了其它组件之间的耦合度。

1.2 HandlerMapping-处理器映射器
根据请求的url查找Handler,既负责完成客户请求到 Controller 映射。
SpringMVC提供了不同的映射器实现不同的映射方式,
例如:配置文件方式、实现接口方式、注解方式等。

1.3 HandlerAdapter-处理器适配器
按照特定规则去执行Handler。

1.4 Handler-处理器 也叫 Controller
Handler 是继 DispatcherServlet 前端控制器的后端控制器,
在 DispatcherServlet 的控制下,Handler对具体的用户请求进行处理。

1.5 视图解析器ViewResolver
进行视图解析,根据逻辑视图名解析成真正的视图(view)

ViewResolver负责将处理结果生成View视图,
ViewResolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址,
再生成View视图对象,最后对View进行渲染将处理结果通过页面的展示给用户。
SpringMVC框架提供了很多View视图类型,
包括:JSTLView、freemarkerView、pdfView等等.

1.6 视图View
View是一个接口,实现类支持不同的View类型(jsp、freemarker…),
一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,
需要由程序员根据业务需求开发具体的页面。

6.2. SpringMvc使用

  1. SpringMvc注解(之前的Spring的也算) : @RequestMapping, @RequestParam, @RequestBody, @ResponseBody, @RestController
    • @RequestMapping 注解用于将特定 HTTP 请求方法 映射 到将处理相应请求控制器中的特定类或方法
      • 派生类有 : @GetMapping , @PostMapping , @PutMapping , @DeleteMapping
    • @Controller --> 将该类交给SpringMVC容器管理
    • @RequestBody配合 @PostMapping 或者 @PutMapping
    • @RestController相当于@Controller + @ResponseBody
  1. SpringMvc获取参数有两种方式
    • 可以通过ServletAPI获取 : 也就是说此时将 HttpServletRequest 类作为控制器方法的形参,该类型的参数表示封装了当前请求需要的对象getParameter方法
public String test3(HttpServletRequest request){
    String username = request.getParameter("username");
    String password = request.getParameter("password")
}
    • 通过控制器方法的形参获取请求参数 : 在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet 中就会将请求参数赋值给相应的形参。参数多的话用注解@RequestParam
@RequestMapping("/test4")
public String test4(String name, Integer age){}
    • 通过实体类获取参数 : 可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值。也就是专门建造一个有需要的参数的实体类
    • 解决乱码问题: 使用 SpringMVC 提供的编码过滤器 CharacterEncodingFilter,只需要在 web.xml 中进行注册。
  1. SpringMvc 域对象共享数据 ,常用的有以下几种 :
    • 使用ServletAPI向request域对象共享数据 : HttpServletRequest request -->request.setAttribute("name", "吕布")
    • 使用ModelAndView向request域对象共享对象 :
@RequestMapping("/test8")
public ModelAndView test8(){
    // ModelAndView 可以设置要往request域中放的数据和设置视图
    ModelAndView mav = new ModelAndView();
    mav.addObject("age", 20);
    mav.setViewName("/abc.jsp");
    return mav;
}
    • 使用Model向request域对象共享数据 : Model mode --> model.addAttribute("sex", "男");
    • 使用session域对象共享数据 : HttpSession session --> session.setAttribute("hobby", "抽烟,喝酒,烫头");
    • 使用application域对象共享数据 :
public String test13(HttpSession session){
    ServletContext application = session.getServletContext();
    application.setAttribute("desc", "啦啦啦");
    return "/abc.jsp";
}
  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring MVC中,参数映射是指将请求中的参数值映射到方法的参数上。根据引用中的逻辑,Spring MVC使用MethodArgumentsResolver来解析参数。在引用中的示例代码中,可以看到使用了@RequestParam注解来映射请求参数值到方法参数上。@RequestParam注解支持一些属性,例如value用于指定请求参数的名称,required用于指定参数是否必需,defaultValue用于指定参数的默认值。另外,根据引用中的描述,Spring MVC还提供了HandlerMethodArgumentResolver接口及其实现类,例如RequestResponseBodyMethodProcessor,用于解析方法参数和返回值。RequestMapping注解可以用来指定请求路径与方法的映射关系。综上所述,Spring MVC提供了多种方式来进行参数映射,开发者可以根据具体情况选择合适的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [全面解析SpringMVC参数映射原理](https://blog.csdn.net/luxinghong199106/article/details/98075810)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [(2)-SpringMVC参数映射、乱码处理](https://blog.csdn.net/qq_41490938/article/details/106864691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值