如何利用Idea创建一个Servlet项目(新手向)

news2024/11/23 0:30:59

💕"Echo"💕
作者:Mylvzi
文章主要内容:如何利用Idea创建一个Servlet项目(新手向)
在这里插入图片描述
Servlet是tomcat的api,利用Servlet进行webapp开发很方便,本文将介绍如何通过Idea创建一个Servlet项目(一共分为七步,这可能是我们写过的最复杂的 hello world)

在项目创建的过程中,我们将使用maven进行代码的编译和打包,mavn可以认为是一个更加专业的编译和打包工具

1.创建项目

打开Idea,点击NEW创建一个新项目

生成如下的目录结构

在这里插入图片描述

maven配置项介绍
在这里插入图片描述

2.引入依赖
我们所使用的Servlet是Tomcat的api,不是JDK,也就是说Servlet的使用需要引入第三方库,我们可以直接手动下载,但是在maven中不需要,我么只需将对应的地址写入到maven的配置项之中即可,maven会自动帮助我们下载

首先先去maven的中央仓库获取到Servlet的地址

https://mvnrepository.com/

进入界面之后,在上方的搜索框中输入servlet,然后点击search按钮
在这里插入图片描述
点击第一条结果
在这里插入图片描述
下翻,找到与你的tomcat版本相匹配的servlet版本(如果你的tomcat是8,直接点击下载3.1.0)
在这里插入图片描述
关于与tomcat匹配的servlet版本,可参考下图
在这里插入图片描述
点击对应的版本,下拉,找到Maven下面的代码,复制
在这里插入图片描述

打开idea,在maven的配置项文件中,复制刚才的内容(需要先创建一个标签)
在这里插入图片描述
注意:第一次引入依赖的时候可能需要等待一些时间(maven需要进行下载),如果下载不成功,尝试更换下网络

3.创建目录

maven项目是普适的,不仅仅局限于Tomcat,但是如果想在Maven中使用Tomcat,就需要遵守Tomcat的一些规范,这些规范就是一个固定的目录结构

在这里插入图片描述
与此同时,在我们创建好的web.xml文件中也需要添加一些内容,才符合完整的tomcat的文件格式要求

复制内容:

<!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>
</web-app>

在这里插入图片描述
4.编写代码
1.创建一个类,并继承于HttpServlet,同时添加注解,进行路由匹配在这里插入图片描述
2.重写doGet方法

@WebServlet("/hello")// 这个注解的作用是进行路由匹配
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello world");// 这是在tomcat的控制台中打印
        resp.getWriter().write("hello world");// 在对应的服务器上进行打印
    }
}

在这里插入图片描述
服务器处理来自于客户端的请求主要分为三步:

  1. 读取请求并解析
  2. 根据请求计算响应
  3. 将响应返回给客户端

其中1,3两步tomcat自动帮助我们完成,让程序员只需关注内部的数据处理的逻辑

5.打包程序

1.首先配置属性–点击pom.xml–配置

在这里插入图片描述

    <packaging>war</packaging>
    <build>
        <finalName>java1</finalName>
    </build>

注意:java1所在部分就是你最终的文件名称

2.开始进行打包 – 点击右侧的M按键

在这里插入图片描述

3.双击package
在这里插入图片描述

当控制台中出现"BUILD SUCCESS"时表示创建成功
在这里插入图片描述
同时,在左侧也会创建出一个target目录
在这里插入图片描述
最后一个.war文件就是我们最终

6.部署程序
打开tomcat所在目录,将刚才创建好的war包复制到tomcat的webapp目录下

1.复制.war文件
在这里插入图片描述

2.打开tomcat所在目录,进入webapp目录

3.在webapp目录中进行粘贴
在这里插入图片描述

这样就完成了部署程序

7.验证程序
进入tomcat的bin目录下,双击startup.bat打开程序
在这里插入图片描述
在这里插入图片描述
最后出现一个打开时间就代表成功打开

