SpringMVC(一) 构建项目

news2024/11/19 19:33:53

SpringMVC(一) 构建项目

1.创建项目

创建一个空的Maven项目

在这里插入图片描述

在这里插入图片描述

删除src目录,将新建的项目作为一个工作空间使用,然后在里面创建Module。

2.创建Module

选中刚才创建的项目,右键创建Module

在这里插入图片描述

选择Java语言的Maven 项目

在这里插入图片描述

3.添加SpringMVC依赖

在父项目中添加的依赖会被子module继承,我们打开父项目Pom.xml添加下面的依赖

<dependencies>
    <!--        SpringMVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.10</version>
        </dependency>
        <!--        Spring和thymeleaf的整合-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
            <!--不能用3.1  3.1是和Spring6结合的 可以看官网文档https://www.thymeleaf.org/doc/tutorials/3.1/thymeleafspring.html#integrating-thymeleaf-with-spring-->
        </dependency>
</dependencies>

在这里插入图片描述

刷新一下Maven 可以看到spring-mvc依赖和thymeleaf-spring整合依赖已经被加载进来了

在这里插入图片描述

4.创建Web框架

选中module中main文件夹,在main文件夹下面创建webapp文件夹

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
创建完之后,正常是idea自动识别为Web框架的,但是有时候idea不能自动识别,需要手动设置一下,我们打开项目结构。

在这里插入图片描述

在这里插入图片描述

在module下创建一个web框架

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

我这里最终修改为了:C:\Users\Administrator\Desktop\SPringMVC\springmvc-helloword\src\main\webapp\WEB-INF\web.xml,上面这两个路径一定要好好检查一下。最终我们创建的是这个样子。

在这里插入图片描述

5.web.xml文件中注册DispatcherServlet

然后打开web.xml,添加SPringMVC的servlet,我的设置为这样:

<?xml version="1.0" encoding="UTF-8"?>
<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">


    <!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 -->
        <init-param>
            <!-- contextConfigLocation为固定值 -->
            <param-name>contextConfigLocation</param-name>
            <!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources -->
            <param-value>classpath:springMVC.xml</param-value>
<!--            配置成这个路径也可以 classpath就是打包之后村存放类的根路径 /WEB-INF/classes/springMVC.xml-->
<!--            /和后边的联系在一块-->
        </init-param>
        <!--
             作为框架的核心组件,在启动过程中有大量的初始化操作要做
            而这些操作放在第一次请求时才执行会严重影响访问速度
            因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--
            设置springMVC的核心控制器所能处理的请求的请求路径
            /所匹配的请求可以是/login或.html或.js或.css方式的请求路径
            但是/不能匹配.jsp请求路径的请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>


</web-app>

6.创建SpringMVC配置文件

然后在Resources文件夹下面创建SpringMVC的配置文件 springMVC.xml(主要和web.xml中设置的文件名一样)

在这里插入图片描述

在这里插入图片描述

7.创建controller

创建HelloController类,并且按照图片添加注解和设置方法,注意方法返回值要是String

在这里插入图片描述
创建完成之后,Spring还不会把这个HelloController当做Controller,要在Spring配置文件中打开组件扫描,让这个@Controller生效。

8.开启组件扫描

spring配置文件(springMVC.xml)中添加component-scan

<?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"
       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">

    <!-- 自动扫描包 扫描base-package包下面的注解-->
    <context:component-scan base-package="com.rzg.controller"/>
    
</beans>

9.设置视图解析器

spring配置文件(springMVC.xml)中添加 Thymeleaf视图解析器

<?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"
       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">

    <!-- 自动扫描包 扫描base-package包下面的注解-->
    <context:component-scan base-package="com.rzg.controller"/>

    <!-- 配置Thymeleaf视图解析器 -->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <!-- 视图解析器的顺序,可以看出视图解析器可以配置多个 -->
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">

                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>

                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
</beans>

