(二)springMvc 入门 配置前端控制器 servlet拦截方式 springMvc的配置文件 编写处理器类 配置自定义处理器

目录


web.xml 配置 DispatcherServlet

  <!-- **************************** 配置springMvc前端控制器(DispatcherServlet)************************* -->

    <!--前端控制器是个servlet,因此,这里就像配置servlet一样-->
    <servlet>
        <servlet-name>springMvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化读取配置文件,我们指定配置文件在哪;
                否则默认加载 /WEB-INF/servlet-name-servlet.xml 
                我们这里的 servlet-name 是 springMvc ,那么就是去加载 servlet-name.xml    
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:xin/ijava/ssm/config/springMvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <!--
            1、 *.action 拦截 .action 结尾的url
            2、/ 拦截所有url,即使是访问 静态资源也会被拦截,全部走前端控制器,可以实现 resultFul 风格的url
            3、/*  这样配置不对,当转发到jsp页面时,还是会交给前端控制器,去找处理器
        -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

servlet拦截方式

  1. 拦截固定后缀的 url

    比如 *.action*.do ;这种拦截,不会拦截静态资源,因为静态资源的后缀,css , js , jpg , png ... 不再拦截的范围内 ;

  2. 拦截所有 url

    设置为 /

    这样静态资源也会被拦截,导致不能正常显示,需要做特殊处理 ;


springMvc的配置文件

spring 的配置文件一样,我们的 处理器映射器处理器适配器视图解析器 都在其中进行配置 ;

其中 视图解析器 用到 JSTL 注意导入包。

    <!--配置处理器适配器-->
    <!--所有的处理器适配器,都实现了 HandlerAdapter -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--配置适配器映射器-->
    <!--bean的名字,就是映射 map 中的键 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

编写处理器类

自定义处理器类,需要实现 Controller 接口 ;

/**
 * 自定义 处理器类。所有处理器都需要实现 Controller 接口,
 * 包不要导入错了,导 mvc 下面的包
 * @author An
 */
public class ItemsController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

        List<Item> items = new ArrayList<>() ;
        Item item1 = new Item();
        item1.setId(001);
        item1.setName("锋麦笔记本");
        Item item2 = new Item();
        item1.setId(999);
        item1.setName("牛奶");

        items.add(item1) ;
        items.add(item2) ;

//        创建 ModelAndView
        ModelAndView modelAndView = new ModelAndView() ;
//        添加model,也就是数据。(键值对)
//        在页面中取数据,就是根据键名
        modelAndView.addObject("items",items) ;
//        添加视图,也就是界面
        modelAndView.setViewName("/WEB-INF/jsp/Item/ItemController.jsp0");

        return modelAndView;
    }
}

配置自定义处理器

<!--配置自定义处理器 -->
<!-- name 就是url地址-->
    <bean name="/queryItems.action" class="xin.ijava.ssm.controller.ItemsController"/>