• IDEA2023创建SpringMVC项目


    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
    🍎个人主页:Leo的博客
    💞当前专栏: 开发环境篇
    ✨特色专栏: MySQL学习
    🥭本文内容: IIDEA2023创建SpringMVC项目
    📚个人知识库: Leo知识库,欢迎大家访问

    1. 前言

    大家好,我是Leo哥🫣🫣🫣,有朋友问我关于新版本的IDEA如何创建SpringMVC项目或者是SSM项目,并配置Web支持呢。这个问题在我刚升级新版本也是琢磨了很久,现在整理分享给大家。

    2. 创建项目

    我们这里以创建SpringMVC项目为例,SSM项目同理。不过我们以原生Maven的方式创建,当然也可以通过快捷的 Archetype org.apache.maven.archetypes:maven-archetype-webapp 进行创建,但是这不是我们今天的主题。不多废话,直接开始吧。

    创建项目

    image-20240406200919832

    3. 导入依赖

    <dependencies>
            
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webmvcartifactId>
                <version>6.1.4version>
            dependency>
            
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-classicartifactId>
                <version>1.5.3version>
            dependency>
            
            <dependency>
                <groupId>jakarta.servletgroupId>
                <artifactId>jakarta.servlet-apiartifactId>
                <version>6.0.0version>
                <scope>providedscope>
            dependency>
            
            <dependency>
                <groupId>org.thymeleafgroupId>
                <artifactId>thymeleaf-spring6artifactId>
                <version>3.1.2.RELEASEversion>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    4. 添加Web支持

    首先需要先在main 目录下面创建一个文件夹,webapp。

    image-20240406201234605

    然后打开Project Structure ,添加Web依赖,如果有的话可以胜率这一步。

    image-20240406201358703

    然后点击Web,添加一个Deploymentt Descriptors

    image-20240406201504260

    这里注意要和自己的路径保持一致,如果不一致按照我这个格式进行改! 然后就是 Deployment 版本选择6即可。

    image-20240406201604230

    然后点击apply,OK即可,看到xml说明我们配置成功了。

    image-20240406202043283

    5. 其他配置

    5. 1 配置Web.xml

    Spring MVC是一个web框架,在javaweb中谁来负责接收请求,处理请求,以及响应呢?当然是Servlet。在SpringMVC框架中已经为我们写好了一个Servlet,它的名字叫做:DispatcherServlet,我们称其为前端控制器。既然是Servlet,那么它就需要在web.xml文件中进行配置:

    
    <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
             version="6.0">
            
            <servlet>
                <servlet-name>springmvcservlet-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>1load-on-startup>
            servlet>
            <servlet-mapping>
                <servlet-name>springmvcservlet-name>
                <url-pattern>/url-pattern>
            servlet-mapping>
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    DispatcherServlet是SpringMVC框架为我们提供的最核心的类,它是整个SpringMVC框架的前端控制器,负责接收HTTP请求、将请求路由到处理程序、处理响应信息,最终将响应返回给客户端。DispatcherServlet是Web应用程序的主要入口点之一,它的职责包括:

    1. 接收客户端的HTTP请求: DispatcherServlet监听来自Web浏览器的HTTP请求,然后根据请求的URL将请求数据解析为Request对象。
    2. 处理请求的URL: DispatcherServlet将请求的URL(Uniform Resource Locator)与处理程序进行匹配,确定要调用哪个控制器(Controller)来处理此请求。
    3. 调用相应的控制器: DispatcherServlet将请求发送给找到的控制器处理,控制器将执行业务逻辑,然后返回一个模型对象(Model)。
    4. 渲染视图: DispatcherServlet将调用视图引擎,将模型对象呈现为用户可以查看的HTML页面。
    5. 返回响应给客户端: DispatcherServlet将为用户生成的响应发送回浏览器,响应可以包括表单、JSON、XML、HTML以及其它类型的数据

    5.2 编写springmvc.xml

    SpringMVC框架有它自己的配置文件,该配置文件的名字默认为:-servlet.xml,默认存放的位置是WEB-INF 目录下:

    但是我们正常我们的配置文件都是放在resources文件夹下面的,所以我们这里需要做出一点改动。

    手动配置我们的springmvc的路径。

    
    <init-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:springmvc.xmlparam-value>
    init-param>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后我们就可以直接在resources添加一个springmvc.xml文件了。

    
    <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="org.javatop.springmvc.controller"/>
        
        <bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
            
            <property name="characterEncoding" value="UTF-8"/>
            
            <property name="order" value="1"/>
            
            <property name="templateEngine">
                <bean class="org.thymeleaf.spring6.SpringTemplateEngine">
                    
                    <property name="templateResolver">
                        <bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
                            
                            <property name="prefix" value="/WEB-INF/templates/"/>
                            
                            <property name="suffix" value=".html"/>
                            
                            <property name="templateMode" value="HTML"/>
                            
                            <property name="characterEncoding" value="UTF-8"/>
                        bean>
                    property>
                bean>
            property>
        bean>
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    image-20240406203036105

    以上配置主要两项:

    • 第一项:组件扫描。spring扫描这个包中的类,将这个包中的类实例化并纳入IoC容器的管理。
    • 第二项:视图解析器。视图解析器(View Resolver)的作用主要是将Controller方法返回的逻辑视图名称解析成实际的视图对象。视图解析器将解析出的视图对象返回给DispatcherServlet,并最终由DispatcherServlet将该视图对象转化为响应结果,呈现给用户。

    注意:如果采用了其它视图,请配置对应的视图解析器,例如:

    • JSP的视图解析器:InternalResourceViewResolver
    • FreeMarker视图解析器:FreeMarkerViewResolver
    • Velocity视图解析器:VelocityViewResolver

    5.3 提供视图

    在WEB-INF目录下新建templates目录,在templates目录中新建html文件,例如:test.html,并提供以下代码:

    DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Testtitle>
    head>
    <body>
    <H1>TEST OK!!! Hello SpringMVCH1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5.4 编写Controller

    返回逻辑视图名称(决定跳转到哪个页面)

    @Controller
    public class HelloController {
        
        @RequestMapping("/test")
        public String test(){
            return "test";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6. 配置Tomcat

    第一步:配置Tomcat服务器

    image-20240406203450085

    第二步:部署web模块到Tomcat服务器

    注意:我们这里 /springmvc 就是我们的Web应用的根目录。

    image-20240406203518858

    7. 测试

    开浏览器,在浏览器地址栏上输入地址:http://localhost:8080/springmvc/haha

    image-20240406203756336

    大功告成!!!

    8. 执行流程总结

    1. 浏览器发送请求:http://localhost:8080/springmvc/test
    2. SpringMVC的前端控制器DispatcherServlet接收到请求,
    3. DispatcherServlet根据请求路径 /test 映射到 HelloController#名字随意(),调用该方法。
    4. HelloController#名字随意() 处理请求。
    5. HellController#名字随意() 返回逻辑视图名称 test给视图解析器.
    6. 视图解析器找到 /WEB-INF/templates/test.html 文件,并进行解析,生成视图解析对象返回给前端控制器DispatcherServlet。
    7. 前端控制器DispatcherServlet响应结果到浏览器。

    9. 总结

    以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。

    如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。

  • 相关阅读:
    HTML学习笔记
    JWT(简介)
    2022年ccpc绵阳站E题 E. Hammer to Fall( 倒序dp + 分块优化)
    Java高级特性-泛型继承与子类型
    最新版:RadSystems Studio:Crack
    Python实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知
    如何在 VS Code 中创建自己的代码片段
    Flutter——自适应设计
    lintcode652 factorization
    Kubernetes教程(十一)---使用 KubeClipper 通过一条命令快速创建 k8s 集群
  • 原文地址:https://blog.csdn.net/qq_58608526/article/details/137437847