项目创建到目前为止,访问根路径/时,DispatcherServlet会调用匹配到的HelloController中hello()方法,返回hello字符串,根据Thymeleaf视图解析器中配置的视图前缀,视图后缀拼接成一个文件名(/WEB-INF/templates/hello.html),对着个文件进行处理,然后返回前端。下面我们在这个路径下创建 hello.html

10.创建hello.html文件

创建/WEB-INF/templates/hello.html文件,写一个HelloWord。

在这里插入图片描述

11.module模块pom.xml中设置打包方式

按照下图添加打包方式,注意修改pom.xml之后一定要刷新才生效

在这里插入图片描述

12.配置Tomcat

要确保电脑已经安装了Tomcat

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

完了 点击Apply -》 Ok,在根据模板创建一个Tomcat

在这里插入图片描述

然后将刚刚的程序打成的包,放进Tomcat中 如下图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击Apply-》Ok 然后Debug运行
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MflSbKPZ-1670766023485)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221211213735815.png)]

13.程序运行,访问测试:

在这里插入图片描述

结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1-48-mysql-基础篇-DML-select

1-mysql-基础篇&#xff1a; 推荐网站 mysql&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/ 算法&#xff1a;https://www.cs.usfca.edu/~galles/visualization/about.html 数据库 1、数据库概述相关 1、 数据库的相关概念 DB&#xff1a;数据库&#xff08;Data…

git 多用户配置(公司/个人)

背景 张三是一个程序员&#xff0c;他的英文名叫 outlaw&#xff0c;emial: outlaw163.com。 张三入职了一家公司&#xff0c;公司给张三的企业邮箱是 zhangsancompany.com 这一次&#xff0c;他 0 元购了一台新笔记本&#xff0c;需要配置一下 git git 账号配置 配置全局用…

微信公众号开发,获取openid,授权登录 WeChat-official-account-openid

微信公众号开发 功能&#xff1a;自动登录&#xff0c;获取个人信息&#xff0c;上传图片 超多麻烦的情况&#xff0c;怎样获取openid呢&#xff1f; 以下我给大家提供源码&#xff0c;文本&#xff0c;视频资料 保证让你看了就明白哈 look效果 1.拉起用户授权 2.后台获取到…

微服务雪崩问题解决 Sentinel

雪崩问题以及解决方案 限流设置 达到阈值的效果 隔离和降级 熔断 授权规则 设置规则持久化 雪崩问题以及解决方案雪崩微服务调用链路中的某个服务出现故障&#xff0c;引起链路上其他服务都不可用&#xff0c;这就是雪崩解决方案超时处理&#xff0c;设定超时时间&#xff0c;请…

【软件工程期末复习内容】

前言 时不可以苟遇&#xff0c;道不可以虚行。 一、软件工程的概念 软件是计算机系统运行的 指令、数据 和 相关文档 的集合&#xff0c;即软件等于程序、数据、加上文档。程序&#xff1a;是事先按照预定功能性能等要求设计和编写的指令序列&#xff1b;数据&#xff1a;是使…

Python编程 while循环

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.循环控制 1.循环控制介绍 2.while循环表达式 3.while循环表达式 4.b…

Python实现ALO蚁狮优化算法优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer&#xff0c;ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…

47-linux-vim-安装以及权限等-缺少

47-linux-vim-安装以及权限等&#xff1a; vi编辑器简介 vim是一个全屏幕纯文本编辑器&#xff0c;是vi编辑器的增强版&#xff0c;我们主要讲解的是vim编辑器。可以利用别名让输入vi命令的时候&#xff0c;实际上执行vim编辑器&#xff0c;例如: [rootlocalhost ~]# alias v…

HTTP协议介绍

了解HTTP HTTP是什么呢&#xff1f;它是超文本传输协议&#xff0c;HTTP是缩写&#xff0c;它的全英文名是HyperText Transfer Protocol。 那么什么是超文本呢&#xff1f; 超文本指的是HTML&#xff0c;css&#xff0c;JavaScript和图片等&#xff0c;HTTP的出现是为了接收和…

