啥是springMVC?
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不会直接处理请求。而是调用业务层的方法进行处理,而业务层调用持久层,通过Spring的依赖注入功能,这些bean被注入到控制器中。 springMVC是SSM中的s之一。
springMVC中的组件
1、DispatcherServlet为前端控制器,它的作用相当于CPU,一切的工作活动都由这个前端控制器来控制。所有的请求都有经过它来统一分发。 2、HandlerMapping 为处理器映射器,为用户请求的url,能够完成客户请求到Controller映射。 。 3、HandlerAdapyer 为处理器适配器,找到对应controller。 4、ViewResolver 为视图解析器解析View对象,返回给前端的视图页面。
springMVC原理图
springMVC的真正内部执行过程是这样的。
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
< web-app>
< display-name> Archetype Created Web Application</ display-name>
< servlet>
< servlet-name> dispatcherServlet</ servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet</ servlet-class>
< init-param>
< param-name> contextConfigLocation</ param-name>
< param-value> classpath:springMVC.xml</ param-value>
</ init-param>
< load-on-startup> 1</ load-on-startup>
</ servlet>
< servlet-mapping>
< servlet-name> dispatcherServlet</ servlet-name>
< url-pattern> /</ url-pattern>
</ servlet-mapping>
</ web-app>
在启动tomcat的时候,服务器解析web.xml中的文件,取到前端控制器dispatcherServlet,其实前端控制器就是一个servlet,这里servlet-mapping标签配置的是我们前端控制器要拦截的的路径,这里的/表示所有的路径。init-param标签里面是需要初始化的文件,这里就初始化了springMVC.xml这个配置springMVC的文件。 一般我们还在web.xml中加入解决中文乱码的配置文件
< filter>
< filter-name> characterEncodingFilter</ 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>
</ filter>
< filter-mapping>
< filter-name> characterEncodingFilter</ filter-name>
< url-pattern> /*</ url-pattern>
</ filter-mapping>
springMVC.xml这个文件
<?xml version="1.0" encoding="UTF-8"?>
< beans xmlns = " http://www.springframework.org/schema/beans"
xmlns: mvc= " http://www.springframework.org/schema/mvc"
xmlns: context= " http://www.springframework.org/schema/context"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= "
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
" >
< context: component-scan base-package = " com.spring" > </ context: component-scan>
< bean id = " internalResourceViewResolver" class = " org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name = " prefix" value = " /WEB-INF/pages/" > </ property>
< property name = " suffix" value = " .jsp" > </ property>
</ bean>
< bean id = " multipartResolver" class = " org.springframework.web.multipart.commons.CommonsMultipartResolver" >
< property name = " maxUploadSize" value = " 10485760" />
</ bean>
< bean class = " org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping" abstract = " true" />
< bean class = " org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -
< mvc: annotation-driven />
< mvc: resources mapping = " /css/*" location = " resources/css/" />
< mvc: resources mapping = " /js/*" location = " resources/js/" />
< mvc: resources mapping = " /images/*" location = " resources/images/" />
</ beans>
第一个点:扫描对应的包context:component-scan,以完成Bean创建和自动依赖注入的功能 。这里利用了spring的注入,注解注入。 第二个点:bean id=“internalResourceViewResolver” 视图解析器,用于渲染页面返回页面,第一个property指的是对应的文件夹下,第二个代表后缀。 mvc:annotation-driven 为开启springMVC框架的注解的支持-。 mvc:resources为配置静态资源,那些静态资源可以通过。
在加载springMVC文件的时候这些都解析了。只要来一个请求就会直接执行。
Controller
package com. spring. controller;
import org. springframework. stereotype. Controller;
import org. springframework. web. bind. annotation. RequestMapping;
import java. util. UUID;
@Controller
@RequestMapping ( path = "con" )
public class controller {
@RequestMapping ( path = "test" )
public String test ( ) t {
return "success" ;
}
}
根据路径来执行每个方法。然后返回一个success.jsp,这里就经过了视图解析器,最终稿返回到前端页面(客户端)。