网络协议一 : 搭建tomacat,intellij IDEA Ultimate 的下载,安装,配置,启动, 访问

news2024/11/15 20:46:22

需要搭建的环境

1.客户端--服务器开发环境 

客户端:浏览器(HTML+CSS+JS)

服务器:JAVA

1.安装JDK,配置JAVA_HOME   和  PATH

2.安装Tomcat 

3.安装IDE--intellij IDEA Ultimate  是旗舰版的意思。

2.TOMCAT 的下载和解压,配置,启动, 访问

tomcat 下载完成后,解压到本地计算机的任意一个地方就OK了,不用安装

D:\Ctool\JAVA\tomcat\apache-tomcat-8.5.93-windows-x64\apache-tomcat-8.5.93\bin

2.1启动tomcat

在windows 下 ,执行 startup.bat 文件

D:\Ctool\JAVA\tomcat\apache-tomcat-8.5.93-windows-x64\apache-tomcat-8.5.93\bin\startup.bat

在linux 下,执行 startup.sh 文件

当前下载的8.593 windows 版本,并没有startup.sh文件

在windows上启动后的截图

我们看到最后一行,提示 startup in 1124ms,说明正常启动了,花费了 1124ms

但是有个问题,中文是乱码

改动方法:

修改Tomcat的logging配置:

进入Tomcat的安装目录,找到conf文件夹中的logging.properties文件。
编辑该文件,找到如下一行(如果没有,可能需要手动添加):
java.util.logging.ConsoleHandler.encoding = UTF-8
将其修改为:
java.util.logging.ConsoleHandler.encoding = GBK

2.2 网络访问一个服务器上的某一个应用程序

假设在腾讯的服务器上,有两个服务器软件(一个tomcat1 ,一个tomcat2),

服务器软件1 tomcat1 占用80端口,上面有两个项目:一个qq,一个weixin

服务器软件2 tomcat2 占用8080端口,上面有两个项目:一个qq,一个wangzherongyao

假设 这台服务器的IP是:10.10.128.45

那么如果我们要访问 8080 端口的qq项目,下面的一张图片img,

访问路径应该是:  http://10.10.128.45:8080/qq/img

2.3 访问自己我们刚才启动的tomcat,

首先要知道启动这台电脑的ip,cmd执行ipconfig,就能知道IP

而tomcat使用的端口是8080,因此就知道了ip+端口

在浏览器上输入 http://192.168.31.202:8080/ 

因为我们是在当前计算启动的tomcat,因此ip也可以使用127.0.0.1,127.0.0.1也叫做回环地址

http://127.0.0.1:8080

也可以使用localhost

http://localhost:8080

结果如下:

这里还有一个问题,我们在网页输入的时候 并没有输入 项目名字,直接 http:// ip+端口 就访问了tomcat。实际上这个是个缺省配置。

我们从tomcat的文件目录可以看到实际上有很多的 项目。tomcat 中的项目都是放在 webapps中的

那我们使用 如下的三个地址理论上就能访问 docs 这个项目了

http://192.168.31.202:8080/docs/

http://127.0.0.1:8080/docs/

http://localhost:8080/docs/

实际测试结果发现,通过真实 IP 访问的不行,其他两个都可以,失败的时候报的error是403,并不是404

关于403 (403错误是网站访问过程中,常见的错误提示。资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限不当。)

在测试一个  http://127.0.0.1:8080/examples/

也是OK的

3.IDE--intellij IDEA Ultimate 的下载,安装,配置,启动, 访问

3.1.安装和破解

1. 卸载之前安装的IDEA

先删除之前安装的IDEA,如果之前安装过;则需要卸载,如果之前没有安装过,则不需要卸载

2. 将之前版本遗留的路径下的东西最好也删除了

C:\Program Files\JetBrains

C:\Users\Administrator\AppData\Local\JetBrains

C:\Users\Administrator\AppData\Roaming\JetBrains

3.运行如下的脚本,将注册表中的信息之类的删除了,然后重新注册

D:\Ctool\JAVA\IDEA\ja-netfilter-all\scripts\uninstall-all-users.vbs

D:\Ctool\JAVA\IDEA\ja-netfilter-all\scripts\install-all-users.vbs

4.安装如下版本的IDEA

D:\Ctool\JAVA\IDEA\ideaIU-2021.3.3.exe

5.激活

3.2 IDEA 的使用

新建项目

一个项目下有很多模块,这里新建一个模块

在模块下面新建一个具体的类

右键可以执行

3.3在IDEA中运行tomcat 并部署一个web 项目

