SpringMVC笔记:Hello world


SpringMVC是Spring Framework的一部分,是基于Java实现的轻量级MVC Web框架,SpringMVC框架主要围绕DispatcherServlet(Servlet调度)进行设计的,会将收到的请求使用DispatcherServlet分发到不同的Controller进行处理。SpringMVC特点:

  • 轻量级,简介灵活,也简单易学。
  • 是一个基于请求和响应的MVC框架,非常高效。
  • 与Spring兼容性非常好。
  • 约定大于配置。
  • 功能强大,支持RESTful风格、数据校验、数据格式化、拦截器等。

Hello world示例

此示例中使用的是原始的方式,即实现Controller接口的方式,可以更加直观的体现SpringMVC的执行流程和原理,但是实际上,平常工作中更多的是使用注解来进行开发。

pom配置

以下只是列了常用的pom配置和可能需要的一些依赖,实际运行时也可以自己调整依赖的版本和添加其他的配置和依赖。


	
		junit
		junit
		4.12
		test
	
	
		org.springframework
		spring-webmvc
		5.1.9.RELEASE
	
	
		javax.servlet
		servlet-api
		2.5
	
	
		javax.servlet.jsp
		jsp-api
		2.2
	
	
		javax.servlet
		jstl
		1.2
	
	
		org.projectlombok
		lombok
		1.16.10
	
	
		com.fasterxml.jackson.core
		jackson-databind
		2.13.1
	
	
		com.alibaba
		fastjson
		1.2.79
	



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

web.xml配置

给module添加了web支持之后,就会在 web/WEB-INF 目录下生成web.xml文件。

<?xml version="1.0" encoding="UTF-8"?>


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

    
    
        springmvc
        /
    


Spring配置文件

在web.xml中指定了Spring配置文件之后,接下来自然就需要继续配置Spring了。

<?xml version="1.0" encoding="UTF-8"?>


    
    
    
    

    
    
        
        
        
        
        
    

    
    


实现Controller接口

由于Spring配置文件中配置了对应请求的Controller处理器,所以实现了Controller接口之后,来自浏览器的请求就会先经过接口的handleRequest进行处理,处理之后再进入到jsp页面,最后再返回给浏览器。

package com.yun.controller;

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

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

public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mv = new ModelAndView();
        // 设置在ModelAndView对象里的数据,可以直接在jsp文件中以${msg}的方式拿到
        mv.addObject("msg", "HelloSpringMVC!");
        // 由于在Spring配置文件中配置了前缀和后缀,这里返回hello之后就会自动映射到/WEB-INF/jsp/hello.jsp
        mv.setViewName("hello");
        return mv;
    }
}