SpringMVC简介:
是Spring提供的一个强大而灵活的web框架。借助于注解,SpringMVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
SpringMVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图 组成。
Spring容器和SpringMVC容器是父子容器、SpringMVC容器中能够调用Spring容器的所有内容。
MVC:
M:Model V:View C:Controller
需要配置两个配置文件 一个是web.xml 和Springmvc.xml配置文件
第一步导入的jar包
第二步配置web.xml配置文件(将其请求交给SpringMVC管理)
如果不配置<init-param>的话 默认会在/WEB-INF下创建一个名为DispatchServlet-Servlet.xml的文件 名字默认的不可修改
还需要配置一个编码过滤器因为post请求会出现乱码,get在Tomcat中已经改了,如图二
<!--所有的请求由SpringMVC管理 -->
<!-- 配置:所有请求由SpringMVC管理 -->
<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>
<!--Post请求会出乱码 配置编码过滤器 -->
<filter>
<filter-name>EncodingFilter</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>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
第三步配置SpringMVC.xml配置
不需要注解开发的XML(原生)
<!--1.配置处理器映射,SpringMVC默认的处理器映射器BeanNameUrlHandlerMapping:根据bean的name属性的URL去找Controller
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--2.配置处理器适配器执行Controller-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!--3.配置一个控制器-->
<bean name="userController" class="com.lq.controller.userController"></bean>
<!--4.配置SpringMVC视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/views/"></property>
<!--后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
注解开发
@Controller:相当于标记该类 属于Controller控制器类
@RequestMapping:表示URL路径映射。 可以标记在控制器类和方法上,若标记在类上 表示类中的请求方法都是已该地址作为父路径。 用于类上,表示URL路径映射。
//该注解相当于在Spring中配置了一个<bean name="usercontroller" clas="控制器的路径"> 配置了一个控制器
@Controller
public class UserController {
@RequestMapping("/list")
public String list() {
return "/user/userlist";
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 扫描注解的位置 -->
<context:component-scan base-package="com.lq.controller"></context:component-scan>
<!-- 注解驱动
默认创建的就是 RequesMappingHandlerMapping和RequestMappingHandlerAdapter 所以配置处理器映射和配置注解处理适配器来执行控制器方法就无需写了 这个就替代了
-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 静态资源 -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
<!-- 视图解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
启动之后 访问list即可访问该JSP页面。