一位全栈工程师转岗项目经理的初体验与总结

从上周开始&#xff0c;公司这边把我从全栈工程师的岗位调到了项目经理的岗位&#xff0c;开始尝试管理岗位&#xff0c;感觉换了一个岗位像是换了一份工作一样&#xff0c;又在次充满了干劲。开始新的项目&#xff0c;招纳新的项目成员&#xff0c;虽然都是在做软件开发的事情…

【手把手】分布式定时任务调度解析之Quartz

1、任务调度背景 在业务系统中有很多这样的场景&#xff1a; 1、账单日或者还款日上午 10 点&#xff0c;给每个信用卡客户发送账单通知&#xff0c;还款通知。如何判断客户的账单日、还款日&#xff0c;完成通知的发送&#xff1f; 2、银行业务系统&#xff0c;夜间要完成跑批…

CCF CSP认证——201312

文章目录201312-1 出现次数最多的数201312-2 ISBN号码201312-3 最大的矩形201312-4 有趣的数201312-5 I’m stuck!201312-1 出现次数最多的数 题目链接 数据量较小&#xff0c;且数据范围也比较小。可以直接暴力&#xff0c;通过设置数组记录下标数据出现的次数&#xff0c;最…

C/C++关键字

C/C关键字【1】extern "C"【2】asm【3】关键字auto【4】break语句【5】catch 语句【6】关键字class【7】关键字const【8】#if【9】#pragma once【10】#pragma pack(1)【11】#pragma pack(4)【12】explicit【】 continue语句【13】关键字enum【14】friend【15】goto语…

【springboot进阶】基于starter项目构建(二)构建starter项目-web

目录 一、创建 web-spring-boot-starter 项目 二、添加 pom 文件依赖 三、构建配置 1. rest模板配置 RestTemplateConfig 2. 统一异常处理 BackendGlobalExceptionHandler 3. 统一返回数据结构 4. jwt鉴权处理 5. 请求日志切面处理 WebLogAspect 6. 邮件配置 BackendM…

mysql数据同步到elasticsearch数据解决方案

mysql数据同步到elasticsearch数据解决方案 问题场景 1.分库分表后多关联或者多条件查找效率低下&#xff0c;例如2b场景的查询&#xff0c;导出等需要多条件查询&#xff0c;继续用分库分表话效率低下。 2.数据量太多需要转移非关系型数据库elasticsearch存储 3.其他数据转…

AI 实战篇 |基于 AI开放平台实现 【植物识别】 功能,成为行走的百科全书

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

代码随想录刷题记录day40 爬楼梯+零钱兑换+完全平方数·

代码随想录刷题记录day40 爬楼梯零钱兑换完全平方数 参考&#xff1a;代码随想录 70. 爬楼梯 思想 当作完全背包问题&#xff0c;物品是1&#xff0c;2&#xff0c;可以无限次取用&#xff0c;背包的容量是n 1.dp[j]表示容量为j的背包&#xff0c;装满有dp[j]次 2.dp[j]dp…

【图像处理】opencv | 图像的二值化操作| cv2.threshold() | cv2.adaptiveThreshold()

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、cv2.threshold()阈值操作函数1.1、初见1.2、阈值不同时的效果二、cv2.adaptiveThreshold()自适应阈值操作函数2.1、初见2.2、固定blocksize,改变C值大小的实…

104-127-linux-vim-shell基础

104-linux-shell: 1.shell基础 分类&#xff1a;linux使用Bash&#xff0c;可通过vi /etc/shells查看linux支持的shell类型。 1、echo [rootlocalhost ~]#echo [选项] [输出内容] 选项:-e:支持反斜线控制的字符转换&#xff08;具体百度吧)-n:取消输出后行末的换行符号&…

Python实现ALO蚁狮优化算法优化支持向量机分类模型(SVC算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer&#xff0c;ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…