SpringMvc01-HelloSpringMvc

第一:写第一个SpringMvc之前先弄了解他究竟是什么?为什么要学习它?

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web

 

我们为什么要学习SpringMVC呢?

Spring MVC的特点:

  1. 轻量级,简单易学
  2. 高效 , 基于请求响应的MVC框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等
  6. 简洁灵活

Spring的web框架围绕DispatcherServlet(实际是一个Servlet) [ 调度Servlet ] 设计。

DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;

正因为SpringMVC , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等......所以我们要学习 。

 

SpringMvc执行原理图(图从网上搜的)

SpringMvc01-HelloSpringMvc

 

  1. 用户发送请求,直接请求到DispatcherServlet
  2. DispatcherServlet调用HandlerMapping处理映射器,查找匹配相应的Handler
  3. 解析到相应的Handler后,调用适配器HandlerAdapter。
  4. HandlerAdapter根据相应的Handler调用真正的处理器(Controller),并执行相应的业务逻辑
  5. 处理完业务后,HandlerAdapter会将controller的返回值ModelAndView对象,带给DispatcherServlet
  6. DispatcherServlet调用ViewResolver处理映射,处理解析ModelAndView
  7. 解析后返回一个具体的view到DispatcherServlet
  8. DispatcherServlet负责将这个view返回给用户

 SpringMVC接口解释:

  HandlerMapping:可以完成用户到Controller的映射

  HandlerAdapter:帮助DispatcherServlet处理映射请求的

 

  ViewResolver:根据配置解析View,从而将结果渲染给用户

 

 

 

步骤:

1.新建一个web项目,导入SpringMvc依赖

2.在Web.xml文件中注册DispatcherServlet

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 5          version="4.0">
 6 
 7     <!--1.注册DispatcherServlet-->
 8     <servlet>
 9         <servlet-name>springmvc</servlet-name>
10         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
11         <!--关联一个spring-mvc的配置文件:springmvc-servlet.xml-->
12         <init-param>
13             <param-name>contextConfigLocation</param-name>
14             <param-value>classpath:springmvc-servlet.xml</param-value>
15         </init-param>
16         <!--启动级别设置为1:运行时启动(数字越小启动越早)-->
17         <load-on-startup>1</load-on-startup>
18     </servlet>
19 
20     <!--在spring中:/跟/*
21     /:代表匹配所有,但是不包括jsp文件
22     /*:包括了jsp文件,(如果写了/*,那么运行的时候就会循环调用hello.jsp.jsp.jsp.....)
23     -->
24     <!--所有请求都会被springmvc拦截-->
25     <servlet-mapping>
26         <servlet-name>springmvc</servlet-name>
27         <url-pattern>/</url-pattern>
28     </servlet-mapping>
29 
30 </web-app>

3.配置sprinmvc-servlet.xml文件名字跟着官方叫的

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5        http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7     <!--添加映射器:有很多这里先用这个(用bean匹配的映射器)-->
 8     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
 9 
10     <!--添加处理适配器-->
11     <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
12 
13     <!--添加视图解析器(可变):模板引擎Thymeleaf Freemarker...以后会这些被代替-->
14     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
15         <!--前缀-->
16         <property name="prefix" value="/WEB-INF/jsp/"/>
17         <!--后缀-->
18         <property name="suffix" value=".jsp"/>
19     </bean>
20 
21     <!--注册HelloController,因为使用这个BeanNameUrlHandlerMapping,所以要注册bean-->
22     <!--hello:用户访问输入的-->
23     <!--Handler-->
24     <bean id="/hello" class="com.he.controller.HelloController"/>
25 </beans>

4.编写业务Controller,这里先使用接口的方式(方便后面弄清原理)

package com.he.controller;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//导入Controller(控制器)接口
public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //ModelAndView:视图和模型
        ModelAndView mv = new ModelAndView();

        //封装对象:将放在ModelAndView中,Model
        mv.addObject("msg","HelloMVC!");

        //封装要跳转的对象:放在ModelAndView中
        mv.setViewName("hello");//WEB-INF/JSP/hello.jsp
        return mv;
    }
}

5.在WEB-INF/jsp/下编写了一个hello.jsp文件以便跳转。

1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 <html>
3 <head>
4     <title>Title</title>
5 </head>
6 <body>
7     ${msg}
8 </body>
9 </html>

6.启动tomcat进行测试

结果有可能遇到404的问题:

解决方案:在WEB-INF下建立lib文件夹,然后将相关jar包全部导入:如图

SpringMvc01-HelloSpringMvc

 

总结:创建springmvc项目

   1.创建一个maven工程,在WEB-INF下创建一个lib目录导入相应的jar包

   2.配置web.xml

   3.配置springmvc-servlet.xml文件

   4.编写Controller和service

   5.运行tomcat

 

 

 

上一篇:SpringMvc原理概述


下一篇:蚂蚁金服这套SpringMvc面试题你懂多少(面试必刷)