spring-mvc(1):Hello World

虽然目前大多数都是使用springboot来开发java程序,或者使用其来为其他端提供接口,而为其他端提供接口,这些功能都是依靠springmvc实现的,所以有必要学习一下spring-mvc,这样才能更好的学习springboot。

一,Hello World

springMvc的第一篇,先来使用springMvc来创建一个项目,把它部署到Tomcat,然后发起请求,在网页上显示Hello World。熟悉一下springMvc的使用。

1,创建Maven项目

创建时选中使用模板创建
spring-mvc(1):Hello World_第1张图片
spring-mvc(1):Hello World_第2张图片

2,添加依赖



<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springmvc-parentartifactId>
        <groupId>com.chengroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>01-helloworldartifactId>
    <packaging>warpackaging>

    <name>01-helloworld Maven Webappname>
    
    <url>http://www.example.comurl>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
    properties>

    <dependencies>
            
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webmvcartifactId>
                <version>5.3.6version>
            dependency>
            
            <dependency>
                <groupId>jakarta.servletgroupId>
                <artifactId>jakarta.servlet-apiartifactId>
                <version>5.0.0-M1version>
                <scope>providedscope>
            dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
            <scope>testscope>
        dependency>
    dependencies>
project>

3,配置web.xml

web.xml在项目创建完成时的版本可能太低,需要替换高版本的。
spring-mvc(1):Hello World_第3张图片
spring-mvc(1):Hello World_第4张图片
先删除旧的低版本
spring-mvc(1):Hello World_第5张图片
添加新版本
spring-mvc(1):Hello World_第6张图片

spring-mvc(1):Hello World_第7张图片
spring-mvc(1):Hello World_第8张图片
配置web.xml


<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">
    
    <servlet>
        <servlet-name>dispatcherServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:springmvc.xmlparam-value>
        init-param>
        
        <load-on-startup>0load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServletservlet-name>
        <url-pattern>*.dourl-pattern>
    servlet-mapping>
web-app>

4,添加springmvc配置文件

spring-mvc(1):Hello World_第9张图片
配置如下:


<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.chen.controller"/>
beans>

5,创建HelloController

这里的包路径要和springmvc.xml配置的包扫描路径一样。
spring-mvc(1):Hello World_第10张图片
只有一个hello方法,方法上面添加了一个@RequestMapping 注解,是Springmvc中的一个注解,value属性用来指定一个url列表,springmvc会将这些指定的url请求转发给当前方法处理。

package com.chen.controller;

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

/**
 * @Author @Chenxc
 * @Date 2024.01.08 15:02
 */
@Controller
public class HelloController {
    /**
     * @RequestMapping:用来表示url和方法的映射
     * value属性用来指定一个url列表,springmvc会将这些指定的url请求转发给当前方法处理
     * @return
     */
    @RequestMapping("/hello")
    public ModelAndView hello() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/WEB-INF/view/hello.jsp");
        return modelAndView;
    }
}

hello.jsp

spring-mvc(1):Hello World_第11张图片

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024.01.08
  Time: 15:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>helloWorldtitle>
head>
<body>
<h1>Hello World!h1>
body>
html>

6,部署到tomcat中

在这里插入图片描述
spring-mvc(1):Hello World_第12张图片
spring-mvc(1):Hello World_第13张图片
spring-mvc(1):Hello World_第14张图片
spring-mvc(1):Hello World_第15张图片
启动

spring-mvc(1):Hello World_第16张图片
启动成功后访问:
http://localhost:8060/hello.do

在这里插入图片描述

7,SpringMVC处理器请的过程

1,tomcat启动的时候,会初始化DispatcherServlet,DispatcherServlet中会创建一个springmvc容器,就是我们熟悉的spring容器(ApplicationContext),这个容器的类型是WebApplicationContext,容器会加载web.xml中contextConfigLocation指定的springmvc配置文件。

spring-mvc(1):Hello World_第17张图片
2,springmvc.xml中指定了扫描包的规则。指定了要扫描的包路径,而HelloController符合这个扫描规则,所以会被注册到springmvc容器中。
在这里插入图片描述
3,当发起*.do请求的时候,请求会到达DispatcherServlet中央处理器,中央处理器会根据请求路径,去springmvc容器中找到能够处理这个请求的方法,具体由哪个方法来处理这个请求,这里就是通过@RequestMapping来匹配的,这个注解可以将请求和方法进行映射,匹配的请求会被@RequestMapping标注的方法处理,所以在这个步骤中springmvc容器会发现HelloController这个bean的hello方法方法可以处理/hello.do请求

4,DispatcherServlet中通过反射来调用helloController这个bean的hello方法

5,DispatcherServlet接收到了hello方法的返回值

6,DispatcherServlet根据hello方法的返回值,做跳转操作,相当于

request.getRequestDispatcher(“/WEB-INF/view/hello.jsp”).forward(request,response);

你可能感兴趣的:(springMvc,spring,mvc,java)