如何使用Idea搭建全注解式开发的SpringMVC项目

 更新时间:2023年03月24日 10:55:12   作者:柳衣白卿  
这篇文章主要介绍了如何使用Idea搭建全注解式开发的SpringMVC项目,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1. 创建项目

1.打开Idea,并点击新建项目

注:使用的是2022.2的商业版,该版本跟2021.2的商业版创建Maven项目不一样

2.点击右侧的新建项目 -> 取名 -> 创建

Snipaste_2023-03-10_19-13-23.png

3.这样我们就创建了一个空依赖的Maven项目

4.打开项目 -> 右键项目名 -> 点击添加框架支持

有时会找不到,重复这个过程即可

Snipaste_2023-03-10_19-16-30.png

5.勾选Web应用程序,然后点击确定,若出现Web目录,则加载完毕

这创建的是传统的Java Web项目:带Web目录的,该目录下存在WEB-INF目录

Snipaste_2023-03-10_19-17-37.png

6.补全目录

创建完的目录结构如下, 缺失了一些目录,需要自己在test目录下创建resource目录

Snipaste_2023-03-10_20-21-42.png

  • web目录:该目录的文件能被外界访问
  • WEB-INF目录:该目录的文件不对外展示
  • web.xml:主要用来配置FilterListenerServlet

7.在pom.xml文件里加入如下代码,然后刷新Maven,这样会在target里生成war文件

不这样做的话,工件中就没有我们通过Maven引入的Jar包,会导致项目中用到引入Jar包的地方出错,如下所示
如: 使用@Controller注解设置请求时,会报404

Snipaste_2023-03-21_18-25-14.png

<!--设置打包方式为war-->
<packaging>war</packaging>

8.或者项目结构->工件->创建lib目录->添加Jar

2. 配置Tomcat

点击当前文件

Snipaste_2023-03-10_20-32-32.png

点击编辑配置

Snipaste_2023-03-10_20-33-12.png

点击+

Snipaste_2023-03-10_20-33-49.png

找到Tomcat服务器,点击下面的本地

Snipaste_2023-03-10_20-33-58.png

点击配置

Snipaste_2023-03-10_20-36-17.png

  • 点击Tomcat主目录旁的文件图标,选择你Tomcat安装到的文件夹所对应的路径,点击确定
    • 这个文件夹应该是bin目录的父目录

如果是正确的话,idea会自动帮你填写Tomcat基目录

Snipaste_2023-03-10_20-36-26.png

配置工件:点击修复 -> 会进入一个新页面 -> 修改应用程序上下文,保留一个即可

Snipaste_2023-03-10_20-45-47.png

Snipaste_2023-03-10_20-43-55.png

我们添加框架支持的时候就会创建一个相关的工件

3. 示例

1.在pom.xml文件中引入相关依赖

<!-- 添加springmvc依赖 -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.3.18</version>
</dependency>
<!-- 添加servlet 依赖 -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0.1</version>
  <scope>provided</scope>
</dependency>

2.创建Controller

3.在Controller包下创建UserController.java文件, 复制下面代码到该文件中

package org.example.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 index() {
            return "index";
        }
    }

4.创建Config

5.在Config包下创建一个专用于SpringMVC的配置类-----SpringMvcConfig

该配置类将@ComponentScan注解只用于扫描Controller

为什么要有SpringMVC专门的配置类, 就是为了bean管理起来更清晰
就是将controller层放在springmvc容器中管理, 其他如service层放在父容器Spring中管理

@Configuration
@ComponentScan("org.example.Controller")
//扫描Controller包
public class SpringMvcConfig {
}

6.在Config包下创建Tomcat启动类SpringMvcInit

  • 该类要继承AbstractDispatcherServletInitializer
    • AbstractDispatcherServletInitializer类:用于Tomcat启动
package org.example.Config;

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

