非注解处理器映射器
1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
url 到bean name的映射
2. org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
url 到bean id的映射

非注解适配器
1. org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
  要求编写的Handler实现Controller接口
2. org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.class

  要求编写的Handler实现HttpRequestHandler接口

处理器Handler
1. implements org.springframework.web.servlet.mvc.Controller
2. implements org.springframework.web.HttpRequestHandler

处理器代码:

ItemsController1因为和SimpleControllerHandlerAdapter适配,因此实现Controller接口

  1. package wzd.pkg.ssm.controller;
  2.  
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5.  
  6. import org.springframework.web.servlet.ModelAndView;
  7. import org.springframework.web.servlet.mvc.Controller;
  8.  
  9. public class ItemsController1 implements Controller {
  10.  
  11. @Override
  12. public ModelAndView handleRequest(HttpServletRequest request,
  13. HttpServletResponse response) throws Exception {
  14.  
  15. //调用service查找数据库,查询商品列表。
  16.  
  17. //返回ModelAndView
  18. ModelAndView modelAndView=new ModelAndView();
  19.  
  20. //相当于request的setAttribute,在jsp页面中通过itemsList取数据
  21. modelAndView.addObject("itemsList", "controller1 content");
  22.  
  23. modelAndView.setViewName("/WEB-INF/jsp/items.jsp");
  24.  
  25. return modelAndView;
  26. }
  27.  
  28. }

ItemsController2因为和SimpleControllerHandlerAdapter适配,因此实现Controller接口

  1. package wzd.pkg.ssm.controller;
  2.  
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5.  
  6. import org.springframework.web.servlet.ModelAndView;
  7. import org.springframework.web.servlet.mvc.Controller;
  8.  
  9. public class ItemsController2 implements Controller {
  10.  
  11. @Override
  12. public ModelAndView handleRequest(HttpServletRequest request,
  13. HttpServletResponse response) throws Exception {
  14.  
  15. //调用service查找数据库,查询商品列表。
  16.  
  17. //返回ModelAndView
  18. ModelAndView modelAndView=new ModelAndView();
  19.  
  20. //相当于request的setAttribute,在jsp页面中通过itemsList取数据
  21. modelAndView.addObject("itemsList", "controller2 content");
  22.  
  23. modelAndView.setViewName("/WEB-INF/jsp/items.jsp");
  24.  
  25. return modelAndView;
  26. }
  27.  
  28. }

