栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC详解(一)概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC详解(一)概述

文章目录
  • 第一章 SpringMVC概述
    • 1.SpringMVC基本说明
    • 2. SpringMVC中的核心Servlet --DispatcherServlet
    • 3 springmvc请求的处理过程
    • 实例
      • 1. index.jsp
      • 2. other.jsp
      • 3.MyController
      • 4.StudentConroller
    • 4.复习
    • 5.web开发中配置文件的说明
      • 配置文件的加载顺序和功能

第一章 SpringMVC概述 1.SpringMVC基本说明

​ SpringMVC是基于Spring的,是Spring中的一个模块,做web开发使用的。springmvc叫做**spring web mvc **说明它是spring的核心技术,做web开发,springmvc内部使用的是mvc架构模式。

​ mybatis 是数据访问层,Spring 是 业务逻辑层 用户界面层是视图和控制器。

​ SpringMVC是一个·容器,管理对象的,使用loC核心技术。springmvc管理界面层中的控制器对象。springmvc底层也是Servlet. 以servlet为核心,接收请求,处理请求。显示处理结果给用户。

处理用户的请求:

​ 用户发起请求 ----SpringMVC ---->Spring ----MyBatis ---- mysql 数据库

2. SpringMVC中的核心Servlet --DispatcherServlet

DispatcherServlet 是框架一个 Servlet对象。 负责接收请求,响应处理结果。

DispatcherServlet 它的父类是HttpServlet。

DispatcherServlet 也叫做前端控制器(front controller)。

​ SpringMVC是管理控制器对象,原来是没有SpringMVC之前 使用 Servlet 作为控制器对象使用。现在通过SpringMVC容器创建一种叫做控制器的对象,代替Servlet行使控制器的角色。功能。

​ SpringMVC主要使用注解的方式创建。

idea2019自动生成的web.xml不支持el表达式 格式替换为



  


3 springmvc请求的处理过程

简单的处理过程:

用户发起请求some.do—>Tomcat接收了请求 —> DispatcherServlet ----分配MyController(doSome()返回mv对象)—显示给用户了。

省略tomcat

用户some.do-----DispatcherServlet-------MyController

多了DispatcherServlet 才能在请求中增加功能。

如果使用servlet处理请求

用户发起请求-------没有其他对象------------Servlet

PS: WEB-INF 是受保护的目录,浏览器是无法访问的。在项目中受保护页面可能非常多,可以新建子包来存储受保护的页面文件 比如包名为“jsp”

http://localhost:8080/ch01_springmvc/WEB-INF/view/show.jsp 这个网址在浏览器中不能访问

http://localhost:8080/ch01_springmvc/index.jsp 点击超链接跳转到 http://localhost:8080/ch01_springmvc/some.do展示的页面就是/WEB-INF/view/show.jsp

实例

index.jsp 中包含index.jsp 中有 some.do other.do add.do 控制器

DispatherServlet中央调度器(收集请求) 他是一个Servlet对象 有doGet doPost service() init() 将请求分派给控制器。

MyConroller控制器 对应some.do other.do

StudentController控制器 add.do

1. index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    第一个springmvc


    发起some.do的请求
    
/test/second.do
add.do请求
2. other.jsp

​ "show.jsp"对应了controller 中的ModelAndView(视图解析器)中的 mv.setViewName(“show”);也就是说当Controller收到请求后,进行处理,处理完成跳转 show.jsp。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    show


    /WEB-INF/view/other.jsp,显示request作用域中的数据