//定义一个servelt容器启动的配置类,用于加载spring的配置类
public class SpringMvcInit  extends AbstractDispatcherServletInitializer {


    //1. 将controller层放在springmvc容器中,其他如service层放在父容器,bean管理起来更清晰
    //2. 也可以没有父容器,将所有bean都放在springmvc容器中
    @Override
    //加载springMVC容器的配置类
    protected WebApplicationContext createServletApplicationContext() {
        //创建SpringMVC容器
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //加载配置类--SpringMvcConfig
        ctx.register(SpringConfig.class);
        return ctx;

    }

    @Override
    //配置哪些请求要被拦截,归属SpringMVC处理
    // /: 拦截所有请求
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    //加载Spring容器的配置类
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

2. 该类要继承`AbstractAnnotationConfigDispatcherServletInitializer`类, 用于简化开发

public class SpringMvcInit  extends AbstractAnnotationConfigDispatcherServletInitializer {

    //1. 将controller层放在springmvc容器中,其他如service层放在父容器,bean管理起来更清晰
    //2. 也可以没有父容器,将所有bean都放在springmvc容器中
    // === 上面的createRootApplicationContext()做的事
    //用来加载  springmvc容器的父容器spring的配置类
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    //加载springMVC的配置类
    //=== 上面的createServletApplicationContext()做的事
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    //配置哪些请求要被拦截,归属SpringMVC处理
    // /: 拦截所有请求
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

}

 ​​到此这篇关于如何使用Idea搭建全注解式开发的SpringMVC项目的文章就介绍到这了,更多相关idea搭建SpringMVC项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java并行处理的实现

    Java并行处理的实现

    并行计算一般是指许多指令得以同时进行的计算模式。本文主要介绍了Java并行处理的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • SpringBoot整合mybatis常见问题(小结)

    SpringBoot整合mybatis常见问题(小结)

    这篇文章主要介绍了SpringBoot整合mybatis常见问题(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java简单数组排序(冒泡法)

    Java简单数组排序(冒泡法)

    这篇文章主要介绍了Java简单数组排序,实例分析了基于冒泡法实现数组排序的相关技巧,简单实用,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Java中CopyOnWriteArrayList的使用解析

    Java中CopyOnWriteArrayList的使用解析

    这篇文章主要介绍了Java中CopyOnWriteArrayList的使用解析,CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存,它不存在扩容的概念,每次写操作都要复制一个副本,在副本的基础上修改后改变Array引用,需要的朋友可以参考下
    2023-12-12
  • java给钉钉邮箱发送邮件功能实现

    java给钉钉邮箱发送邮件功能实现

    文章介绍了如何使用Java给钉钉邮箱发送邮件,包括开通POP和IMAP、引入pom、逻辑处理、直接添加前端传来的MultipartFile、添加多个附件以及给多个邮箱发送邮件等步骤,感兴趣的朋友一起看看吧
    2025-02-02
  • Mybatis @SelectKey用法解读

    Mybatis @SelectKey用法解读

    这篇文章主要介绍了Mybatis @SelectKey用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java 实现Excel文档添加超链接的代码

    Java 实现Excel文档添加超链接的代码

    超链接即内容链接,通过给特定对象设置超链接,可实现载体与特定网页、文件、邮件、网络等的链接,点击链接载体可打开链接目标,在文档处理中是一种比较常用的功能,本文将介绍通过Java程序给Excel文档添加超链接的方法,感兴趣的朋友一起看看吧
    2020-02-02
  • Java 根据XPATH批量替换XML节点中的值

    Java 根据XPATH批量替换XML节点中的值

    这篇文章主要介绍了Java根据XPATH批量替换XML节点中的值,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java实现单链表基础操作

    Java实现单链表基础操作

    大家好,本篇文章主要讲的是Java实现单链表基础操作,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Java Process类的详解及实例代码

    Java Process类的详解及实例代码

    这篇文章主要介绍了Java Process类的详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论