1 springmvc的映射器和适配器

1.1springmvc的映射器

根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来

1.2springmvc的适配器

对映射器查找到的controller中的方法进行调用。

第一种:Controller适配

第二种:HttpRequestHandler适配

第三种:注解适配

不同的处理器,对应不同的适配器,但是所有适配器最终都返回ModelAndView对象,springmvc通过对ModelAndView对象进行解析,获得需要响应到客户端的数据和试图

1.3springmvc的默认配置

默认的映射器和默认的适配器

1 org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
2 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
3 org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
4 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
5 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 

如果自己在springmvc.xml进行特殊的配置,会覆盖掉系统的默认配置

1.4springmvc的执行过程

第一步:客户端通过url发送请求

第二步:核心控制器DispatcherServlet接收到请求

第三步:通过系统的映射器找到对应的handler(处理器),并返回给核心控制器

第四步:通过核心控制器在找到handler(处理器)对应的适配器,

第五步:由找到的适配器,调用对应的handler(处理器),并将结果返回给适配器

第六步:适配器将ModelandView对象返回给核心控制器

第七步:由核心控制器将返回的ModelandView给视图解析器

第八步:有核心控制将解析的结果进行响应,最终将结果响应到客户端

2 自定义Hander的方法定义

2.1方法的参数问题

2.1.1默认参数

HttpServletRequest

HttpServletResponse

HttpSession

Model(默认作用范围就是request)

2.1.2客户端请求数据的绑定(重点)

使用处理本次请求的方法的形参,接收客户端发送的数据。

第一种:定义简单的类型的参数

String,基本类型对应的包装类型

 1 package org.guangsoft.controller;
 2
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.Model;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6
 7 @Controller
 8 public class UserController3
 9 {
10     /**
11      * 返回值:stirng表示跳转的路径
12      * username:接受客户端请求的username
13      * passowrd:接受客户端请求的password
14      * model:封装需要响应到客户端的数据
15      * 参数名称必须和客户端请求的参数名称一致
16      * @return
17      */
18     @RequestMapping("/userLogin")//客户端请求的url
19     public String userLogin(String username, String password, Model model)
20     {
21         if(username.equals("root") && password.equals("root"))
22         {
23             model.addAttribute("username",username);
24             return "success.jsp";//完成页面的跳转
25         }
26         else
27         {
28             model.addAttribute("msg", "您的用户名或密码错误!");
29             return "error.jsp";
30         }
31     }
32 }

第二种:定义javabean为形参

直接将请求的参数封装为javabean的对象。

l  定义javabean

 1 package org.guangsoft.controller;
 2
 3 public class User
 4 {
 5     private String username;
 6     private String password;
 7     //定义集合属性接受客户端的数据
 8     private Integer age;
 9     public Integer getAge()
10     {
11         return age;
12     }
13     public void setAge(Integer age)
14     {
15         this.age = age;
16     }
17     public String getUsername()
18     {
19         return username;
20     }
21     public void setUsername(String username)
22     {
23         this.username = username;
24     }
25     public String getPassword()
26     {
27         return password;
28     }
29     public void setPassword(String password)
30     {
31         this.password = password;
32     }
33
34 } 

定义UserController4

 1 package org.guangsoft.controller;
 2
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.Model;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6
 7 @Controller
 8 public class UserController4
 9 {
10     @RequestMapping("/userLogin2")
11     public String userLogin2(Model model,User user,String hobbys[])
12     {
13         if(user.getUsername().equals("root") && user.getPassword().equals("root"))
14         {
15             model.addAttribute("username", user.getUsername());
16             return "success.jsp";
17         }
18         else
19         {
20             model.addAttribute("msg","用户名或密码错误!");
21             return "error.jsp";
22         }
23     }
24 }

建立视图页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML>
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <title>My JSP 'index.jsp' starting page</title>
12     <meta http-equiv="pragma" content="no-cache">
13     <meta http-equiv="cache-control" content="no-cache">
14   </head>
15
16   <body>
17       <div align="center">
18       <form action="userLogin.action" method="post">
19           <div>username:<input name="username"  /></div>
20           <div>password:<input name="password"  /></div>
21           <div>age:<input name="age" /></div>
22           <input name="hobbys" type="checkbox" value="1" />1
23           <input name="hobbys" type="checkbox" value="2" />2
24           <div><input type="submit" value="提交" /></div>
25       </form>
26       </div>
27   </body>
28 </html> 

第三种:定义集合形参  见上hobbies

2.2方法返回值

String 类型的返回值表示需要跳转路径

3 springmvc和struts2区别

Struts2的核心控制器是过滤器(filter),springmvc的核心控制器(Servlet)

Struts2的Action是多例的,springmvc的Handler(处理器)是单例的

