SpringMVC学习之使用注解编写SpringMVC程序

SpringMVC介绍

Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。

Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。我们这里借用狂神说的原理图及流程说明

SpringMVC学习之使用注解编写SpringMVC程序_第1张图片

执行流程

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。我们假设请求的url为 : http://localhost:8080/SpringMVC/hello 。url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
  2. HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
  3. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。
  4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
  5. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
  6. Handler让具体的Controller执行。
  7. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
  8. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
  9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet。
  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
  12. 最终视图呈现给用户。

使用注解编写SpringMVC程序

1.环境准备

建立一个普通的Maven项目,并添加Web框架支持。
首先导入依赖包



    
        junit
        junit
        4.12
    
    
        org.springframework
        spring-webmvc
        5.2.7.RELEASE
    
    
        javax.servlet
        servlet-api
        3.0-alpha-1
    
    
        javax.servlet.jsp
        jsp-api
        2.2
    
    
        javax.servlet
        jstl
        1.2
    

并设置过滤文件,保证输出配置文件



    
        
            src/main/resources
            
                **/*.properties
                **/*.xml
            
            false
        
        
            src/main/java
            
                **/*.properties
                **/*.xml
            
            false
        
    

配置完Pom.xml文件后,进入项目结构(快捷键F4),进入构建,选择当前项目,在输出布局中添加lib文件夹及导入包的依赖,目的是保证我们打完的war包中包含我们所使用的依赖包,而不会报错。

SpringMVC学习之使用注解编写SpringMVC程序_第2张图片

2.配置web.xml文件




    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc-servlet.xml
        
        
        1
    
    
        springmvc
        /
    

说明:
1.web.xml中最为核心的配置是 DispatcherServlet ,接收请求并拦截请求,控制转发。
2.init-param 需要绑定我们Spring的配置文件。
3./ 和 /* 的区别:< url-pattern > / 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。< url-pattern > /* 会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。

3.编写springmvc-servlet.xml配置文件

我们在resources下建议Spring的配置文件springmvc-servlet.xml,并在建立相应的com.tioxy.controller包。




    
    
    
    
    
    

    
    
        
        
        
        
    


说明:
1.mvc:default-servlet-handler/标签目的是保证比如 .css .js .html文件不经过视图解析器。
2.mvc:annotation-driven/标签,是注册我们适配器和映射器。
3.最后就是视图解析器,我们这里在WEB-INF目录下建jsp文件夹,并建立测试用的hello.jsp,目的是把所有的视图都存放在/WEB-INF/目录下,这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。

4.创建Controller

编写一个controller类,com.tioxy.controller.HelloController

package com.tioxy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model){
        // 封装数据
        model.addAttribute("msg","Hello.SpringMVCAnnotation!");
        return "hello";// 会被视图解析器处理,这里是要跳转视图的名字
    }
}

说明:
1.@Controller是为了让Spring IOC容器初始化时自动扫描到.
2.@RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello。
3.方法中声明Model类型的参数是为了把Action中的数据带到视图中。
4.方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。

5.创建视图层

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


    Title


 ${msg}


6.配置Tomcat并启动

输入正确的地址

SpringMVC学习之使用注解编写SpringMVC程序_第3张图片

引用说明:
狂神说Java之使用注解开发SpringMVC:https://www.bilibili.com/video/BV1aE41167Tu?p=7

你可能感兴趣的:(SpringMVC学习之使用注解编写SpringMVC程序)