• SpringMVC框架搭建流程(完整详细版)


    SpringMVC框架搭建流程

    开发过程

    1)配置DispatcherServlet前端控制器

    2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)

    3) xml配置⽂件配置controller扫描,配置springmvc三⼤件

    4)将xml⽂件路径告诉springmvc(DispatcherServlet)

    详细流程:

    创建目录

    新建maven项目,注意选择webapp骨架。

    创建成功之后会发现没有src等目录,这些需要我们手动创建:

    在src下面新建main,main下面新建java目录,选择java目录,右键,

    在main下面继续新建resource目录,选择resource目录,右键,

    pom.xml

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.lagou.edu</groupId>
        <artifactId>springmvc-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
        </properties>
    
        <dependencies>
        <!--引入spring webmvc的依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.12.RELEASE</version>
        </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <port>8080</port>
                        <path>/</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    注意Tomcat7插件是用来运行项目的,右侧运行:

    springmvc相关配置

    main文件夹下面新建webapp文件夹,webapp下面新建WEB-INF,下面新建web.xml

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <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>
      </servlet>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
    
        <!--
          方式一:带后缀,比如*.action  *.do *.aaa
                 该种方式比较精确、方便,在以前和现在企业中都有很大的使用比例
          方式二:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)
    
                为什么配置为/ 会拦截静态资源???
                    因为tomcat容器中有一个web.xml(父),你的项目中也有一个web.xml(子),是一个继承关系
                          父web.xml中有一个DefaultServlet,  url-pattern 是一个 /
                          此时我们自己的web.xml中也配置了一个 / ,覆写了父web.xml的配置
                为什么不拦截.jsp呢?
                    因为父web.xml中有一个JspServlet,这个servlet拦截.jsp文件,而我们并没有覆写这个配置,
                    所以springmvc此时不拦截jsp,jsp的处理交给了tomcat
    
    
                如何解决/拦截静态资源这件事?
    
    
          方式三:/* 拦截所有,包括.jsp
        -->
        <!--拦截匹配规则的url请求,进入springmvc框架处理-->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>
    
    

    里面配置了springmvc相关的配置,引入了springmvc.xml:
    在resource目录下新建springmvc.xml:

    <?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"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd
    ">
    
        
        <!--开启controller扫描-->
        <context:component-scan base-package="com.lagou.edu.controller"/>
    
    
        <!--配置springmvc的视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
    
        <!--
            自动注册最合适的处理器映射器,处理器适配器(调用handler方法)
        -->
        <mvc:annotation-driven/>
    
    
    
    </beans>
    

    在java目录下新建包com.lagou.edu.controller,下面新建DemoController:

    package com.lagou.edu.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    import java.util.Date;
    
    /**
     * @author lyj
     * @Title: DemoController
     * @ProjectName springmvc-demo
     * @Description: TODO
     * @date 2020/6/9 21:21
     */
    @Controller
    @RequestMapping("/demo")
    public class DemoController {
        /**
         * http://localhost:8080/demo/handle01
         */
        @RequestMapping("/handle01")
        public ModelAndView handle01(){
            Date date=new Date();
    
            ModelAndView modelAndView=new ModelAndView();
            modelAndView.addObject("date",date);
            modelAndView.setViewName("success");
            return modelAndView;
        }
    }
    
    

    在WEB-INF下面新建jsp文件夹,下面新建success.jsp:

    <%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    当前时间 ${date}
    </body>
    </html>
    

    完毕后整个项目结构如下:

    测试:

    浏览器访问:

  • 相关阅读:
    JS 简易模拟Promise.all
    JS 监听浏览器当前页签(Tab页)的切换(可见性变化)事件
    常用浏览器的UserAgent信息
    Why relationships must be equal?
    JS数组的洗牌方法
    React.memo 与 React.useMemo 的区别
    Vite版本从2.6.x升级到2.7.x之后,Vant从3.3.0升级到3.3.(1n)之后,项目构建时报错
    JS 模拟 Array.prototype.flat
    js排序(冒泡排序,插入排序,快速排序,选择排序)
    oracle操作
  • 原文地址:https://www.cnblogs.com/liuyj-top/p/13137628.html
Copyright © 2020-2023  润新知