3.3.1 给该项目 中的某一个模块 添加 web 应用程序,注意是要在java 模块上 “添加框架支持”

然后就会多一个web 文件夹

其中index.jsp 就是web 项目的首页,改动index.jsp中的字,方便以后检查

为了测试期间,我们还添加了两个文件  1.jpg, 和 aa.html.  注意:都是要放在 web 文件下的
 

3.2下一步:将tomcat集成到IDEA中,

注意:配置 Tomcat主目录是在 tomcat bin 的上一层
D:\Ctool\JAVA\tomcat\apache-tomcat-8.5.93-windows-x64\apache-tomcat-8.5.93

3.3 并 将项目部署到 tomcat

3.4 运行

http://localhost:8080/Helloworldweb/  是首页,如果没有写,tomcat 会自动的寻找 index.jsp之类的网页
 

3.5 注意事项 以及测试

注意您的项目部署的时候,重命名为 Helloworldweb,那么网址也就是这样了

打开如下

http://localhost:8080/Helloworldweb/1.jpg

http://localhost:8080/Helloworldweb/aa.html

3.6重新部署

4.IDEA 中使用 servlet-api 和 jsp-api,

在学习网络抓包的过程中,我们需要和服务器进行交互,那么就需要使用到 servlet 和 jsp 。

参见 baidu 关于 servlet 的说明:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

那么如何在IDEA中将 servlet 和 jsp 库导入呢?实际上tomcat中的lib 目录下,已经提供了这两个jar包了,我们要学习的就是如何在IDEA中导入这两包

在右上角的 项目结构中,

只要把tomcat 的lib添加进去,对应的servlet 和 jsp 就也会想用的添加进去

5.那么添加这个有啥用呢?主要是使用servlet 的交互功能

这是因为我要学习的是网络协议相关的内容,一定要让 客户端 和 服务器有 交互,不然怎么知道 客户端发的啥?服务器回复的啥?那学习个寂寞。

6. 在IDEA中实现一个网页,该网页会有username 和 password,还有一个提交 按钮,点击后和服务器实现交互功能

我们在web 下新建一个html 文件夹,在这个文件夹下新建一个 login.html

根据前面的知识,我们部署后,访问该 html的路径为:

http://localhost:8080/Helloworldweb/html/login.html
Helloworldweb 为我们给该项目起的名字

那么我们在里面写了一个form ,其action 的意思是,点击了submit后,应该将 username 和password 转到哪一个界面进行处理。

可以看到,刚开始我们写了一行 action="http://127.0.0.1:8080/HelloWorldweb/login"

意思是会指向 http://127.0.0.1:8080/HelloWorldweb 这个项目下的login网址。

后面又注释了,写成了 action="/HelloWorldweb/login", 实际上这两行的意思是一样的。

<!--<form action="http://127.0.0.1:8080/HelloWorldweb/login" method="get">-->
<form action="/HelloWorldweb/login" method="get">
    <div>用户名 <input name="username"></div>
    <div>密码 <input name="password"></div>
    <button type="submit"> 登陆 </button>

</form>

那么问题是这个login 具体是指向哪里呢?

这个login 实际上是我们新建一个 java 类,这个java 类的地址,这个类有些特殊,1.继承 HttpServlet类,2.使用@WebServlet 注解 

我们当前的注解 @WebServlet("/login") 后面跟的是 "/login",表示的就是当前java 类的访问路径就是 http://127.0.0.1:8080/HelloWorldweb/login ,,如果我们省略 ip+port 就是 /HelloWorldweb/login

/**
 * servlet要处理http请求,有两步需要实现
 * 1.继承 HttpServlet类
 * 2.使用@WebServlet 注解,我们这个项目原本的访问路径为  http://127.0.0.1:8080/HelloWorldweb
 * 我们在 @WebServlet 注解 后面加上"/login" 说明 如果要访问当前的 LoginServlet.java, 访问路径 http://127.0.0.1:8080/HelloWorldweb/login
 * 那么可以直接在浏览器 中 输入  http://127.0.0.1:8080/HelloWorldweb/login 访问吗?
 * 答案是可以的,只是什么都没有。那么这个还有啥用?
 * 我们新建的 web下的html 文件夹下的 login.html 中的 from的action 指向 http://127.0.0.1:8080/HelloWorldweb/login
 * 也可以直接写成 HelloWorldweb/login
 */

