手摸手教会你在idea中配置Tomcat进行servlet/jsp开发(多图超详)

news/2024/4/30 1:59:00/文章来源:https://blog.csdn.net/piglite/article/details/128035204

1. 下载安装idea,创建project,如果没有JDK可以通过idea指定文件夹并下载JDK。工程就是普通的Java工程,名字为webdemo

 2.因为是Web项目,所以要对这个普通的项目进行WEB扶持^^,在项目名称webdemo上右键单间选择菜单项"Add Framework Support..."

 3.在弹窗的Web Application前的复选框打钩。

 4. 此时项目结构会发生变化,在项目结构中加入了Web相关的元素。

 5. 配置Tomcat容器。前提是已经下载并安装或解压缩完毕。我使用的是Tomcat9。配置时选择Run菜单的Edit Configurations...菜单项,也就是配置Web项目的运行环境。

 6.点击左上角+,选择Tomcat Server Local,开始配置。

7.配置Tomcat基本信息

 首先配置的Server选项卡的内容,这是服务器启动时的相关信息。

VM options里面配置的内容是防止Tomcat启动时的配置信息有中文乱码。

同时还需要在IDEA的配置文件vmoptions中也加上这一句才可以。 

 ​​​​​​

 然后是配置Deployment选项卡,这里配置的是服务器启动后,部署什么内容到服务器中:

点击+,选择Artiface...菜单项 

可以看到部署的内容就是我们的Web项目。但是需要注意的是窗口下方的Application Context,如果按照这个内容,那意味着我们项目部署后的根路径是http://localhost:port/webdemo_war_exploded/

 如果你觉得没问题,那就直接OK。但是我还是觉得根路径是/比较符合习惯。

 项目部署后,项目的根路径是localhost:port/

 8.配置了Tomcat之后,项目面板又会产生变换。

9. 接下来要编写 Servlet,前提是要导入应有的JAR文件。这里我整体将Tomcat的lib作为项目的库(Library)导入。

首先添加项目库(Library):选择File菜单下的Project Structure...菜单项

 在弹出的窗口中选择Libraries,然后点击+,选择Java,添加要添加的库的位置:

 选择Tomcat的lib文件夹:

点击OK后,IDEA马上提问是否以项目模块的形式引用库:

 注意,这里如果点击OK,那么库的名字就是lib。我们不妨先点击Cancel,给库起一个容易辨识的名字后再手动的添加为项目模块。 

 将库的名字改为TomcatLib,然后点击OK

 现在手动将TomcatLib作为项目的模块导入到项目中。

依然是点击File的Project Structure...然后选择Modules(模块),点击+,导入Library....

选中刚才的TomcatLib

最后在TomcatLib的复选框中打√,表示确定引入。

 10.编写Servlet,在src文件夹下右键选择New...然后是Servlet

 然后填入具体的类名和包名,注意Java关于类名与包名的命名规范。

点击OK后,IDEA会提供一些FirstServlet的模板代码:

 @WebServlet是用注解的形式向Tomcat注册该Servlet。当然,如果不习惯使用注解的方式注册,一样可以通过传统的编写web.xml方式来进行注册。

使用注解注册一般提供两个信息:

  1. name应该是类的全限定名,也就是包名.类名。
  2. value对应的是触发该servlet的URL。

@WebServlet还提供了“传统”的urlPattern属性,value与它的作用是一致的。原则上,提供了value就不需要提供urlPattern了,但是如果你两个都提供,以urlPattern的内容为准。

doGet和doPost不用赘述,分别对应以get还是post的方式对value/urlPattern指定的url发起访问时回调的方法。

我们按照这个规则稍微修改一下FirstServlet:

当对/first发起get访问时,会在控制台打印一句话,并跳转到一个名为test1.jsp。

12 编写test1.jsp,格局项目结构,我们直接复制index.jsp,并黏贴为test1.jsp

 

 可以酌情修改index.jsp和test1.jsp

 

 13.至此所有配置完毕,从IDEA中启动Tomcat。点击绿色三角 

 IDEA底部的控制台会输出一些信息,当服务器启动结束时,注意观察Tomcat的状态:

 服务器状态已经从Not Started变为了Running,表示服务器处于正常运行中。在Tomcat服务器/容器中装载的是webdemo.war exploded。

此时浏览器中应该显示的是index.jsp的内容:

 注意观察路径,我们现在的位于根路径/,别忘了这是在Deployment选项卡的Application context中设置的。

接下来访问路径/first,看看控制台和页面变换:

 显然我们的FirstServlet发挥了作用。

---------------------------------------------------------------------------------------------------------------------------------

尾声:最后我们再看一下通过web.xml配置servlet过程。

