自学内容网 自学内容网

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

需要搭建的环境

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,端口

子网划分,子网掩码


原文地址:https://blog.csdn.net/hunandede/article/details/140748203

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!