springMVC非注解常用的"处理器映射器"、"适配器"、"处理器"
非注解处理器映射器
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接口
- package wzd.pkg.ssm.controller;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- public class ItemsController1 implements Controller {
- @Override
- public ModelAndView handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- //调用service查找数据库,查询商品列表。
- //返回ModelAndView
- ModelAndView modelAndView=new ModelAndView();
- //相当于request的setAttribute,在jsp页面中通过itemsList取数据
- modelAndView.addObject("itemsList", "controller1 content");
- modelAndView.setViewName("/WEB-INF/jsp/items.jsp");
- return modelAndView;
- }
- }
ItemsController2因为和SimpleControllerHandlerAdapter适配,因此实现Controller接口
- package wzd.pkg.ssm.controller;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- public class ItemsController2 implements Controller {
- @Override
- public ModelAndView handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- //调用service查找数据库,查询商品列表。
- //返回ModelAndView
- ModelAndView modelAndView=new ModelAndView();
- //相当于request的setAttribute,在jsp页面中通过itemsList取数据
- modelAndView.addObject("itemsList", "controller2 content");
- modelAndView.setViewName("/WEB-INF/jsp/items.jsp");
- return modelAndView;
- }
- }
ItemsController3因为和HttpRequestHandlerAdapter适配,因此实现RequestHandler接口
- package wzd.pkg.ssm.controller;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.HttpRequestHandler;
- public class ItemsController3 implements HttpRequestHandler {
- @Override
- public void handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- request.setAttribute("itemsList", "controller3 content");
- request.getRequestDispatcher("/WEB-INF/jsp/items.jsp").forward(request, response);
- }
- }
对应的web.xml配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>GoodsFind</display-name>
- <!-- 配置前段控制器 -->
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springmvc.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <!--
- 第一种:*.action,访问以.action结尾由DispathcerServlet进行解析
- 第二种:/,所有访问的地址都由DispathcerServlet进行解析,对于静态文件的解析需要配置不让DispathcerServlet进行解析。
- 使用此种方法可以实现RESTful风格的url。
- 第三种:/*,这样配置不对
- -->
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
springMVC的配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.2.xsd">
- <!-- 配置handler -->
- <bean id="queryItems1" name="/queryItems1s.action" class="wzd.pkg.ssm.controller.ItemsController1"/>
- <bean id="queryItems2" name="/queryItems2s.action" class="wzd.pkg.ssm.controller.ItemsController2"/>
- <bean id="queryItems3" name="/queryItems3s.action" class="wzd.pkg.ssm.controller.ItemsController3"/>
- <!-- 处理器映射器
- 将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)这是默认的处理器映射器
- -->
- <bean
- class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"
- />
- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <!-- 对queryItems1进行url映射,url是 queryItems1.action和queryItems2.action -->
- <prop key="/queryItems1.action">queryItems1</prop>
- <prop key="/queryItems2.action">queryItems2</prop>
- <prop key="/queryItems3.action">queryItems3</prop>
- </props>
- </property>
- </bean>
- <!-- 处理器适配器
- 所有的处理器适配器都实现HandlerAdapter接口
- -->
- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
- <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
- <!-- 视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- </bean>
- </beans>
试图文件,一个jsp页面(items.jsp)。
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>items jsp</title>
- </head>
- <body>
- 这个是jsp页面。<br>
- 获取值:
- <%=request.getAttribute("itemsList") %><br>
- </body>
- </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非注解常用的"处理器映射器"、"适配器"、"处理器"的更多相关文章
- springMVC入门(三)------springMVC的处理器映射器和处理器适配器配置
简介 springMVC的处理器映射器和处理器适配器存在多种配置,因此在此专门做一个总结 常见处理器映射器.适配器的配置 springmvc多个映射器多个处理器可以并存 所有的映射器都实现了Handl ...
- SpringMVC中注解和非注解方式下的映射器和适配器总结
1. 非注解方式 1.1 处理器适配器 上一节中使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapte ...
- 【SpringMVC学习03】SpringMVC中注解和非注解方式下的映射器和适配器总结
从上一篇的springmvc入门中已经看到,springmvc.xml中的配置了映射器和适配器,是使用非注解的方式来配置的,这是非注解方式的一种,这里再复习一下: 1. 非注解方式 1.1 处理器适配 ...
- 【SpringMVC笔记】第四课 注解的处理器映射器和处理器适配器使用
一.注意点: 版本问题 spring3.2以前的版本,注解的映射器和适配器使用以下两个类. org.springframework.web.servlet.mvc.annotation.Default ...
- spring_配置处理器对象、处理器映射器、处理器适配器、视图解析器
创建spring配置文件:application-context.xml. 创建处理器类 package com.lanou.demo.controller;public class BookCont ...
- SpringMVC注解配置处理器映射器和处理器适配器
一.springmvc.xml中配置方式 <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.me ...
- SpringMVC学习记录二——非注解和注解的处理器映射器和适配器
3 非注解的处理器映射器和适配器 3.1 非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUr ...
- springmvc 源码分析(三) -- 自定义处理器映射器和自定义处理器适配器,以及自定义参数解析器 和错误跳转自定页面
测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git DispatcherServlet ...
- 【SpringMVC笔记】第三课 处理器映射器+处理器适配器
第二课的例子中,在springmvc.xml中配置使用了第一种处理器映射器和处理器适配器,如下所示. <!-- 配置第一种处理器映射器 BeanNameUrlHandlerMapping --& ...
随机推荐
- Win 2008 r2 远程桌面多用户登陆,一用户多登陆配置
Windows 2008 R2远程桌面,设置最大连接数,一个登录后另一个就被踢掉等问题 Windows 2008 R2配置如图: 1.打开远程桌面回话主机配置 2.右键RDP-Tcp,属性,可设置最大 ...
- cxgrid多选删除
设置OptionsData选项中的Editing设为True,按着Shift和Ctrl可实现多选 SelectionChanged事件 For i:= 0 To cxGrid1DBTableView1 ...
- Java之扫描目录,修改文件内容
扫描目录下文件,修改文件中指定内容 package org.utils.tools.fileoper; import java.io.*; import java.util.ArrayList; im ...
- 当数据库字段与model字段规则不一致时候 需要在xml里面手工转换
- Play with Floor and Ceil UVA - 10673(拓展欧几里得)
因为我现在还不会用这个...emm...蒟蒻...只看了 从来没用过....所以切一道水题...练一下... 人家讲的很好 https://blog.csdn.net/u012860428/arti ...
- 【刷题】HDU 5883 The Best Path
Problem Description Alice is planning her travel route in a beautiful valley. In this valley, there ...
- 在Mac上快速Kill掉Tomcat
最近IDEA总是会莫名其妙的挂掉,而挂掉之后通过IDEA开启的Tomcat却没有同步给关掉,等我再在IDEA里要启动的时候,就不行了.... 这时,就需要手动去kill掉tomcat,每次先 ps - ...
- emWin 工程之汉字显示
@2018-7-10 工程加入字库后,液晶屏显示非法文字,无法正确显示设置的文字 解决办法 将显示汉字的文件 <MainTask.c> 修改为 UTF-8 格式后显示正常,修改为 ANS ...
- Python之文件与目录操作(os、zipfile、tarfile、shutil)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...
- 枚举类型---java基础代码
package com.mon11.day4; /** * 类说明 :定义枚举 * @author 作者 : chenyanlong * @version 创建时间:2017年11月4日 */ pub ...