SpringMVC源码阅读入门

1.导入SpringWebMVC是基于ServletAPI构建的原始Web框架,从一开始就包含在Spring框架中。正式的名称“SpringWebMVC”来自于它的源模块(spring-webmvc)的名称,常被人们称为“SpringMVC”。本文通过一个简单的增删改查demo切入,对SpringMVC源码进行解读,SpringFramework版本是4.3.72.前期准备2.1项目组成Intel...

SpringMVC源码阅读入门

1.导入

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。正式的名称“Spring Web MVC”来自于它的源模块(spring-webmvc)的名称,常被人们称为“Spring MVC”。

本文通过一个简单的增删改查demo切入,对SpringMVC源码进行解读,Spring Framework版本是4.3.7

2.前期准备

2.1 项目组成

IntelliJ IDEA 2017.1,JDK1.8,Spring4.3.7,Hibernate 4.3.8,其余组件可以在pom.xml找到

项目文件目录如下:

2.2 导入Demo

源码请点击这里,在idea中导入

输入git容器地址,点击clone

要让idea识别这是Web项目,打开File->Project Structure,一般idea会自动检测配置文件,提示你设置为spring配置文件,我们也可以手动添加

再选中Web,将WEB-INF下的web.xml选中,并识别webapp根目录(idea会帮我们自动配置)

将Modules打成war_exploded

初始化数据,sql文件在/sql下,先运行table.sql,再运行init.sql

配置Tomcat,网上教程很多,不再赘述

3.实例

为web.xml配置入口Servlet

contextConfigLocation是上下文位置,读取了我们的spring上下文配置文件

设置了编码过滤器CharacterEncodingFilter

我们还配置了DispatcherServlet,这是SpringMVC的核心类,后续我们会详细讲解,url-pattern配置"/","/"代表映射所有请求地址,如Controller请求路径/user/login,而不包括*.jsp,*.ftl等

<?xml version="1.0" encoding="UTF-8"?><!--suppress ALL --><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"> <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:springConfig/applicationContext.xml</param-value> </context-param> <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter>  <filter-name>Set Character Encoding</filter-name>  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  <init-param><param-name>encoding</param-name><param-value>UTF-8</param-value>  </init-param>  <init-param><param-name>forceEncoding</param-name><param-value>true</param-value>  </init-param> </filter> <filter-mapping>  <filter-name>Set Character Encoding</filter-name>  <url-pattern>/*</url-pattern> </filter-mapping> <servlet>  <servlet-name>dispatcher</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springConfig/dispatcher-servlet.xml</param-value>  </init-param>  <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>  <servlet-name>dispatcher</servlet-name>  <url-pattern>/</url-pattern> </servlet-mapping>  <welcome-file-list>  <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>

写一个简单的Controller

@Controller代表这个类是个Controller,在dispatcher-servlet.xml中被<context:component-scan base-package="org.format.demo.controller" />扫描到,并识别成是"Controller",在Spring容器中初始化

@RequestMapping意思是请求映射,@RequestMapping("/")中的"/"的意义就是contextPath后面的路径;也就是 http://host:port/contextPath

源文地址:https://www.guoxiongfei.cn/cntech/8781.html