javaweb

一、tomcat的管理及访问

1.1静态资源的动态资源

image-20230811154458607

1.2tomcat的目录结构

image-20230811161215212

1.3web项目部署

image-20230811170219931


问题:将 tomcat 集成到IDEA中,并且在 tomcat 中部署了 web 项目,在IDEA中运行 tomcat,但发现IDEA使用 tomcat 部署的项目在 tomcat 安装目录下的 webapps 中无法找到,那么它到底在哪里呢?

结论:IDEA 使用 tomcat 部署项目后不会把编译后的项目复制到 tomcat 的 webapps 目录下,而是复制一份配置文件到指定目录下,让 tomcat 找到这个项目,也就是说每个项目都有属于自己的一份 tomcat 配置,互不干扰。

img

每个项目的配置文件夹中有一个"/conf/Catalina/localhost/<虚拟目录名>.xml"文件

其中,path 指虚拟目录名称;docBase 指IDEA使用 tomcat 部署项目的路径。

因此,整个项目的运行过程:IDEA 复制一份 tomcat 的配置文件到指定目录中,之后启动 tomcat 安装目录下的 catalina.bat 文件,tomcat读取配置文件,找到项目位置,然后就运行起来了。

https://blog.csdn.net/Mr_zhiqiu/article/details/78652155


1.4浏览器访问web服务器

打开浏览器,输入网址

http://host-ip:tomcat-port/web-Path/index.html

image-20230814111506223

1.5tomcat服务器请求响应流程

image-20230814113104143

对于并发请求有不同的线程来响应。

1.6tomcat端口配置

image-20230814141427307

端口范围是1~65535,2000一下的端口被很多系统服务绑定了,80是浏览器的默认端口。

二、HTTP协议介绍及请求规则

2.1什么是HTTP协议

image-20230814142614601

2.2HTTP协议的特点

  • 基于连接通信:当浏览器与服务器进行通信时,会首先建立网络连接,通过网络连接进行通信。

    • 短链接:在HTTP1.0中,浏览器向服务器发送请求,建立连接,但是这个连接只作用于浏览器和服务器的一次请求响应,这次请求响应完成之后则断开连接。

    image-20230814143002451

    • 长连接:在HTTP1.1中,浏览器请求于服务器建立连接,进行请求和响应之后,会等待几秒钟,在这几秒内如果浏览器有新的请求则直接使用之间的这个连接进行请求和响应,如果过了几秒钟没有新的请求,则断开连接。

    image-20230814144007673

  • 请求与响应模式:首先由浏览器向服务器发送请求,服务器再对请求进行响应,如果没有浏览器的请求服务器是不会主动向浏览器进行响应的。

  • 无状态:服务器不会感知同一个客户端的多次请求。(就是当服务器接收到客户端请求之后,不能识别这个客户端是否请否请求过我)

  • 简单灵活:实现简便,可以传输不同类型的数据(客户端—文本\文件---->服务器)

2.3HTTP协议通信规则

image-20230814145348455

2.3.1HTTP请求规则

说明:当在浏览器中发送请求时,浏览器已经实现了HTTP请求协议,基于这个协议发送请求的。 

image-20230814153328193

通过自定义的HTTP服务器,接受浏览器请求,查看HTTP请求规则:

package com.cyl.HttpRequest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class MyHttpServer {
    public static void main(String[] args) throws IOException {
        //创建一个网络服务
        ServerSocket serverSocket = new ServerSocket(9999);
        //当浏览器请求我这个服务器之后就建立网络连接(socket对象)
        Socket socket = serverSocket.accept();
        //通过socket的输入流,可以读取浏览器发起的http请求内容
        InputStream inputStream = socket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

        //读取浏览器发送的Http请求
        String content=null;
        while ((content=reader.readLine())!=null){
            System.out.println(content);
        }
        
        //暂时未对浏览器请求响应
    }
}

image-20230814154050626

2.3.2HTTP响应规则

image-20230814163216101

2.4HTTP响应状态码

当浏览器向服务器发送请求、服务器对浏览器进行响应时,会响应给浏览器一个状态码,不同的状态码表示服务器对不同请求的处理。

image-20230814165004430

三、servlet

3.1servlet简介

servlet是 服务器端的java程序,能够接受HTTP、处理HTTP请求、并对HTTP请求进行响应的 动态网页技术。

servlet作用:

image-20230817095237139

3.2Javaweb工程的目录结构

image-20230817101038505

3.3创建servlet类

image-20230817104352575

3.4配置servlet

image-20230817104437683

3.4.1基础web.xml配置servlet

<!--    配置BookListServlet类的访问路径-->
<!--    servlet标签      配置类路径-->
    <servlet>
        <servlet-name>BookListServlet</servlet-name>
        <servlet-class>com.cyl.BookListServlet</servlet-class>
    </servlet>
<!--    servlet-mapping标签  配置url -->
    <servlet-mapping>
        <servlet-name>BookListServlet</servlet-name>
        <url-pattern>/booklist</url-pattern>
    </servlet-mapping>

3.4.2基于注解来配置servlet

  • 在创建的servlet类上添加@webServlet注解,在注解后的参数中配置url,url也必须以/开头

    @WebServlet("/book-query")
    public class BookListQuery extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("BookListQuery---------------处理请求2");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("BookListQuery---------------处理请求1");
        }
    }
    

3.5浏览器访问测试

通过浏览器发送HTTP请求,访问tomcat中web项目的Servlet类

image-20230817154633005

###########################

问题描述 
	idea中的tomcat配置的URL和Application Context联系?
问题解决 
	URL指的是服务器默认打开路径。 Application Context是web应用的路径。 部署项目时若制定了Application Context,按以下路径访问自己的项目

###########################

3.6 GET请求和POST请求

3.6.1 GET请求

  • 使用get方式请求服务器,传递的参数会拼接到URL后面,以?分割URL和参数,多个参数以&符号分开
    <form action="http://www.baidu.com" method="get">
        <input type="text" name="id"/><br>
        <input type="text" name="name"/><br>
        <input type="submit" value="get提交"/><br>
    </form>

image-20230817162459452

3.6.2 POST请求

  • 使用post方式请求服务器,参数是通过请求正文进行传递的(request body)
    <form action="http://www.baidu.com" method="post">
        <input type="text" name="id"/><br>
        <input type="text" name="name"/><br>
        <input type="submit" value="post提交"/><br>
    </form>
image-20230817162809656
image-20230817162833850
9656](https://gitee.com/afenda/typora/raw/master/img/202308171628692.png)
image-20230817162833850
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值