SpringMVC框架从入门到入土(一):初来乍到认识SpringMVC

SpringMVC框架从入门到入土(一):初来乍到认识SpringMVC

  • 是基于spring的一个框架,实际上就是spring的一个模块,专门做web开发的。

  • 是servlet的一个升级

  • web开发底层是servlet,框架是在servlet基础上加入的一些功能,让做web开发更加方便。

  • 实际上就是一个spring,是一个容器,创建和管理对象。

  • 我们要做的是使用@Controller对象,把对象放进springMVC容器中,把创建的对象作为控制器使用,这个控制器对象可以接收用户的请求,可以显示处理结果,当作一个servlet来使用。

  • 使用@Controller注解创建的是一个普通类对象,不是servlet,springmvc赋予了控制器对象一些额外的功能。

  • web的开发底层是servlet,springmvc中有一个对象,DispatherServlet

    DispatherServlet:负责接收用户的所有请求,用户把所有的请求给了DispatherServlet,之后DispatherServlet把请求转发给Controller对象,最后是Controller处理请求。

Web开发步骤

需求:用户在页面发起一个请求,请求交给springmvc的控制器对象,并显示请求处理的结果。

实现步骤:

  1. 新建web的maven工程
  2. 加入依赖(spring-webmvc依赖,间接吧spring依赖加入到项目,jsp,servlet)
  3. 重点:在web.xml文件中注册springmvc框架的核心对象DispatherServlet
    • DispatherServlet叫做中央调度器,是一个servlet,父类是集成HttpServlet
    • DispatherServlet页叫做前端控制器(front controller)
    • DispatherServlet负责接收用户提交的请求,调用其他的控制器对象,并把请求的处理结果显示给用户。
  4. 创建一个发起请求的页面,index.jsp
  5. 创建控制器类
    • 在类上面加入@Controller注解,创建对象,并放入到springmvc的容器中
    • 在类的方法上面加入@RequestMapping注解
  6. 创建一个结果jsp,显示处理请求结果
  7. 创建springmvc的配置文件(和spring的配置文件一样)
    • 声明组件扫描器。指定@Controller注解所在的包
    • 声明视图解析器,帮助处理视图

程序实现部分代码:

  1. 依赖项
    <!--servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!--springmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
  1. 请求页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求页面</title>
</head>
<body>
<h1>第一个springmvc的请求页面</h1>
<hr/>
<p><a href="some.do">发起请求</a></p>
</body>
</html>
  1. controller层
package com.liar.controller;

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

/**
 * @author liar
 * @date 编写时间: 2022/4/9 15:39
 * @Controller 创建处理器对象,对象放在spring容器中
 * 位置:在类的上面
 */
@Controller(value = "myController")
public class MyController {

    /*
     * 处理用户的请求,springmvc中是使用方法来处理的
     * 方法是自定义的可以有多种返回值,多种参数,方法名称自定义
     */
    /**
     * 准备使用doSome方法来处理some.do请求
     * @RequestMapping: 请求映射,作用是把一个请求和一个方法绑定在一起。一个请求指定一个方法处理
     * 属性:1. value 是一个String,表示请求的url地址(some.do),value的值是唯一的,不能重复
     *      2. 在使用的时候,推荐地址以“/”
     * 位置:1. 在方法的上面,常用的
     *      2. 在类的上面
     *
     * 返回值:ModelAndView 表示本次请求处理的结果
     * Model:数据,请求处理完成后,要显示给用户的数据
     * View:视图,比如jsp
     */
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(){
        //处理some.do的请求,相当于service调用处理完成了
        ModelAndView mv = new ModelAndView();
        //添加数据,框架在请求的最后把数据放入到request作用域
        mv.addObject("msg","欢迎使用springmvc开发");
        mv.addObject("fun","执行的是doSome方法");

        //指定视图
        mv.setViewName("/show.jsp");
        return mv;
    }

}
  1. spring配置文件
<?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">


<!--声明组件扫描器-->
    <context:component-scan base-package="com.liar.controller"/>

</beans>
  1. 结果页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>结果页面</title>
</head>
<body>
<h3>show.jsp从request作用域获取数据</h3><br/>
<h3>msg数据:${msg}</h3>
<h3>fun数据:${fun}</h3>
</body>
</html>
  1. 测试结果

在这里插入图片描述

程序的部分解释和改进

请求处理过程

image-20220410001303924

  • tomcat启动,创建容器的过程。

    通过load-on-start标签指定的1,创建DispatcherServlet对象,它的父类是继承HttpServlet的,被创建的时候执行init()方法

    上面创建容器的作用:创建@Controller注解所在的类的对象,创建MyController对象。这个对象放入到springmvc的容器中,容器是map类似map.put()

  • 请求处理

    1. 执行servlet的service方法中的doDispatch()方法
    2. 在这个方法中会调用MyController的.dosome方法

配置视图解释器

将视图页面存到WEB-INF下面。

在spring配置文件中配置视图解释器:

    <!--配置视图解释器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀:视图文件的路径-->
        <property name="prefix" value="/WEB-INF/view/"/>
        <!--后缀:视图文件的拓展名-->
        <property name="suffix" value=".jsp"/>
    </bean>

代码改进:直接使用文件名

        //指定视图
        //mv.setViewName("/show.jsp");
        //当配置了视图解释器之后,可以使用逻辑名称(文件名),指定视图
        //框架会使用视图解释器的前缀+逻辑名称+后缀完成路径。其实就是字符串的拼接
        mv.setViewName("show");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值