SpringMVC使用步驟

news/2024/7/8 3:59:12 标签: spring

1.导入依赖坐标

	<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <!--这个依赖会跟tomcat插件有冲突,需要把有效范围设置为provided-->
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

2.添加tomcat插件

	  <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>

3.创建SpringMVC控制器类

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {
    //设置请求的访问路径
    @RequestMapping("/save")
    //设置响应的返回值类型,方法的返回值类型就是响应的返回值类型
    @ResponseBody
    public String save() {
        System.out.println("user save");
        return "{'info':'successful'}";
    }
}

4.初始化SpringMVC环境,设定SpringMVC加载对应的bean

注:对bean的加载控制做细致划分

package config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;

@Configuration
@ComponentScan(value = "com.example",
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ANNOTATION,
                value = Controller.class
        )
)
public class SpringConfig {
}
package config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan({"com.example.controller"})
public class SpringMVCConfig {
}

5.初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求

package config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    //加载SpringMVC容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        applicationContext.register(SpringMVCConfig.class);
        return applicationContext;
    }
    
    //设置哪些请求归属SpringMVC处理
    @Override
    protected String[] getServletMappings() {
    	// “/”代表所有请求
        return new String[]{"/"};
    }
    
	//加载spring容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        applicationContext.register(SpringConfig.class);
        return applicationContext;
    }
}

简化的书写方式

package config;


import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMVCConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

http://www.niftyadmin.cn/n/5339505.html

相关文章

[SS]语义分割_文献摘要

目录 一、语义分割 01-DeepLabv3语义分割模型的济南市防尘绿网提取及时空变化分析 02-GCM-LANet&#xff1a;遥感图像语义分割的全局卷积模块与局部注意力网络模型 03-多源特征自适应融合网络的高分遥感影像语义分割 04-改进U-Net模型的无人机影像在建道路分类 05-高分…

7.【CPP】String类

一.汉字的编码 我们知道计算机存储英文字母&#xff0c;标点&#xff0c;数字用的是ascall码&#xff0c;128种用一个字节表示绰绰有余。而汉字远远不止128种&#xff0c;因此汉字需要两个字节表示。 1.gbk编码中汉字占两个字节。 2.utf-8中&#xff0c;一个汉字占三个字节。…

无偿分享一个很有用的看源码小技巧

怎么在 idea 里面查看 git 提交记录呢&#xff1f;这个界面是藏在哪里的呢&#xff0c;我的 idea 里面怎么没有呢&#xff1f; 好的&#xff0c;是我疏忽了&#xff0c;我先入为主的认为这个大家应该都知道是怎么来的。 但是确实是有一些同学是不太清楚的&#xff0c;那我这篇…

笔记:C++/C编程学习:使用nuget管理c++库的原理

如果要做一个应用程序&#xff0c;我们往往会用到很多第三方库&#xff0c;这时库包管理工具就很重要&#xff0c;如js/npm&#xff0c;c#/nuget&#xff0c;php/composer&#xff0c;jave/maven之类&#xff0c;但vc一直没一个很舒服的包管理工具。很多c第三方库对vc都非常不友…

在vue中如何优雅的封装第三方组件

在使用第三方组件的时候或多或少的会因为样式&#xff0c;业务不符合自己的需求进而进行封装。是否你也会有这样的困扰。封装业务组件的时候&#xff0c;弄了好多业务进自己的组件里。要传递好多参数给自己封装的组件&#xff0c;然后再在封装的组件里传递给第三方组件。不禁要…

【AI知识片段】Transformer模型中的位置编码

1.什么是位置编码 位置编码描述序列中实体的位置或位置&#xff0c;以便为每个位置分配唯一的表示形式。单个数字&#xff08;如索引值&#xff09;不用于表示项目在转换器模型中的位置的原因有很多。对于长序列&#xff0c;索引的量级可能会变大。如果将索引值归一化为介于 0 …

双通道5V高细分步进电机——GC6129,可替代MS41929,具有低噪声、低振动的特点

GC6129是双通道5V低电压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机的变焦和对焦系统&#xff0c;万向节和其他精密&#xff0c;低噪声STM控制系统。该芯片为每个通道集成了256微步驱动器带SPI接口&#xff0c;用户可以方便地调整驱动器的参…

【 CSS 】基础 2

“生活就像骑自行车&#xff0c;想要保持平衡&#xff0c;就得不断前行。” - 阿尔伯特爱因斯坦 CSS 基础 2 1. emmet 语法 1.1 简介 Emmet语法的前身是 Zen coding&#xff0c;它使用缩写&#xff0c;来提高 HTML / CSS 的编写速度&#xff0c; VSCode 内部已经集成该语法。…