Spring MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, 即使用了 MVC 架构模式的思想,将 web 层进行职责解耦, 基于请求驱动指的就是使用请求-响应模型, 框架的目 的就是帮助我们简化开发, Spring Web MVC 也是要简化我们日常 Web 开发的。
一、spring-mvc结构
1.DispatcherServlet:中央控制器,把请求给转发到具体的控制类
2.Controller:具体处理请求的控制器
3.handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
4.ModelAndView:服务层返回的数据和视图层的封装类
5.ViewResolver & View:视图解析器,解析具体的视图
6.Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作
红色的是需要自己创建,黑色的需要配置。
二、流程处理
见下图:
三、第一个SpringMVC实例
1.创建web项目
2.导入依赖jar包
3.配置中央控制器
在web.xml中添加如下配置:
<!-- 中央转发器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 不要配置/*,否则404 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
4.配置springMVC的核心配置文件
文件的命名规则:中央控制器(servlet的名称)+"-servlet.xml"
文件位置:WEB-INF下
创建后再springmvc-servlet.xml中配置controller和视图解析器。
<!-- 配置controller -->
<bean id="myController" name="/hello.do" class="com.tgb.controller.MyController"></bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 配置后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
5.创建controller
public class MyController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("hello world~~");
return new ModelAndView("hello");
}
}
6.访问结果
总结:springMVC和之前的struts2比起来,有很多联系的地方
1.web.xml:struts2中配置的是StrutsPrepareAndExecuteFilter;而springMVC中配置的是DispatcherServlet.他们的作用大致相同,都是为了前台的url然后做统一处理;不同的是StrutsPrepareAndExecuteFilter拦截请求后执行的是doFilter方法,DispatcherServlet拦截请求后执行的是DoDispatch方法,两者性质差不多。
2.配置文件:struts2中的struts2.xml和springMVC中springmvc-servlert.xml,都是中都包含了讲请求的url和Action或Bean名字的映射功能;
3.不同之处:struts在struts2中配置不同的返回值来返回不同的视图;而springMVC中可以通过ViewResolver来规定返回视图的前缀和后缀,再视图返回的结果上自动加上我们写好的前缀和后缀来找到相应视图。