SSM之SpringMVC框架
SpringMVC的简介
springmvc是一个基于Java实现的 WEB MVC设计模式的请求驱动的轻量级的WEB框架。
- 使用了MVC设计模式
- 基于请求驱动:使用的是 请求-响应模式
- 对WEB层进行解耦,达到简化web开发的效果
特点:
- springmvc是spring框架的一部分,可以使用spring的功能
- 提供了一个前端控制器DispatcherServlet,开发者无需自己再开发一个控制器
- 可以支持数据绑定,并且能够正确的进行数据类型的转换
- 灵活性高,易于与其他框架整合
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.前端控制器将信息响应给浏览器
具体流程图如下:
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来接收信息