SpringMVC入门

一、执行图示

image

执行流程说明

从上面的图中我们可以大致明白springMVC的调度流程,下面详细说明:
1.发起请求到前端控制器(DispatcherServlet)
2.前端控制器请求HandlerMapping查找Handler,可以根据xml配置、注解进行查找
3.处理器映射器HandlerMapping向前端控制器返回Handler
4.前端控制器调用处理器适配器(HandlerAdapter)去执行Handler
5.处理器适配器去执行Handler
6.Handler执行完成后给适配器返回ModelAndView
7.处理器适配器向前端控制器返回ModelAndView,ModelAndView是springMVC的一个底层对象,包括了Model和View
8.前端控制器请求视图解析器(ViewResolver)进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
9.视图解析器向前端控制器返回真正的视图View
10.前端控制器请求进行视图渲染,视图渲染将模型数据(在ModelAndView)填充到request域
11.响应给客户端

相关介绍

前端控制器DispatcherServlet

作用就是接收请求,响应结果,相当于一个转发器。减少了其他组件之前的耦合度。不需要我们自己开发。

处理器映射器HandlerMapping

作用:根据请求url查找Handler

Handler处理器(需要我们开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求规则)去执行Handler
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

视图解析器(ViewResolver)

作用:进行视图解析。根据逻辑视图名解析成真正的视图(View)

视图(需要自己写)

是一个接口,实现类就是来支持不同的View类型(jsp、freemarker...),需要我们开发相关页面。

二、入门程序案例

在springMVC需要用到的pojo类可以自己实现定义好,这里不做定义介绍

在web.xml配置前端控制器

  

  

  

      

      

            springmvc

            org.springframework.web.servlet.DispatcherServlet

          

          

        contextConfigLocation

        classpath:springmvc.xml

    





    springmvc

    

    *.action





    index.jsp




说明:从上面的配置中我们可以看到需要将配置处理器映射器、处理器适配器等的配置文件(springmvc.xml)作为初始化参数配置给前端控制器。而前端控制器就是一个servlet。注意路径的配置方法。

在SpringMVC.xml中配置处理器适配器

此类实现了接口HandlerAdapter,能执行实现Controller接口的Handler(或者叫能识别Handler的类型)

   
   

构建Handler

从上面的源码中我们可以看到编写Handler要实现Contoller接口,才能由处理器适配器执行:

  ItemsController1.java

  package cn.itcast.ssm.controller;

  import java.util.ArrayList;

  import java.util.List;

  import javax.servlet.http.HttpServletRequest;

  import javax.servlet.http.HttpServletResponse;

  import org.springframework.web.servlet.ModelAndView;

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

import cn.itcast.ssm.pojo.Items;

  //实现Controller接口的映射器

  public class ItemsController1 implements Controller{

@Override

public ModelAndView handleRequest(HttpServletRequest request,

        HttpServletResponse response) throws Exception {

    //调用service查询数据库,查询商品列表,这里使用静态数据库模拟

    List itemsList = new ArrayList();

    Items items_1 = new Items();

    items_1.setName("联想笔记本");

    items_1.setPrice(6000f);

    items_1.setDetail("ThinkPad T 430");

    Items items_2 = new Items();

    items_2.setName("苹果手机");

    items_2.setPrice(5000f);

    items_2.setDetail("iphone6s");

    itemsList.add(items_1);

    itemsList.add(items_2);

    //返回ModelAndView

    ModelAndView modelAndView = new ModelAndView();

    //相当于request的setAttribute方法,在jsp页面中就可以通过items取数据了

    modelAndView.addObject("itemsList",itemsList);

    //指定视图

    modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");

    return modelAndView;

    }

}

JSP视图(注意文件路径)

  <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%>

  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

  

    

    

  

查询商品列表

  

    

    
查询条件:
商品列表:
商品名称 商品价格 生产日期 商品描述 操作
${item.name } ${item.price } ${item.detail } 修改

在SpringMVC.xml中配置Handler

  


SpringMVC.xml配置处理器映射器

  

    

在SpringMVC.xml 配置视图解析器

    

  

2.6 部署测试

部署之后使用地址http://localhost:8080/springMVC01/queryItems.action访问相关的action。
注意:在将相关spring的jar包导入进去的时候一定要将commons-logging.jar这个包加入,不然会报错。
注意:如果我们使用一个错误的地址http://localhost:8080/springMVC01/queryItemss.action访问则会报下面的错误:

image

这个错误就是说通过url找不到handler,于是我们可以知道是处理器映射器根据我们给出的url映射不到handler。如果我们访问地址是正确的,但是跳转时jsp页面地址写错了,则会报下面的错误:
image

你可能感兴趣的:(SpringMVC入门)