首先去掉FirstServlet的@WebServlet注解。

接着在项目面板中找到web.xml所在位置,双击打开编辑:

 

 通过xml标签,进行servlet的注册和url的映射。

用<servlet>注册servlet,用<servlet-mapping>进行url映射。两个标签之间通过servelt的名字进行关联。

<?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"><servlet><servlet-name>firstServlet</servlet-name><servlet-class>servlets.FirstServlet</servlet-class></servlet><servlet-mapping><servlet-name>firstServlet</servlet-name><url-pattern>/first</url-pattern></servlet-mapping>
</web-app>

再起启动服务器,测试一下,效果与使用注解方式注册应该是有一样的。

关于web.xml再说两点:

  1. 为什么浏览器启动后会显示index.jsp呢?这是因为在Tomcat的配置文件夹conf中也有一个web.xml,这个web.xml相当于全局配置,在里面有一段配置内容。
        <welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list>

    当浏览器初始启动进入根路径,tomcat会在web部署结构下依次查找是否存在这些文件,如果存在就会自动在浏览器中呈现。如果有注册的servelt映射<url-pattern></url-pattern>,则servelt的配置会压制welcome-file-list的设置。

  2. 如果在web.xml中出现 metadata-complete="true",那么它将压制@WebServlet注解,Tomcat只会参考web.xml的信息进行处理。

    <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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true">

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20221125使用PR2023自动识别obs-studio录屏生成的MKV视频的字幕

20221125使用PR2023自动识别obs-studio录屏生成的MKV视频的字幕 2022/11/25 19:07 01 obs.png obs studio &#xff08;64bit&#xff09; 02 obs 设置.png 03 obs 输出.png 04 obs默认为MKV.png 05 obs改mkv为MP4.png 警告&#xff1a;如果文件无法完成&#xff08;例如&…

嵌入式驱动初级-阻塞与非阻塞

文章目录前言一、五种IO模型二、阻塞与非阻塞三、多路复用前言 记录嵌入式驱动学习笔记 一、五种IO模型 当应用程序对设备驱动进行操作的时候&#xff0c;如果不能获取到设备资源&#xff0c;那么阻塞式 IO 就会将应用程 序对应的线程挂起&#xff0c;直到设备资源可以获取为止…

b站黑马JavaScript的Ajax案例代码——图书管理案例

目录 目标效果&#xff1a; 重点原理&#xff1a; 1.js数组操作中push方法 2.jquery中append方法 3.js数组操作中join方法 4.jQuery中attr方法 5.jQuery中trim方法 代码部分&#xff1a; 1. 图书管理案例.html(js部分全是重点&#xff0c;html部分用于看结构) 2.jquery.js…

mybatis复习05,mybatis的缓存机制(一级缓存和二级缓存及第三方缓存)

mybatis复习05,mybatis的缓存机制&#xff08;一级缓存和二级缓存&#xff09;MyBatis的缓存机制MyBatis的一级缓存MyBatis的二级缓存二级缓存的相关配置MyBatis缓存查询的顺序整合第三方缓存EHCacheEHCache配置文件说明&#xff1a;MyBatis的缓存机制 MyBatis作为持久化框架&…

什么是DCS系统?DCS和SCADA的区别

如果你在工业自动化的企业环境中操作&#xff0c;可能听说过分布式控制系统 (DCS) 和监控和数据采集 (SCADA) 系统。 DCS系统和SCADA系统有很多共同点&#xff0c;因为它们都被称为受控计算机系统&#xff0c;接收和评估合法数据以实现远程访问监控和管理。 DCS(分布式控制系…

Flutter 中使用 extension 使项目更具可读性和效率 01

Flutter 中使用 extension 使项目更具可读性和效率 01 原文 https://medium.com/bedirhanssaglam/make-your-flutter-projects-more-readable-and-effective-with-extensions-b7dffd32e2f4 前言 代码的可读性和实用性在《 Flutter 》中非常重要。今天我们将编写一些 extension …

体系结构27_多处理机(1)

单处理机的发展正在走向尽头&#xff1f; 并行处理机在未来将会发挥更大的作用。 1.获得超过单处理器的性能&#xff0c;最直接的方法就是把多个处理器连在一起。 2.自1985年以来&#xff0c;体系结构的改进使性能迅速提高&#xff0c;这种改进的速度能否持续下去还不清楚&a…

信号类型(雷达)——雷达波形认识(一)

系列文章目录 《信号类型&#xff08;雷达通信&#xff09;》 文章目录 前言 简述 总结 前言 本文将结合个人研究经验&#xff0c;从雷达波形简单谈谈我对雷达的认识。之后将对常见的雷达波形进行简单分析。 简述 雷达的波形决定了信号处理的手段以及对应的雷达功能&#x…

