MVC映射器原理实现示例详解

TheDisguiser 2020-07-23 22:00:09 java常见问答 6886

在Mvc中,映射器是最重要的,它关系着与数据库的联系,小伙伴们知道要怎么配置实现吗?下面就跟着小编来了解下吧。

一、在springmvc.xml中配置注解处理器适配器及映射器有两种方式

1、 在springmvc.xml声明相关的bean及实现 
   <!--注解映射器-- >
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <
  !--注解适配器-- >
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>(
2、在springmvc.xml使用 < mvc: annotaion - driven / > 标签来配置 
   <mvc: annotation - driven > </mvc:annotation-driven>

二、编写含注释的Controller类

package cn.com.mvc.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cn.com.mvc.model.Fruits;
//注解的Handler类  
//使用@Controller来标识它是一个控制器  
@Controller
public class FruitsControllerTest3
{
    private FruitsService fruitsService = new FruitsService();
    //商品查询列表  
    //@RequestMapping实现 对queryFruitsList方法和url进行映射,一个方法对应一个url  
    //一般建议将url和方法写成一样  
    @RequestMapping(value = "/queryFruitsList")
    public ModelAndView queryFruitsList() throws Exception
    {
        //模拟Service获取水果商品列表  
        List < Fruits > fruitsList = fruitsService.queryFruitsList();
        //返回ModelAndView  
        ModelAndView modelAndView = new ModelAndView();
        //相当 于request的setAttribut,在jsp页面中通过fruitsList取数据  
        modelAndView.addObject("fruitsList", fruitsList);
        //指定视图  
        modelAndView.setViewName("/WEB-INF/jsp/fruitsList.jsp");
        return modelAndView;
    }
    //内部类
    class FruitsService
    {
        public List < Fruits > queryFruitsList()
        {
            List < Fruits > fruitsList = new ArrayList < Fruits > ();
            Fruits apple = new Fruits();
            apple.setName("苹果");
            apple.setPrice(5.0);
            apple.setProducing_area("杭州");
            Fruits banana = new Fruits();
            banana.setName("香蕉");
            banana.setPrice(9.0);
            banana.setProducing_area("河南");
            Fruits ma = new Fruits();
            ma.setName("马");
            ma.setPrice(15.0);
            ma.setProducing_area("广西州");
            fruitsList.add(apple);
            fruitsList.add(banana);
            fruitsList.add(ma);
            return fruitsList;
        }
    }
}

三、因为注解的处理器映射器及适配器需要找到注解的Handler,所以我们需要在springmvc.xml中声明相关的bean信息,通常有以下两种方式

1、< !--直接声明该Handler所在的类-- >
 <bean name="/queryFruits_test.action" class="cn.com.mvc.controller.FruitsControllerTest" />(
2、使用扫描配置, 会包下所有的类进行扫描, 找出所有使用 @Controller注解的Handler控制器类。
 <context: component - scan base - package = "cn.com.mvc.controller" > </context:component-scan>

四、下面就是springmvc.xml中的最终信息,这样我们就不需要像上面那样每次都为action请求单独配置bean了

<?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"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    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/context 
        http://www.springframework.org/schema/context/spring-context-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 ">
        
        <!-- 视图解析器:该解析器会根据handler方法执行后返回的jsp具体位置来加载相应界面 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        </bean>
        <mvc:annotation-driven></mvc:annotation-driven>
        <context:component-scan base-package="cn.com.mvc.controller"></context:component-scan>       
</beans>

以上就是今天的所有内容,关于java架构师知识还有什么不理解的,欢迎来我们网站寻找答案。

推荐阅读:

springmvc上传文件方法详解

springmvc的工作流程是怎样的?流程详解

springmvc怎么设置默认首页?如何设置?