SpringMVC是Spring的一个子模块用于在项目中的控制层,也就是对于serverlet的替代品。
搭建springMVC工程流程
1,创建maven工程,在pom文件中标注出所需的jar包。
<!-- 此项目需要的依赖管理 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
2,在web.xml中配置拦截所有请求,让所有请求都去请求
<servlet>
<servlet-name>dispatcher</servlet-name>
<!-- spingmvc的前端控制器 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 在启动web的时候去加载这个配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springContext.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>
3,创建spring配置文件,开启注解开发模式,配置视图解析器
<context:annotation-config />
<!-- spring的包扫描 -->
<context:component-scan base-package="controller"/>
<context:component-scan base-package="service"/>
<!-- 开启aop注解方式,此步骤s不能少,这样java类中的aop注解才会生效
<aop:aspectj-autoproxy/> -->
<bean id="sqlSession" class="util.MySqlSessionFactory" factory-method="getSqlsession" scope="prototype">
</bean>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 文件前缀 -->
<property name="prefix">
<value>/views/</value>
</property>
<!-- 文件后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
4,在工程中创建controller,在controller中使用@requestMapping标注访问路径,并且使用@controller把此类交给spring容器进行管理。
//注解:
@requestMapping
此注解用来标注此方法的web访问路径、
Method属性是请求方式
Value是请求路径、
@RequestParam
此注解是用来取前台传入的参数的。
required属性用来标注此参数是否为必传,当是true 的情况下,不传此参数会报400错误。如果为false则可以不传此参数,默认是true,如果设置了默认值,则此注解失效。
DefaulteValue为给该标注的参数设置默认值,当前台不传入该参数的时候,此注解生效给参数注入默认值。
value为前台的参数名称
springMVC的流程或者原理。
整个处理过程从一个HTTP请求开始:
1.Tomcat在启动时加载解析web.xml,找到spring mvc的前端总控制器DispatcherServlet,并且通过DispatcherServlet来加载相关的配置文件信息。
2.DispatcherServlet接收到客户端请求,找到对应HandlerMapping,根据映射规则,找到对应的处理器(Handler)。
3.调用相应处理器中的处理方法,处理该请求后,会返回一个ModelAndView。
4.DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器),根据视图解析器的配置,DispatcherServlet将要显示的数据传给对应的视图,最后显示给用户。
重要组件说明:
前端控制器/核心控制器(DispatcherServlet):接收请求,响应结果,
处理器映射器(HandlerMapping):根据URL去查找处理器(handler)(也是controller中方法)
处理器(Handler):(需要程序员去写代码处理逻辑的)也就是controller
处理器适配器(HandlerAdapter):通过HandlerMapping查找到的handler,进行执行对应的handler。
视图解析器(ViewResovler):进行视图解析,以及返回的字符串,进行处理,可以解析成对应的页面