体系结构29_多处理机的互联网络

互连网络是将集中式系统或分布式系统中的结点连接起来所构成的网络&#xff0c;这些结点可能是处理器、存储模块或者其它设备&#xff0c;它们通过互连网络进行信息交换。在拓扑上&#xff0c;互连网络为输入和输出两组结点之间提供一组互连或映象&#xff08;mapping&#xff…

【Linux】进程创建/终止/等待/替换

目录 一、子进程的创建 1、fork函数的概念 2、如何理解fork拥有两个返回值 3、fork调用失败的场景 二、进程的终止 1、main函数返回值 1.1main函数的返回值的意义 1.2将错误码转化为错误信息 1.3查看进程的退出码 2、进程退出的情况 1、进程的正常退出与异常退出 2…

Nodejs中包的介绍及npm安装依赖包的多种方法

文章目录1 包的介绍1.1 什么是包1.2 包的来源1.3 为什么需要包1.4 从哪里下载包1.5 如何下载包2 npm2.1 npm安装依赖包2.2 装包后多了哪些文件2.3 安装指定版本的包1 包的介绍 1.1 什么是包 Nodejs中的第三方模块又叫做包 就像电脑和计算机指的是相同的东西&#xff0c;第三…

推特自动发帖,全天占据核心流量

利用热门趋势和Hashtags标签 Twitter有一个热门趋势&#xff0c;跟微博热搜是差不多的&#xff0c;卖家可以多关注一下热门趋势&#xff0c;看看有没有和产品相关的内容。在帖子中加入趋势性和热门的标签&#xff0c;是一种非常好的营销方式。 这一方面能够增加推文的热度&am…

android源码-ContentProvider实现原理分析

前言&#xff1a; 最初的目的是想研究下ContentProvider产生ANR原因的&#xff0c;但是如果要讲ANR的原因&#xff0c;那么必须要了解ContentProvider的完整实现原理&#xff0c;所以本篇就先讲一下ContentProvider的实现原理&#xff0c;下一篇再去讲ANR的原因。 本篇主要会讲…

Baklib知识库|为什么知识共享工具对减少内部知识缺口至关重要

你的企业是否存在知识缺口&#xff1f; 知识缺口——没有对关键知识进行研究和记录&#xff0c;以有效地传播信息&#xff0c;并教育企业内外的用户——可能是寻求生产率最大化并最终实现利润增长的公司的一个关键缺陷。知识&#xff08;或数据、关键信息等&#xff09;是你的…

网络通信基本原理

通讯的必要条件 主机之间需要有传输介质。光纤、蓝牙、wify主机上必须有网卡设备。把二进制信息转为高低电压的过程就是数据的调制过程。把电信号转为二进制信息的过程为解调制。主机之间需要协商网络速率。 网路的通讯方式 日常生活中&#xff0c;我们通讯的方式不可能只有…

现代密码学导论-14-基于伪随机发生器的EAV安全

目录 3.3.3 基于伪随机发生器的EAV安全 用伪随机发生器进行加密的图示 CONSTRUCTION 3.17 一种基于伪随机发生器的私钥加密方案 THEOREM 3.16 基于伪随机发生器的私钥加密方案的EAV安全 THEOREM 3.16 的证明 最后来理一下 3.3.3 基于伪随机发生器的EAV安全 用伪随机发生…

sql server如何卸载干净?来看这里

一、如何卸载干净 1.关闭服务 快捷键&#xff1a;windows R&#xff0c;在命令行输入&#xff1a; services.msc&#xff0c;把有关SQL都关闭 &#xff0c;下图所示&#xff1a; 2.到控制面板&#xff0c;卸载 sql server 3.删除磁盘里的文件 我的在c盘里&#xff0c;看各位…

Linux Command htpasswd 创建密码文件

文章目录Linux Command htpasswd 创建密码文件1. 简介2. 安装3. 语法4. 选项5. 示例6. 其他Linux Command htpasswd 创建密码文件 1. 简介 htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。 2. 安装 centos 7、 redhat&#xff…

详解设计模式:简单工厂模式

简单工厂模式&#xff08;Smiple Factory Pattern&#xff09;&#xff1a;定义一个工厂类&#xff0c;他可以根据参数的不同返回不同类的实例&#xff0c;被创建的实例通常都具有共同的父类&#xff0c;简单工厂模式也被称为静态工厂模式。 &#xff5e; 本篇内容包括&#xf…

SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式2&#xff1a;使用注解方式整合Mybatis1.先用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper代理接口5.创建Service层和Service的实现层6.创建控制层&#xff08;也就是web层&a…