ItemsController3因为和HttpRequestHandlerAdapter适配,因此实现RequestHandler接口

  1. package wzd.pkg.ssm.controller;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. import org.springframework.web.HttpRequestHandler;
  10.  
  11. public class ItemsController3 implements HttpRequestHandler {
  12.  
  13. @Override
  14. public void handleRequest(HttpServletRequest request,
  15. HttpServletResponse response) throws ServletException, IOException {
  16.  
  17. request.setAttribute("itemsList", "controller3 content");
  18.  
  19. request.getRequestDispatcher("/WEB-INF/jsp/items.jsp").forward(request, response);
  20.  
  21. }
  22.  
  23. }

  对应的web.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  3. <display-name>GoodsFind</display-name>
  4.  
  5. <!-- 配置前段控制器 -->
  6. <servlet>
  7. <servlet-name>springmvc</servlet-name>
  8. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  9. <init-param>
  10. <param-name>contextConfigLocation</param-name>
  11. <param-value>classpath:springmvc.xml</param-value>
  12. </init-param>
  13. </servlet>
  14.  
  15. <servlet-mapping>
  16. <servlet-name>springmvc</servlet-name>
  17. <!--
  18. 第一种:*.action,访问以.action结尾由DispathcerServlet进行解析
  19. 第二种:/,所有访问的地址都由DispathcerServlet进行解析,对于静态文件的解析需要配置不让DispathcerServlet进行解析。
  20. 使用此种方法可以实现RESTful风格的url。
  21. 第三种:/*,这样配置不对
  22. -->
  23. <url-pattern>*.action</url-pattern>
  24. </servlet-mapping>
  25.  
  26. <welcome-file-list>
  27. <welcome-file>index.html</welcome-file>
  28. <welcome-file>index.htm</welcome-file>
  29. <welcome-file>index.jsp</welcome-file>
  30. <welcome-file>default.html</welcome-file>
  31. <welcome-file>default.htm</welcome-file>
  32. <welcome-file>default.jsp</welcome-file>
  33. </welcome-file-list>
  34. </web-app>

  springMVC的配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <beans xmlns="http://www.springframework.org/schema/beans"
  4.  
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  6.  
  7. xmlns:context="http://www.springframework.org/schema/context"
  8.  
  9. xsi:schemaLocation="http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  13. http://www.springframework.org/schema/aop
  14. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  15. http://www.springframework.org/schema/tx
  16. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  17. http://www.springframework.org/schema/context
  18. http://www.springframework.org/schema/context/spring-context-3.2.xsd">
  19. <!-- 配置handler -->
  20. <bean id="queryItems1" name="/queryItems1s.action" class="wzd.pkg.ssm.controller.ItemsController1"/>
  21. <bean id="queryItems2" name="/queryItems2s.action" class="wzd.pkg.ssm.controller.ItemsController2"/>
  22. <bean id="queryItems3" name="/queryItems3s.action" class="wzd.pkg.ssm.controller.ItemsController3"/>
  23.  
  24. <!-- 处理器映射器
  25. 将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)这是默认的处理器映射器
  26. -->
  27. <bean
  28. class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"
  29. />
  30. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  31. <property name="mappings">
  32. <props>
  33. <!-- 对queryItems1进行url映射,url是 queryItems1.action和queryItems2.action -->
  34. <prop key="/queryItems1.action">queryItems1</prop>
  35. <prop key="/queryItems2.action">queryItems2</prop>
  36. <prop key="/queryItems3.action">queryItems3</prop>
  37. </props>
  38. </property>
  39. </bean>
  40.  
  41. <!-- 处理器适配器
  42. 所有的处理器适配器都实现HandlerAdapter接口
  43. -->
  44. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  45. <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
  46.  
  47. <!-- 视图解析器 -->
  48. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  49. </bean>
  50.  
  51. </beans>

  试图文件,一个jsp页面(items.jsp)。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>items jsp</title>
  8. </head>
  9. <body>
  10.  
  11. 这个是jsp页面。<br>
  12.  
  13. 获取值:
  14. <%=request.getAttribute("itemsList") %><br>
  15.  
  16. </body>
  17. </html>

通过在浏览器中输入以下地址,将会正常访问items.jsp页面。

  http://localhost:8080/GoodsFind/queryItems1.action

  http://localhost:8080/GoodsFind/queryItems1s.action

  http://localhost:8080/GoodsFind/queryItems2.action

  http://localhost:8080/GoodsFind/queryItems2s.action

  http://localhost:8080/GoodsFind/queryItems3.action

  http://localhost:8080/GoodsFind/queryItems3s.action

其中:http://localhost:8080/GoodsFind/queryItems1.action http://localhost:8080/GoodsFind/queryItems2.action http://localhost:8080/GoodsFind/queryItems3.action都是通过BeanNameUrlHandlerMapping进行映射。

  http://localhost:8080/GoodsFind/queryItems1s.action http://localhost:8080/GoodsFind/queryItems2s.action http://localhost:8080/GoodsFind/queryItems3s.action是通过SimpleUrlHandlerMapping进行映射。

  

  http://localhost:8080/GoodsFind/queryItems1.action http://localhost:8080/GoodsFind/queryItems1s.action http://localhost:8080/GoodsFind/queryItems2.action http://localhost:8080/GoodsFind/queryItems2s.action对应的处理器是继承自Contrller。

  

http://localhost:8080/GoodsFind/queryItems3.action http://localhost:8080/GoodsFind/queryItems3s.action对应的处理器是继承自HttpRequestHandler。

springMVC非注解常用的"处理器映射器"、"适配器"、"处理器"的更多相关文章

  1. springMVC入门(三)------springMVC的处理器映射器和处理器适配器配置

    简介 springMVC的处理器映射器和处理器适配器存在多种配置,因此在此专门做一个总结 常见处理器映射器.适配器的配置 springmvc多个映射器多个处理器可以并存 所有的映射器都实现了Handl ...

  2. SpringMVC中注解和非注解方式下的映射器和适配器总结

    1. 非注解方式 1.1 处理器适配器 上一节中使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapte ...

  3. 【SpringMVC学习03】SpringMVC中注解和非注解方式下的映射器和适配器总结

    从上一篇的springmvc入门中已经看到,springmvc.xml中的配置了映射器和适配器,是使用非注解的方式来配置的,这是非注解方式的一种,这里再复习一下: 1. 非注解方式 1.1 处理器适配 ...

  4. 【SpringMVC笔记】第四课 注解的处理器映射器和处理器适配器使用

    一.注意点: 版本问题 spring3.2以前的版本,注解的映射器和适配器使用以下两个类. org.springframework.web.servlet.mvc.annotation.Default ...

  5. spring_配置处理器对象、处理器映射器、处理器适配器、视图解析器

    创建spring配置文件:application-context.xml. 创建处理器类 package com.lanou.demo.controller;public class BookCont ...

  6. SpringMVC注解配置处理器映射器和处理器适配器

    一.springmvc.xml中配置方式 <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.me ...

  7. SpringMVC学习记录二——非注解和注解的处理器映射器和适配器

    3      非注解的处理器映射器和适配器 3.1      非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUr ...

  8. springmvc 源码分析(三) -- 自定义处理器映射器和自定义处理器适配器,以及自定义参数解析器 和错误跳转自定页面

    测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git DispatcherServlet ...

  9. 【SpringMVC笔记】第三课 处理器映射器+处理器适配器

    第二课的例子中,在springmvc.xml中配置使用了第一种处理器映射器和处理器适配器,如下所示. <!-- 配置第一种处理器映射器 BeanNameUrlHandlerMapping --& ...

随机推荐

  1. Win 2008 r2 远程桌面多用户登陆,一用户多登陆配置

    Windows 2008 R2远程桌面,设置最大连接数,一个登录后另一个就被踢掉等问题 Windows 2008 R2配置如图: 1.打开远程桌面回话主机配置 2.右键RDP-Tcp,属性,可设置最大 ...

  2. cxgrid多选删除

    设置OptionsData选项中的Editing设为True,按着Shift和Ctrl可实现多选 SelectionChanged事件 For i:= 0 To cxGrid1DBTableView1 ...

  3. Java之扫描目录,修改文件内容

    扫描目录下文件,修改文件中指定内容 package org.utils.tools.fileoper; import java.io.*; import java.util.ArrayList; im ...

  4. 当数据库字段与model字段规则不一致时候 需要在xml里面手工转换

  5. Play with Floor and Ceil UVA - 10673(拓展欧几里得)

    因为我现在还不会用这个...emm...蒟蒻...只看了 从来没用过....所以切一道水题...练一下... 人家讲的很好  https://blog.csdn.net/u012860428/arti ...

  6. 【刷题】HDU 5883 The Best Path

    Problem Description Alice is planning her travel route in a beautiful valley. In this valley, there ...

  7. 在Mac上快速Kill掉Tomcat

    最近IDEA总是会莫名其妙的挂掉,而挂掉之后通过IDEA开启的Tomcat却没有同步给关掉,等我再在IDEA里要启动的时候,就不行了.... 这时,就需要手动去kill掉tomcat,每次先 ps - ...

  8. emWin 工程之汉字显示

    @2018-7-10  工程加入字库后,液晶屏显示非法文字,无法正确显示设置的文字 解决办法 将显示汉字的文件 <MainTask.c> 修改为 UTF-8 格式后显示正常,修改为 ANS ...

  9. Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  10. 枚举类型---java基础代码

    package com.mon11.day4; /** * 类说明 :定义枚举 * @author 作者 : chenyanlong * @version 创建时间:2017年11月4日 */ pub ...