天天看点

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序

目录

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项目

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序
SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序

 2.2 在pom.xml中加入相关依赖

<!-- springmvc依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>
           
<!-- servlet依赖 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
           
<!-- jsp依赖 -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
</dependency>
           

2.3 在web.xml中声明DispatcherServlet对象

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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">
<!--声明springmvc的核心对象
        访问mymvc地址后,报错,文件没有找到。找到文件是/WEB-INF/springmvc-servlet.xml或者myweb-servlet.xml(这个)
        错误原因:在Servlet的init()方法中,创建springmvc使用的容器对象WebApplicationContext
        WebApplicationContext ctx=new ClassPathXmlApplicationContext(配置文件)
        配置文件的默认路径:/WEB-INF/<servlet-name>-servlet.xml

        DispatcherServlet作用:
        1.在init()中创建springmvc的容器对象 WebApplicationContext,创建springmvc配置文件的所有Java对象。
            java对象就是Controller对象
        2.DispatcherServlet 是一个Servlet,能够接受请求。
-->
    <servlet>
        <servlet-name>springmvc</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>

<!--        在服务器启动时候创建对象,和容器的顺序    在启动时装载对象 随意给个值要求大于等于0  数值越小,创建的越早-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
<!--        url-pattern 作用:把一些请求交给servlet处理   就例如将/mymvc交给springmvc处理
            使用中央调度器(DispatcherServlet)  1.使用扩展名方式,格式/*.xxx  例如:xxx.xml表示以xml结尾的都算
-->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>
           

2.4 创建一个发起请求的jsp页面(index.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个springmvc</title>
</head>
<body>
    <a href="some.do" target="_blank" rel="external nofollow" >发起一个som.do的请求</a> 
</body>
</html>
           

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" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        /show.jsp,显示request作用域中的数据<br>
        <h2>msg数据:<%=request.getAttribute("msg")%></h2>
        <h2>fun数据:${fun}</h2>
</body>
</html>
           

2.7 创建springmvc的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">
<!--spring的配置文件  声明组件扫描器-->
    <context:component-scan base-package="com.liuhaiyang.controller"/>
<!--    声明视图解析器;帮助处理视图  主要帮助我们处理重复的多余的冗余路径等-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--        前缀:指定试图文件的路径-->
        <property name="prefix" value="/WEB-INF/view/"/>
<!--        后缀,试图文件的扩展名-->
        <property name="suffix" value=".jsp"/>  <!--表示所有的jsp文件-->
    </bean>
</beans>
           

2.8 配置Tomcat并且启动测试

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序
SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序

2.9 目录结构

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序

 3.使用SpringMVC框架处理web请求的顺序

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序

SpringMVC 执行流程

SpringMVC——SpringMVC框架基本概述1.SpringMVC框架概述2.第一个注解的SpringMVC程序 3.使用SpringMVC框架处理web请求的顺序