一、SpringMVC流程

49 - SpringMVC - 01 - 原始开发流程 - 图1

  1. DispatcherServlet:前端控制器(\不需要程序员开发**
    用户请求到达前端控制器,它相当于MVC模式中的C(Controller),DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
    作用:作为接受请求,响应结果,相当于转发器,中央处理器,减少其他组件之间的耦合度。
  2. HandlerMapping:处理器映射器(\不需要程序员开发**
    HandlerMapping负责根据用户请求找到Handler(即:处理器),SpringMVC提供了不同的映射器实现实现不同的映射方式,例如:配置文件方式、实现接口方式、注解方式等。
    作用:根据请求的Url 查找Handler
  3. Handler:处理器 (\需要程序员开发**
    Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下,Handler对具体的用户请求进行处理。由于Handler设计到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
  4. HandlerAdapter:处理器适配器
    通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
    主要作用是适配处理器中的各个方法!!!
  5. ViewResolver:视图解析器(\不需要程序员开发**
    ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面的展示给用户。
    SpringMVC框架提供了很多View视图类型,包括:JSTLView、freemarkerView、pdfView等等.
  6. View视图 (需要程序员开发jsp)
    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf)
    一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

二、SpringMVC开发步骤

2.1 导包

  1. commons-logging-1.2.jar
  2. spring-aop-4.3.10.RELEASE.jar
  3. spring-beans-4.3.10.RELEASE.jar
  4. spring-context-4.3.10.RELEASE.jar
  5. spring-core-4.3.10.RELEASE.jar
  6. spring-expression-4.3.10.RELEASE.jar
  7. spring-web-4.3.10.RELEASE.jar springweb项目的支持,如果要使用web mvc必须到如此包
  8. spring-webmvc-4.3.10.RELEASE.jar Spring web mvc核心包

2.2 web.mxl

在web.xml中配置Sprng Web MVC的前端控制器(核心dispatchservlet),负责处理所有的请求

  1. <!-- 配置前端控制器 -->
  2. <servlet>
  3. <servlet-name>spring-mvc</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <!-- 给DispatcherServlet中的属性赋值 -->
  7. <param-name>contextConfigLocation</param-name>
  8. <!-- classpath:指代的就是项目部署之后的classes目录 -->
  9. <param-value>classpath:spring-context-mvc.xml</param-value>
  10. </init-param>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>spring-mvc</servlet-name>
  14. <url-pattern>/</url-pattern>
  15. </servlet-mapping>

url-pattern中:
/:所有请求都拦截
/*:不会拦截jsp文件

2.3 SpringMVC配置文件

spring-context-mvc.xml:

    <!-- 1.handlerMapping:处理器映射器 根据url找到对应的hanlder(servlet)处理请求 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

    <!-- 2.handleradapter:处理器适配器,用来调用handler的方法(处理请求)-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

    <!-- 3.视图解析器:将逻辑视图转换成物理视图 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

    <!-- 4.配置handler对应的url -->
    <bean name="/user/login" class="com.woniuxy.controller.UserController"></bean>

2.4 创建handler

public class UserController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse) throws Exception {
        // ModelAndView 用来返回数据和用来渲染数据的页面
        System.out.println("正在处理请求");
        // 设置返回的页面数据
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/user.jsp");
        //
        modelAndView.addObject("name","zhangsan");
        return modelAndView;
    }

}

2.5 JSP文件

在webcontent下创建并编写user.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    欢迎:${name} 
</body>
</html>

最后启动项目发送/user/login请求进行测试