SpringMVC处理器和适配器的配置

基于xml配置方式来配置处理器和适配器

配置处理器适配器,springMVC提供了org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter类实现,通过源码查看,该适配器支持的Handler必须是Controller接口的实现类,即需要实现COntroller接口,SimpleControllerHandlerAdapter适配器才能支持执行

处理器配置

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


    <!--基于配置形式来配置处理器映射器、处理器适配器和视图解析器-->

    <!--处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>



    <!--配置Handler实例,将实例交给容器管理-->
    <bean name="/userlist1" class="com.tulun.controller.UserController1"/>


    <!--处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    
    <!--视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--jsp页面前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>

        <!--jsp后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

开发handler

/**
 * 基于非注解实现Handler
 * 必须实现Controller接口
 */
public class UserController1 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //返回用户列表
        ArrayList<User> users = new ArrayList <>();

        User va= new User(1, "vae");
        User java = new User(2, "java");
        User user = new User(3, "2021");
        users.add(va);
        users.add(java);
        users.add(user);

        //返回ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("users", users);
        modelAndView.setViewName("userlist");

        return modelAndView;
    }
}

这种形式的配置,一个Controller实现类只能针对特定的一个URL处理,即一个Handler只能一个类来处理,多个Hanler(即不同的URL)是需要不同的Controller实现类来处理,且实现类都需要交给容器管理。

基于注解形式

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

    

    <!--&lt;!&ndash;配置处理器映射器、处理器适配器&ndash;&gt;这是一种自动配置的方式,一般选择这种方式会比较简便-->
    <!--<mvc:annotation-driven/>-->

    <!--处理器映射器在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。-->
    
    <!--处理器映射器-->
    <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->

    <!--处理器适配器-->
     <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->


    <!--SPringMVC需要扫描注解-->
    <context:component-scan base-package="com.tulun.controller"/>

    <!--配置处理器映射器、处理器适配器-->
    <mvc:annotation-driven/>
    
    <!--视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--jsp页面前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>

        <!--jsp后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

开发handler

@Controller
public class UserController {


    @RequestMapping("/test")
    public @ResponseBody String test(){
        return "hello world";
    }

    /**
     * 执行器
     * @return
     */
    @RequestMapping("/userlist")
    public ModelAndView userList(){

        //返回用户列表
        ArrayList <User> users = new ArrayList <>();

        User va= new User(1, "vae");
        User java = new User(2, "java");
        User user = new User(3, "2021");
        users.add(va);
        users.add(java);
        users.add(user);

        //封装ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //封装数据
        modelAndView.addObject("users",users);
        //封装逻辑视图名 /WEB-INF/jsp/userlist.jsp
        modelAndView.setViewName("userlist");

        return modelAndView;

    }

    @RequestMapping("/test1")
    public ModelAndView test1(){

        //返回用户列表
        ArrayList <User> users = new ArrayList <>();

        User va= new User(1, "vae");
        User java = new User(2, "java");
        User user = new User(3, "2021");
        users.add(va);
        users.add(java);
        users.add(user);

        //封装ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //封装数据
        modelAndView.addObject("users",users);
        //封装逻辑视图名 /WEB-INF/jsp/userlist.jsp
        modelAndView.setViewName("/WEB-INF/jsp/test.jsp");

        return modelAndView;

    }
}

个人感觉一般在开发中都会使用第二种方式吧😄。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

降温vae+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值