在浏览器中访问部署好的程序
在这里插入图片描述

在这里插入图片描述

最终结果:
1.首先在打开的界面上出现hello world
在这里插入图片描述
2.在打开的tomcat程序中也有hello world
在这里插入图片描述

快去尝试部署一个程序吧!

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

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

相关文章

备战蓝桥杯---动态规划(应用1)

话不多说&#xff0c;直接看题&#xff1a; 首先我们考虑暴力&#xff0c;用二维前缀和即可&#xff0c;复杂度为o(n^4). 其实&#xff0c;我们不妨枚举任意2行&#xff0c;枚举以这个为边界的最大矩阵。 我们把其中的每一列前缀和维护出来&#xff0c;相当于把一个矩阵压缩成…

观察者模式和发布订阅模式的区别

从下图中可以看出&#xff0c;观察者模式中观察者和目标直接进行交互&#xff0c;而发布订阅模式中统一由调度中心进行处理&#xff0c;订阅者和发布者互不干扰。这样一方面实现了解耦&#xff0c;还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息&#xff0c;但…

【Vue3】搭建Pinia环境及其基本使用

下载 npm i pinia引入并注册 App.vue import { createApp } from vue import { createPinia } from pinia import App from ./App.vue // 1. 引入 import { createPinia } from piniaconst app createApp(App) // 2. 创建 const pinia createPinia() // 3. 注册 app.use(p…

python----面向对象

这里写目录标题 面向对象思想类类的定义类名的定义类的构造函数的定义类的属性类的方法定义 继承语法关于构造函数问题 文件操作绝对路径相对路径pycharm获取绝对路径和相对路径文件读写读文件open&#xff08;&#xff09;read&#xff08;&#xff09;readline&#xff08;&a…

2021年CSP-J认证 CCF信息学奥赛中小学初级组 第一轮真题-单项选择题解析

2021年 中小学信息学奥赛CSP-J真题解析 1、以下不属于面向对象程序设计语言的是 A、c B、python C、java D、c 答案&#xff1a;D 考点分析&#xff1a;主要考查编程语言&#xff0c;ABC都是面向对象语言&#xff0c;D选项c语言是面向过程语言&#xff0c;答案D 2、以下奖…

202427读书笔记|《猫的自信:治愈系生活哲学绘本》——吸猫指南书,感受猫咪的柔软慵懒与治愈

202427读书笔记|《猫的自信&#xff1a;治愈系生活哲学绘本》——吸猫指南书&#xff0c;感受猫咪的柔软慵懒与治愈 《猫的自信&#xff1a;治愈系生活哲学绘本》作者林行瑞&#xff0c;治愈系小漫画绘本&#xff0c;10分钟可以读完的一本书&#xff0c;线条明媚&#xff0c;自…

SQL注入工具之SQLmap入门操作

了解SQLmap 基础操作 SQLmap是一款自动化的SQL注入工具&#xff0c;可以用于检测和利用SQL注入漏洞。 以下是SQLmap的入门操作步骤&#xff1a; 1.下载SQLmap&#xff1a;可以从官方网站&#xff08;https://sqlmap.org/&#xff09;下载最新版本的SQLmap。 2.打开终端&#…

CDP和Chrome

CDP和Chrome CDP和WebDriver Protocol WebDriver和 Chrome DevTools Protocol&#xff08;CDP&#xff09; 是用于自动化浏览器的两个主要协议&#xff0c;大多数的浏览器自动化工具都是基于上述其中之一来实现的。可以通过这两种形式来和浏览器交互&#xff0c;通过代码来控…

使用maven集成spring在测试的时候报出了如下的异常:version 60

使用maven集成spring在测试的时候报出了如下的异常&#xff1a; Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 60 解决&#xff1a;

MAC M1安装vmware和centos7虚拟机并配置静态ip