Struts2用Action的属性接收客户端数据(必须多例才线程安全),springmvc使用方法的形参接收客户端数据(线程安全的)

Struts2是针对Action类型进行mapping(和url关联)

Springmvc是针对Handler中的处理请求的方法进行mappring(和url关联),

Springmvc在请求处理的控制上更精确,(粒度更小)

 

转载于:https://www.cnblogs.com/guanghe/p/6188553.html

Spring映射器、适配器、解析器相关推荐

  1. spring多个视图解析器_在Spring中配置多个View解析器

    spring多个视图解析器 1.简介 在Spring中,提供了View Resolver来使用模型中可用的数据来解析视图,而无需与JSP,Velocity或Thymeleaf等View技术紧密绑定. ...

  2. Restful 风格开发 Spring MVC 的视图解析器---使用 beetl 模板引擎

    一.restful 风格 restful 的目的 将用户的行为当成是对数据库中记录的操作: 增加用户:/user post(post方式) 删除用户:/user/2 delete(删除第2条记录) 修 ...

  3. Python3.X 爬虫实战(静态下载器与解析器)

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 这两天比较忙,各种锅锅接,忙里偷闲完结这一篇吧.在我们在上一篇&l ...

  4. Spring Boot配置视图解析器

    2019独角兽企业重金招聘Python工程师标准>>> 在SpringBoot中,视图解析器的配置可以参考 Spring Boot数据源配置 #方式一:直接在属性文件中,加入 spr ...

  5. Spring之配置 multipartResolver 解析器、上传文件、处理文件

    随笔 multipart格式的数据 会将 一个表单拆分为 多个部分,每个部分对应一个输入域.在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制. ...

  6. Python爬虫之网页下载器网页解析器

    一.网页下载器 -- urllib2的三种网页下载方法 import cookielib import urllib2url = "http://www.baidu.com" pr ...

  7. Spring mvc ViewResolver视图解析器实现机制

    概要 我们在controller里面经常这样return一个ModelAndView. return new ModelAndView("userList", "user ...

  8. SpringMvc及三大组件(适配器、映射器、视图解析器)

    文章目录 1 SpringMvc三大组件 适配器 映射器 视图解析器 1 @RequestMapping和@Controller **1. 什么是mvc** 2. SpringMvc三大组件及其作用 ...

  9. Spring MVC自定义类型转换器Converter、参数解析器HandlerMethodArgumentResolver

    文章目录 一.前言 二.类型转换器Converter 1.自定义类型转换器 三.参数解析器 1.自定义分页参数解析器 2.自定义注解参数解析器 一.前言 Spring MVC源码分析相关文章已出: S ...

  10. Spring MVC 中自定义视图 @Component 及 配置 多个视图解析器 Excel视图

    首先我们建立一个自己的View实现View接口.要注意在类上面加上@Component的注解,因为看BeanNameViewResolver的源码知道,是直接从ioc容器里面拿的根据名字拿的视图,所以 ...

最新文章

  1. flex+android+教程,android开发flex4.5入门教程.pdf
  2. js创建对象的高级模式
  3. 优酷开放SDK之setOnTimeOutListener
  4. LinkedBlockingQueue的put,take方法
  5. 高效程序员的45个习惯 pdf_如何培养孩子高效学习?养成高效学习的7 个习惯。建议收藏...
  6. 快速上手sqlserver profiler
  7. 如何学习WPF技术?
  8. Codeforces Round #739 (Div. 3)(AK实况)
  9. Device eth0 does not seem to be present,delaying initialization的解决办法
  10. 冠状病毒过后世界九大未来预测
  11. android中wifi输入的密码保存的路径
  12. 【今日CV 视觉论文速览】19 Feb 2019
  13. Android 桌面组件【widget】初探
  14. 什么软件测试情侣头像,扫图查情侣头像软件
  15. 知识图谱之社交网络分析(SNA)之python处理
  16. Label free定量蛋白质组学
  17. 正版win8/win8.1系统激活密钥(key)备份还原操作步骤
  18. 联想计算机系统重装,联想笔记本电脑一键重装系统的方法
  19. 深入理解激活函数之softmax
  20. MPS模块化生产加工系统QY-JDYT34

热门文章

  1. bootstrap树节点如何设置默认不展开_我开源了一个基于Vue的组织架构树组件
  2. 关于聚类分析、判别分析、主成分分析、因子分析等多元统计分析方法
  3. BP神经网络和支持向量机在R语言中的实现
  4. 系统学习机器学习之总结(三)--多标签分类问题
  5. 嵌入式系统——专业英语
  6. Spark StreamingContext创建方式
  7. idea查找类 方法在哪里被使用
  8. git-合并分支指定commits
  9. 产品经理的工作感想(2)
  10. SD-WAN(软件定义WAN)