msg数据: ${msg} fun数据: ${fun}
3.MyController
package com.sunny.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
     *
     *返回值 ModelAndView :表示本次请求的处理结果(数据和视图)
     *      Model:表示数据
     *      View:表示视图
     *
     * */
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(){  //doGet()
        System.out.println("执行了MyController的doSome方法");
//        使用这个方法处理请求。能处理请求的方法叫做控制器方法
//        调用service对象,处理请求,返回数据
        ModelAndView mv = new ModelAndView();
//        添加数据
        mv.addObject("msg","处理了some.do请求");
        mv.addObject("fun","执行了doSome方法");

//        指定视图,setViewName("视图的完整路径")
//        mv.setViewName("/WEB-INF/view/show.jsp");
//        mv.setViewName("/WEB-INF/view/other.jsp");

//        当配置了视图解析器,使用文件名称作为视图名使用,叫做视图逻辑名称。
//        使用了逻辑名称,框架使用配置文件中视图解析器的前缀和后缀,拼接为完整视图路径
//        /WEB-INF/view/   +  show   +  .jsp
        mv.setViewName("show");

//        返回结果
        return mv;

    }
 
     * 当框架调用完doSome()方法后,得到返回中ModelAndView.
     * 框架会在后续的处理逻辑值  处理mv对象里面的数据和视图。
     * 对数据执行 mv.addObject("msg","处理了some.do请求"); 把数据放入到request作用域。
     * 对视图执行forward转发操作。等同于 request.getRequestDispather("/show.jsp").forward(..)
     * */
    @RequestMapping(value = {"/other.do","/test/second.do"})
    public ModelAndView doOther(){  //doGet()
        System.out.println("执行了MyController的doSome方法");
//        使用这个方法处理请求。能处理请求的方法叫做控制器方法
//        调用service对象,处理请求,返回数据
        ModelAndView mv = new ModelAndView();
//        添加数据
        mv.addObject("msg","处理了other.do请求");
        mv.addObject("fun","执行了doOther方法");


        mv.setViewName("other");

//        返回结果
        return mv;

    }
}

4.StudentConroller
package com.sunny.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class StudentController {

    @RequestMapping(value = "/add.do")
    public ModelAndView addStudent(){
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","注册成功");
        mv.setViewName("show");
        return mv;
    }
}

4.复习

​ 复习:使用springmvc做web项目 首先加依赖,加入springmvc的依赖就已经把spring其他的依赖加进来了,因为springmvc就是spring的一个模块,把servlet交给了springmvc容器进行管理。这里提到了中央调度器。

DispatcherServlet作用:

​ 1.在init()中创建springmvc的容器对象 WebApplicationContext。创建springmvc配置文件种的所有java对象,java对象就是Controller对象。

​ 2.DispatcherServlet是一个Servlet,能够接收请求。

​ 用户发起some.do—DispatcherServlet(Servlet接收请求) —转给MyController

模拟中央调度器的代码。

public class DispatcherServlet extends HttpServlet{
    
    public void service(HttpServletRequest request,HttpServletResponse response){
        if("some.do".equals(request.getURI() ) ){
            //从容器中获取MyController
            MyController c = ctx.getBean("some");
            c.doSome();
        }else if("other.do".equals( request.getURI() ) ){
            OtherController c = ctx.getBean("some");
            c.doOther();
        }
    }
}
5.web开发中配置文件的说明
  1. web.xml 部署描述符文件,给服务器(tomcat)。

    ​ 作用:服务器在启动的时候,读取web.xml,根据文件的声明创建各种对象,根据文件中的声明知道请求和Servlet等对象的关系;

  2. 框架的配置文件,springmvc的配置文件

    ​ 作用:声明框架创建的项目中的各种对象,主要是创建Controller对象的。

配置文件的加载顺序和功能

​ 1.tomcat服务器启动,读取web.xml。根据web.xml文件中的说明,创建对象。




    
      myweb
      org.springframework.web.servlet.DispatcherServlet

        
            contextConfigLocation
            classpath:springmvc.xml
        

        1
    
    
      myweb

      *.do
    


​ 创建DispatcherServlet他的对象,会执行init()方法。在init()方法中会执行springmvc容器对象创建,WebApplicationContext ctx = new ClassPathXmlApplicationContext(“classpath:springmvc.xml”);

  1. springmvc框架,new ClassPathXmlApplicationContext() 读取springmvc的配置文件。

    

    

        

        
    

​ 使用组件扫描器 base-package=“com.bjpowernode.controller” ,遍历controller包中的所有类,MyController类,找到这个类中的@Controller , @RequestMapping注解,就能创建MyController对象。直到some.do的请求执行doSome()方法。

​ 以上 1,2都是项目启动的过程,没有执行任何的用户请求。

3.用户发起请求some.do------>DispatcherServlet

​ DispatcherServlet 里面有WebApplicationContext。WebApplicationContext里面有MyController对象。

​ 请求some.do,DispatcherServlet 就知道 MyController处理的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号