SpringMVC——SpringMVC框架基本概述
6587
目录
1.SpringMVC框架概述
1.1 SpringMVC框架的基本说明
1.2 SpringMVC 框架的优点
1.3 SpringMVC实现步骤
2.第一个注解的SpringMVC程序
2.1 IDEA中使用maven创建一个web项目
2.2 在pom.xml中加入相关依赖
2.3 在web.xml中声明DispatcherServlet对象
2.4 创建一个发起请求的jsp页面(index.jsp)
2.5 创建一个普通的类,作为控制器使用,代替之前的servlet
2.6 创建显示处理结果的jsp页面(webapp\WEB-INF\view\show.jsp)
2.7 创建springmvc的配置文件
2.8 配置Tomcat并且启动测试
2.9 目录结构
3.使用SpringMVC框架处理web请求的顺序
1.SpringMVC框架概述
1.1 SpringMVC框架的基本说明
SpringMVC是基于Spring的,是Spring中的一个模块,专门用来做web开发使用的。
SpringMVC 也叫 Spring web mvc。是 Spring 框架的一部分,是在Spring3.0 后发布的。基于 MVC 架构,功能分工明确、解耦合。
SpringMVC也是一个容器,使用IoC核心技术,管理界面层中的控制器对象。SpringMVC的底层就是servlet,以servlet为核心,接收请求、处理请求,显示处理结果给用户。在此之前这个功能是由Servlet来实现的,现在使用SpringMVC来代替Servlet行驶控制器的角色和功能。
其核心Servlet是:DispatcherServlet
1.2 SpringMVC 框架的优点
优点:
1. 基于 MVC 架构,功能分工明确。解耦合。
2.容易理解,上手快;使用简单。就可以开发一个注解的 SpringMVC 项目,SpringMVC 也是轻量级的,jar 很小。不依赖的特定的接口和类。
3.作为 Spring 框架一部分,能够使用 Spring 的 IoC 和 Aop。方便整合Strtus,MyBatis,Hiberate, JPA 等其他框架。
4.SpringMVC 强化注解的使用,在控制器,Service,Dao 都可以使用注解。方便灵活。使用@Controller 创建处理器对象,@Service 创建业务对象,@Autowired 或者@Resource 在控制器类中注入 Service, Service 类中注入Dao。
1.3 SpringMVC实现步骤
servlet 的实现方式: jsp发起-----servlet-----jsp显示结果
步骤:1)创建web应用
2)加入web依赖 Spring-webmvc(springmvc框架依赖) ,servlet依赖
3)声明springmvc核心对象DispatcherServlet
1.DispatcherServlet是一个servlet对象
2.DispatcherServlet叫做前端控制器(front controller)
3.DispatcherServlet作用:在servlet的init()方法中,创建springmvc中的容器对象 作为servlet,接收请求
4)创建一个jsp,发起请求
5)创建一个普通类,作为控制器使用(代替之前的servlet)
1.在注解上面加入@Controller注解
2.在类中定义方法,方法上面加入@RequestMapping注解方式处理请求,相当于servlet得doGet,doPost
6)创建作为结果得jsp页面
7)创建springmvc得配置文件(spring的配置文件一样)
1.声明组件扫描器,指定@Controller注解所在的包名
2.声明视图解析器对象
2.第一个注解的SpringMVC程序
2.1 IDEA中使用maven创建一个web项目
2.2 在pom.xml中加入相关依赖
2.3 在web.xml中声明DispatcherServlet对象
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
2.4 创建一个发起请求的jsp页面(index.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
2.5 创建一个普通的类,作为控制器使用,代替之前的servlet
package com.liuhaiyang.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/** @Controller: 创建控制器(处理器)对象
* 控制器:叫做后端控制器(back controller),自定义的类处理请求的。
* 位置:在类的上面,表示创建此类的对象,对象放在springmvc的容器中
*
*/
@Controller
public class MyController {
/*
Springmvc框架使用 ,使用控制器类中的方法,处理请求
方法的特点: 1.方法的形参,表示请求中的参数 2.方法的返回值,表示本次请求的处理请求
*/
/**
* @RequestMapping :请求映射
* 属性:value 请求中的uri地址,唯一值,以"/"开头
* 位置:1.在方法上面(必须) 2.在类定义的上面(可选)
* 作用:指定的请求,交给指定的方法处理,等同于url-pattern(个人理解 相当于可以做doget相关的操作)
* 返回值ModelAndView:表示本次请求的处理结果(数据和视图) model:表示数据 view:表示视图
*/
//可以在一个类中定义多个方法使用多个@RequestMapping注解
@RequestMapping(value = {"/some.do","/first.do"}) //value是一个数组,可以有多个值,相当于将该方法起一个名字
public ModelAndView doSome(){ //doGet()
//使用这个方法处理请求,能够处理请求的方法叫做控制器方法
//调用service对象,处理请求,返回数据
ModelAndView mv=new ModelAndView();
//添加数据
mv.addObject("msg","在ModelAddView中处理了some.do的请求");
mv.addObject("fun","执行了dosome的方法");
//指定视图,setviewName("视图路径") 相当于请求转发request.getRequestDis...("/show.jsp").forward(..)
// mv.setViewName("/WEB-INF/view/show.jsp");
//当配置了视图解析器,使用文件名称作为视图名使用,叫做视图逻辑名称
//使用了逻辑名称,框架使用配置文件中视图解析器的前缀和后缀,拼接为完整地视图路径 ,例如/WEB-INF/view/ + show + .jsp
mv.setViewName("show");
/*
当框架调用完dosome方法后,得到返回中modelandview 框架会在后续的处理逻辑值,处理mv对象里的数据和视图
对数据执行requert,setAttribute(“msg”,“处理了some.do请求”);把数据放到request作用域中
对视图进行转发操作
*/
return mv;
}
}
2.6 创建显示处理结果的jsp页面(webapp\WEB-INF\view\show.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
/show.jsp,显示request作用域中的数据
msg数据:<%=request.getAttribute("msg")%>
fun数据:${fun}
2.7 创建springmvc的配置文件
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 https://www.springframework.org/schema/context/spring-context.xsd">
2.8 配置Tomcat并且启动测试
2.9 目录结构
3.使用SpringMVC框架处理web请求的顺序
SpringMVC 执行流程