package com.hunandede.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * servlet要处理http请求,有两步需要实现
 * 1.继承 HttpServlet类
 * 2.使用@WebServlet 注解,我们这个项目原本的访问路径为  http://127.0.0.1:8080/HelloWorldweb
 * 我们在 @WebServlet 注解 后面加上"/login" 说明 如果要访问当前的 LoginServlet.java, 访问路径 http://127.0.0.1:8080/HelloWorldweb/login
 * 那么可以直接在浏览器 中 输入  http://127.0.0.1:8080/HelloWorldweb/login 访问吗?
 * 答案是可以的,只是什么都没有。那么这个还有啥用?
 * 我们新建的 web下的html 文件夹下的 login.html 中的 from的action 指向 http://127.0.0.1:8080/HelloWorldweb/login
 * 也可以直接写成 HelloWorldweb/login
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doget");
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("dopost");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println("accept value = " + username + "_" + password);

        if(username.equals("123") && password.equals("456")){
            //登陆成功
            response.getWriter().write("username = 123, password = 456, means login success");
        }else{
            //登陆失败
            response.getWriter().write("username != 123, or  password != 456, means login fail");

        }
    }
}

重新部署

运行结果:

成功 

网络抓包 

浏览器(chrome firefox),fiddler,wireshark

模拟工具

作用是模拟交换机,路由器,计算机,一个或者多个,因为不可能真的去买个交换机,路由器吧

Xshell ,Packet Tracer,GNS3

路由器,交换机

静态路由,动态路由

局域网,以太网,无线局域网

DNS,CDN,VPN,NAT

MAC,IPV4,IPV6,端口

子网划分,子网掩码

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

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

相关文章

基于嵌入-对比学习的联邦知识图谱补全

1 引言 1.1 现存问题 在联邦学习中&#xff0c;跨客户端的数据异质性(即非相同分布的数据)是主要挑战&#xff0c;因为当数据异质性存在时&#xff0c;本地目标可能与全局目标不同。 如图所示&#xff0c;School KG中的三元组表示Bob和Jack的学术信息&#xff0c;而ecommerc…

Redis与缓存

文章目录 Redis与缓存一致性问题大Key问题缓存穿透缓存击穿缓存雪崩 Redis与缓存 Redis作为缓存具有高性能、丰富的数据结构和灵活的过期机制等优点。由于Redis将数据存储在内存中&#xff0c;它能提供极低的延迟和高吞吐量&#xff0c;适合用于缓存数据库查询结果、会话数据和…

集成测试:确保软件模块协同工作的关键步骤

目录 前言1. 集成测试的概念1.1 增量集成测试1.2 大爆炸集成测试 2. 集成测试的主要作用2.1 确保模块间正确交互2.2 发现设计缺陷2.3 提高系统稳定性 3. 集成测试在整个测试过程中的地位3.1 从单元测试到集成测试3.2 从集成测试到系统测试 4. 常用的集成测试工具4.1 JUnit4.2 T…

嵌入式开发测试实训室解决方案

一、建设背景 随着物联网、人工智能等技术的飞速发展&#xff0c;嵌入式系统作为这些技术的重要载体&#xff0c;其重要性日益凸显。为了满足市场对嵌入式技术人才的需求&#xff0c;培养具有扎实理论基础、熟练实践技能及创新能力的嵌入式开发工程师&#xff0c;设计并建设一…

3. 类的生命周期

类的生命周期是指一个类被加载&#xff0c;使用&#xff0c;卸载的一个过程&#xff0c;如下图&#xff1a; 类的加载阶段&#xff1a; 加载(Loading)阶段第一步是类加载器根据类的**全限定名&#xff08;也就是类路径&#xff09;**通过不同的渠道以二进制流的方式获取字节码…

ClkLog:开源用户行为分析框架,让数据分析更轻松

ClkLog&#xff1a;开源用户行为分析框架&#xff0c;让数据分析更轻松 在数据驱动的时代&#xff0c;找到一个好用的用户行为分析工具真是难上加难。但是今天你有福了&#xff0c;开源免费的 ClkLog 就是你的不二选择&#xff01;本文将为你详细介绍 ClkLog 的功能特点、技术架…

OpenCV 彩色直方图

彩色直方图 &#xff08;1&#xff09;直方图是图像中像素强度分布。 &#xff08;2&#xff09;直方图统计了每一个强度值所具有的像素个数。 &#xff08;3&#xff09;cv2.calcHist(images, channels, mask, histSize, ranges) import cv2 import matplotlib.pyplot as …

2023年系统架构设计师考试总结

原文链接&#xff1a;https://www.cnblogs.com/zhaotianff/p/17812187.html 上周六参加了2023年系统架构设计师考试&#xff0c;这次考试与以前有点区别&#xff0c;是第一次采用电子化考试&#xff0c;也是教材改版后的第一次考试。 说说考前准备&#xff1a;为了准备这次考试…

