SSM之SpringMVC框架

 

 SpringMVC的简介

springmvc是一个基于Java实现的 WEB MVC设计模式的请求驱动的轻量级的WEB框架。

  1. 使用了MVC设计模式
  2. 基于请求驱动:使用的是 请求-响应模式
  3. 对WEB层进行解耦,达到简化web开发的效果

特点:

  1. springmvc是spring框架的一部分,可以使用spring的功能
  2. 提供了一个前端控制器DispatcherServlet,开发者无需自己再开发一个控制器
  3. 可以支持数据绑定,并且能够正确的进行数据类型的转换
  4. 灵活性高,易于与其他框架整合

SpringMVC的工作流程

1.Brower浏览器 发出请求到 前端控制器

前端控制器 DispatcherServlet,称为*控制器。

作用:负责处理请求响应,通过调用其他组件完成

2.前端控制器把请求 转发给  映射器

处理器映射器 HandlerMapping

功能:根据请求url去查找处理器或者是拦截器

3.映射器将查找结果返回给前端控制器

4.前端控制器调用适配器

处理器适配器 HandlerAdapter

功能:适配执行不同的处理器,数据格式转换、数据绑定等

5.处理器适配器 执行处理器

 处理器 Handler        自己开发的controller

6.处理器 返回 ModelAndView到处理器适配器

7.处理器适配器将ModelAndView返回到前端控制器

8.前端控制器将ModelAndView转给视图解析器 

视图解析器 ViewResolver         作用:把视图信息解析为真正的视图

9.视图解析器将视图信息返回到前端控制器 

10.前端控制器进行数据渲染,把model数据渲染到View视图上

11.前端控制器将信息响应给浏览器

具体流程图如下:

SSM之SpringMVC框架


springMVC入门程序

1.新建web项目,导入jar包

2.配置前端控制器 web.xml

  <!-- 前端控制器 -->
  <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>*.do</url-pattern>
  	<!-- 
  		*.do :以 .do结尾的请求都进行处理
  		/ :处理所有的请求,包括静态资源也会被拦截
  	 -->
  </servlet-mapping>

3.配置springmvc.xml

	<!-- 处理器映射器 作用:请求url查询处理器
		BeanNameUrlHandlerMapping:根据bean的名字与url进行匹配
		localhost:8080/springmvc01/first.do
	 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	
	<!-- 处理器适配器 作用:适配不同类型的处理器并且执行
			SimpleControllerHandlerAdapter:适配执行,实现了Controller接口的处理器
	 -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
	
	<!-- 处理器bean -->
	<bean id="fc" class="com.cbb.controller.FirstController" name="/first.do"></bean>
	<!-- 视图解析器: 作用:解析成真正的视图
		InternalResourceViewResolver: Jsp视图解析器
	 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsps/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

4.开发一个处理器

public class FirstController implements Controller {


	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 新建一个ModerAndView对象,往里面填充model和view视图信息尽心返回
		ModelAndView mv = new ModelAndView();
		mv.addObject("msg","这是第一个");
		mv.setViewName("user");
		return mv;
	}

}

5.新建一个jsp来显示信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    ${msg}

</body>
</html>

springmvc注解开发

1.前端控制器  web.xml如上

2.配置springmvc.xml

	<context:component-scan base-package="com/cbb.controller"></context:component-scan>
	<!-- 注解开发 -->
	<!-- 支持注解的处理器、映射器
		支持的注解为@RequestMapping
	 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
	
	<!-- 支持注解的 处理器适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsps/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

3.自己开发的处理器

@Controller
public class FirstController {
	
	@RequestMapping(value="/one.do")
	public ModelAndView one() {
		ModelAndView mv = new ModelAndView();
		mv.addObject("msg","这是springmvc注解开发!");
		mv.setViewName("user");
		return mv;
	}
}

4.新建一个jsp来接收信息