一、下载vmware和centos7镜像 1、VMWare Fusion 官网的下载地址是&#xff1a;下载地址 下载好之后注册需要秘钥&#xff0c;在官网注册后使用免费的个人秘钥 2、centos7 下载地址&#xff1a; https://biosyxh.cn:5001/sharing/pAlcCGNJf 二、虚拟机安装 直接将下…

比特币正在蚕食黄金

号外&#xff1a;教链内参2.19《内参&#xff1a;蹭热点、骗流量、割韭菜》 众所周知&#xff0c;自从美国SEC批准比特币现货ETF登陆美股市场之后&#xff0c;打开了美国金融市场泛滥的流动性向比特币流入的大门。只用了短短的30个交易日&#xff0c;比特币ETF就从零膨胀到了近…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

Ubuntu18.04有线连接后,无法设置ip地址以及显示网口设置

前提&#xff1a;首先测试过网线是完全没问题的 桌面端找不到设置网口 终端输入&#xff1a; ifconfig 没有找到网口设置和对应IP 然后查询网口驱动是否正常安装&#xff0c;输入&#xff1a; lspci | grep Ethernet 有输出说明网口驱动正常安装 然后查询电脑的ip地址&am…

2023年全球软件开发大会(QCon北京站2023)2月:核心内容与学习收获(附大会核心PPT下载)

本次峰会是一个汇集了最新技术趋势、最佳实践和创新思维的盛会。对于从事软件开发和相关领域的专业人士来说&#xff0c;参加这样的大会将有助于他们了解行业动态、提升技能水平、拓展职业视野&#xff0c;并与同行建立联系和合作。 本次峰会包含&#xff1a;AI基础架构、DevO…

Stable Diffusion 绘画入门教程(webui)-lora

通过前边的文章&#xff0c;相信大家已经能够自己产出好看的小姐姐或者小哥哥了&#x1f923; 不知道有没有发现每次生成的脸、身材、衣服、环境、风格等等可能都会有所差异&#xff0c;那么如果这个问题不解决&#xff0c;实用性将大大降低&#xff0c;因此lora诞生了。 文章…

人工智能_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_001---人工智能工作笔记0096

使用centos安装,注意安装之前,保证系统可以联网,然后执行yum update 先去更新一下系统,可以省掉很多麻烦 20240219_150031 这里我们使用centos系统吧,使用习惯了. ChatGlm首先需要一台个人计算机,或者服务器, 要的算力,训练最多,微调次之,推理需要算力最少 其实很多都支持C…

SpringBoot常见问题

1 引言 Spring Boot是一个基于Spring框架的快速开发脚手架&#xff0c;它简化了Spring应用的初始化和搭建过程&#xff0c;提供了众多便利的功能和特性&#xff0c;比如自动配置、嵌入式Tomcat等&#xff0c;让开发人员可以更加专注于业务逻辑的实现。   Spring Boot还提供了…

IO进程线程作业day2

使用fread和fwrite完成两个图片文件的拷贝 #include <myhead.h> #define high 541 #define wide 541 int main(int argc, const char *argv[]) {//以只读的方式打开图片文件1.bmpFILE *fp NULL;if((fp fopen("./1.bmp", "r")) NULL){perror(&qu…

数据分析 - 机器学习

1&#xff1a;线性回归 线性回归是一种统计技术用于对输出变量与一个或多个输入变量之间的关系进行建模 用外行人的话来说&#xff0c;将其视为通过某些数据点拟合一条线&#xff0c;如下所示 以便在未知数据上进行预测&#xff0c;假设变量之间存在线性关系 点和线之间存在微小…

实体类赋值之后,数据库属性最后为null的解决方法

目录 1. 问题所示2. 原理分析1. 问题所示 执行代码赋值的时候,通过Debug可以看到成功被赋值,但执行到最后,该数据库的属性为null 如图所示: 2. 原理分析 针对这种情况,排查了一个晚上才找到根本原因 最后发现是持久化操作的问题,本身赋值之后,对于数据库还要执行一个…