cadence SPB17.4 - allegro - DRC error “Line to SMD Pin Same Net Spaing“

文章目录 cadence SPB17.4 - allegro - DRC error "Line to SMD Pin Same Net Spaing"概述笔记END cadence SPB17.4 - allegro - DRC error “Line to SMD Pin Same Net Spaing” 概述 铺铜前DRC正确。 铺铜后&#xff0c;报错 DRC error “Line to SMD Pin Same …

Squeeze-and-Excitation Networks

1、引言 论文链接&#xff1a;Squeeze-and-Excitation Networks (thecvf.com) 为了提高 CNN(convolutional neural network) 的表示能力&#xff0c;最近的几种方法已经显示出增强空间编码的好处。而 Jie Hu[1] 等专注于通道关系并提出了 SE(Squeeze and Excitation) 块&#x…

uniapp 使用css实现大转盘

思路&#xff1a; 1.一个原型的外壳包裹 2.使用要分配的个数&#xff0c;计算出角度&#xff0c;利用正切函数tan计算出角度对应对边长度 3.使用clip-path画出一个扇形 4.使用v-for循环出对应的份数&#xff0c;依次使用transform rotate旋转对应的角度。 注意&#xff1a…

DM集群的高可用的配置方式(多语言)

一、介绍 强调以下&#xff1a;dm_svc.conf必须放置到应用服务器上才行&#xff0c;放到其他服务器上识别不到。 文章中有的框架可能没写到并不代表不支持&#xff0c;有没提到的可文章下方留言。 1.dm_svc.conf的作用&#xff1a; dm_svc.conf文件主要是为了当DM数据库集群…

ES(ElasticSearch)倒排索引

目录 正排与倒排索引 1.正排索引 作用&#xff1a; 优点&#xff1a; 缺点&#xff1a; 2.倒排索引 原理&#xff1a; 倒排索引的构建流程&#xff1a; 倒排索引的搜索流程&#xff1a; 优点&#xff1a; 缺点&#xff1a; 3. 应用场景 倒排索引中有几个非常重要的概念…

Skyeye云智能制造企业版源代码全部开放

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢&#xff1f; 很多小伙伴在面试时都被问到过这个问题&#xff0c;刷到过这个题的同学马上就能回答出来&#xff1a;“利用三级缓存”。面试官接着追问&#xff1a;“哪三级缓存呢&#xff1f;用两级行不行呢&#xff1f;” 这时候如果没有深入研究…

AI副业赚钱免费资源大汇总

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;的热潮无处不在&#xff0c;许多人对于如何利用AI技术来创造收入机会感到好奇。本文将介绍一个名为aimoneyhunter的开源项目&#xff0c;这是一个专注于AI副业赚钱的资源汇总&#xff0c;旨在帮助人们在AI时代找…

技术干货 | 针对Spring-Boot 框架漏洞的初探

0x1 前言 这篇文章主要是给师傅们介绍下Spring-Boot 框架漏洞的打法以及主要对于Spring-Boot漏洞的接口泄露信息进行一个分析&#xff0c;后面使用了曾哥的Spring-Boot漏洞扫描工具&#xff0c;可以很大减轻我们对于这个漏洞接口的分析。 0x2 Spring框架简述 Spring是一个ja…

Ollama 在Windows Server 2019中部署 qwen:4b

1、环境 1.1、Ollama 1.2、Windows Server 2019 1.3、qwen:4b 1.4、nginx-1.27.0 2、部署后效果如下。 3、环境安装包下载链接包含本文所有的配置内容。 https://download.csdn.net/download/xingchengaiwei/89571623 4、安装ollama&#xff0c;官网下载地址Download Ollama…

【SpringCloud】企业认证、分布式事务,分布式锁方案落地-2

目录 高并发缓存三问 - 穿透 缓存穿透 概念 现象举例 解决方案 缓存穿透 - 预热架构 缓存穿透 - 布隆过滤器 布隆过滤器 布隆过滤器基本思想​编辑 了解 高并发缓存三问 - 击穿 缓存击穿 高并发缓存三问 - 雪崩 缓存雪崩 解决方案 总结 为什么要使用数据字典&…

一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操

一、LLMs 已经具备了较强能力了&#xff0c;为什么还需要 RAG(检索增强生成)? 尽管 LLM 已展现出显著的能力&#xff0c;但以下几个挑战依然值得关注&#xff1a; 幻觉问题&#xff1a;LLM 采用基于统计的概率方法逐词生成文本&#xff0c;这一机制内在地导致其可能出现看似逻…