非注解的处理器映射器和适配器

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。

在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。

在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

要求编写的Handler实现 Controller接口。

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter

要求编写的Handler实现 HttpRequestHandler接口

方式二:

1.springmvc.xml配置

多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置处理器映射器,springMvc默认的处理器映射器 BeanNameUrlHandlerMapping:
         根据bean(自定义Controller)的name属性的url去寻找handler(Action:Controller) -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

    <!-- 配置处理器适配器执行Controller ,springmvc默认的 SimpleControllerHandlerAdapter:执行Controller
    SimpleControllerHandlerAdapter只能适配实现了Controller接口的Controller-->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/b.do">indexController</prop>
                <prop key="/c.do">index2Controller</prop>
            </props>
        </property>
    </bean>
    <bean id="indexController" class="controller.IndexController"/>
    <bean id="index2Controller" class="controller.Index2Controller"/>

    <!-- 配置自定义Controller -->
    <bean id="myController" name="/hello.do" class="controller.HelloController"></bean>

    <!-- 配置sprigmvc视图解析器:解析逻辑视图 后台返回逻辑视图:index 视图解析器解析出真正物理视图:
    前缀+逻辑试图+后缀====/WEB-INF/jsps/index.jsp -->
    <bean        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

2.Controller层代码:

package controller;

import org.springframework.web.HttpRequestHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class IndexController implements HttpRequestHandler {
    @Override
    public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("hello","this is a HttpRequestHandler");
        req.getRequestDispatcher("/WEB-INF/jsps/index.jsp")
                .forward(req,resp);
    }
}

或者:

package controller;

import org.springframework.web.HttpRequestHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class IndexController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        ModelAndView mv=new ModelAndView();
        mv.addObject("hello","Welcome To MVC !");
        mv.setViewName("first");
        return mv;
    }
}

3.测试

原文地址:https://www.cnblogs.com/yanghe123/p/11719433.html

时间: 2024-07-30 02:30:05

非注解的处理器映射器和适配器的相关文章

注解的处理器映射器和适配器

1, 配置注解映射器和适配器. <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMa

第九章.处理器映射器和适配器

本次课程在 第八章 基础上进行的!!! 非注解的处理器映射器和适配器 一.SimpleUrlHandlerMapping 找到springmvc.xml文件 找到下面的代码进行注释 <!-- <bean name="/query_test.action" class="cn.com.mvc.controller.FruitControllerTest"></bean> --> <!-- <bean class=&quo

springmvc03 非注解和注解处理器映射器和适配器

1其它非注解处理器映射器和适配器 1.1BeanNameUrlHandlerMapping(映射器) 根据请求url(XXXX.action)匹配spring容器bean的 name 找到对应的bean(程序编写的Handler) 1.2SimpleUrlHandlerMapping(映射器) <!--简单url映射, 集中配置bean的id对应 的url --> <bean class="org.springframework.web.servlet.handler.Simp

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

一.注意点: 版本问题 spring3.2以前的版本,注解的映射器和适配器使用以下两个类. org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping.class org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.class 在新版本的源码中可以看到以下注释: 在3.2 包含及以后的版本中使用如

springMVC非注解常用的&quot;处理器映射器&quot;、&quot;适配器&quot;、&quot;处理器&quot;

非注解处理器映射器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.SimpleControllerHandlerAdap

非注解的处理器适配器和处理器映射器

一.非注解的处理器映射器 1,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping 该bean 按照名称配置url,如下: <bean id="itemsController1" name="/queryItems_test.action" class="cn.itcast.ssm.controller.ItemsController1" /> 2,org.

springmvc 前段控制器 处理器映射器 处理器适配器 视图视图解析器 配置

1. 前段控制器 新建项目在web.xml中配置前段控制器 <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</pa

使用推荐使用的映射器和适配器

默认的注解配置 我们发现默认配置的处理器映射器和适配器都已经过期,不推荐使用. 配置推荐使用的映射器和适配器: 测试:

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

从上一篇的springmvc入门中已经看到,springmvc.xml中的配置了映射器和适配器,是使用非注解的方式来配置的,这是非注解方式的一种,这里再复习一下: 1. 非注解方式 1.1 处理器适配器 上一节中使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.即: SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler,所以我