认识JAVAWEB中的tomcat和servlet

两种架构

CS Client/Server

应用程序的开发

BC Browser/Server 目前最火

网页,应用系统

客户端和服务器通信的协议

协议概述

1.网络协议:网络中计算机进行通信遵循的规范

物理层,链路层
网路层
传输层
应用层
TCP,UDP
IP
HTTP:80,FTP:21,SMTP:25,DNS,TELNET

2.在JAVAWEB中遵循的协议是HTTP协议

1.HTTP协议:是建立在TCP协议基础之上 (传输双方需要建立连接),集与请求 相应模式的 无状态的应用层协议
2.无状态:两次请求之间不会保存任何关联的信息,由于现实生活中需要报纸多次请求的关联 所以需要研究 保持会话的技术 :cookie和session
3:请求request:从客户端(浏览器) 发送到服务器的报文[有格式的字符串]
❤️ 1格式:
请求行 请求方法GET/POST /资源 协议版本HTTP/1.1 请求头 Host Accept Accept-language Cookie.. 消息体 key=value&key1=value
❤️ 2请求案例
在这里插入图片描述

4:响应response:从服务器回给客户端的报文
❤️ 1.格式:
状态行
响应头
相应正文 html
❤️ 2.案例:
在这里插入图片描述

5.浏览器:能够发出标准的HTTP请求报文,接收并解析标准的HTTP相应报文的软件
6.WEB服务器:能够接收并解析标准的HTTP请求,返回标准的HTTP请求的

三.Tomcat

概述

Tomcat就是一款免费的、开源的、纯JAVA实现的WEB服务器。官网:tomcat.apache.org,自己下载解压到本地,注意解压路径不要有中文

目录

在这里插入图片描述
解释一下各个包都是干啥的:
bin:开关的工具目录
conf:Tomcat的配置文件目录
lib:tomcat的jar包
logs:日志
temp:临时目录 文件上传临时存放
work:工作时自动生成和管理的目录
webapps: 存放我们写的WEB工程的目录

开猫

配置环境变量JAVA_HOME,路径放你的jdk路径
在这里插入图片描述

进入bin目录下找到startup.bat双击运行
在这里插入图片描述
几里哇啦写一堆,不用管他,最小化打开浏览器,地址栏输入localhost:8080 回车
在这里插入图片描述
呐!tomcat就装上了

四.Servlet技术?

什么是Servlet

打个比方吧,我们的tomcat就像是酒店门口的迎宾,他把客人领进来就交给serverlet(大堂经理)来分析需求,然后把需求扔给dao层(厨师)用CF和apache(刀和锅)去和数据库(菜品)打交道,做完饭之后厨师拿到菜(resultSet),交给servlet,servlet用io流写进response再通过tomcat交给客户

发送请求
返回响应
客户端
服务器
controller
servelet
Dao
Datebase

必要性:
WEB服务器(tomcat)可以接受请求,也可以返回给客户端相应,但是具体如何处理请求需要程序开发人员处理需要后端开发者写servelet和Dao

写个案例

idea建一个javaEE的项目,注意把tomcat的路径给导进去! 项目目录如下
在这里插入图片描述
打包路径设成classes文件
在这里插入图片描述
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="hello">测试</a>
</body>
</html>

helloServlet.java

生命周期
init()初始化阶段

service()处理客户端请求阶段

destroy()终止阶段

package com.etoak.student.controller;



import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

@WebServlet("/hello")
public class HelloServlet implements Servlet {
    
    
    public HelloServlet(){
    
    
        System.out.println("HelloServlet执行了");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    
    
        System.out.println("init..");
    }

    @Override
    public ServletConfig getServletConfig() {
    
    
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    
    
        System.out.println("service..");
        HttpServletRequest request =(HttpServletRequest)servletRequest;
        HttpServletResponse response =(HttpServletResponse)servletResponse;

        String method =request.getMethod();//请求的方法
        String protocol =request.getProtocol();//请求的协议
        String url = request.getRequestURL().toString();
        String contextpath =request.getContextPath();
        String uri = request.getRequestURI();
        Enumeration<String> headers =request.getHeaderNames();
        while(headers.hasMoreElements()){
    
    
            String header =headers.nextElement();
            String value = request.getHeader(header);
        }
        //请求的参数
        response.setContentType("text/html;charset =UTF-8");
        String username =request.getParameter("username");
        PrintWriter out =response.getWriter();
        out.write("大家好");
        out.flush();
        out.close();
    }

    @Override
    public String getServletInfo() {
    
    
        return null;
    }

    @Override
    public void destroy() {
    
    

    }
}

调试运行,点击测试
在这里插入图片描述
呐,servlet getWriter写下的"大家好"就有了,response的响应头和响应报文tomcat自己封装不需要我们写.
在这里插入图片描述

总结

tomcat+servlet就这么多内容了,原理搞懂了吗,有错误希望指正,纯手写,勿商用

猜你喜欢

转载自blog.csdn.net/t_t2_3/article/details/113241703
今日推荐