[ Servlet 服务器]

目录

[一. web概述](#一. web概述)

[1. 定义:](#1. 定义:)

[2. web开发环境搭建](#2. web开发环境搭建)

[(1). 获取Tomcat安装程序包](#(1). 获取Tomcat安装程序包)

[(2). 安装JDK](#(2). 安装JDK)

[(3). Tomcat 修改端口号](#(3). Tomcat 修改端口号)

[3. 创建web项目(*)](#3. 创建web项目(*))

[二. servlet 概述](#二. servlet 概述)

[1. 定义:](#1. 定义:)

[2. Servlet的作用:](#2. Servlet的作用:)

[三. http 请求](#三. http 请求)

[1. HTTP 定义:](#1. HTTP 定义:)

[2. HTTP 请求](#2. HTTP 请求)

[(1). 定义:](#(1). 定义:)

[(2). 请求行 请求头 请求体](#(2). 请求行 请求头 请求体)

[(3). http两种请求方式](#(3). http两种请求方式)

[(4). 常用方法](#(4). 常用方法)

[3. 响应](#3. 响应)

[1. 定义:](#1. 定义:)

[2. 状态码:](#2. 状态码:)

[四. 过滤器](#四. 过滤器)

[1. 定义:](#1. 定义:)


一. web概述

1. 定义:

Web服务器是指驻留于因特网上某种类型计算机的程序. 可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览; 它相当于一个容器,作为中间件连接用户与程序

WEB服务器有很多,流行的WEB服务器有Tomcat 、 WebSphere 、 WebLogic、Jboss等

在我们的电脑上安装一款Apache 的开源服务器Tomcat,Tomcat支持运行Java EE程序

在小型的应用系统或者有特殊需要的系统中,该服务器支持全部JSP以及Servlet规范

2. web开发环境搭建

Tomcat官网 Apache Tomcat® - Welcome!

(1). 获取Tomcat安装程序包

tar.gz文件: Linux操作系统下的安装版本

zip文件 : Windows系统下的压缩版本

(2). 安装JDK

● 设置JAVA_HOME环境变量

● 设置PATH环境变量

● 安装Tomcat

● 解压tomcat压缩文件

(3). Tomcat 修改端口号

地址: D:\development\apache-tomcat-9.0.43\conf

更改server.xml中的端口

server.xml是Tomcat的主配置文件

提供Tomcat组件的初始配置,tomcat启动的时候执行这些初始化设置。

修改此文件后,需要重新启动tomcat. 如果此文件修改错误,则tomcat不能正常启动

3. 创建web项目(*)

之后会更新完善,大家记得催更

二. servlet 概述

1. 定义:

servlet = service + applet , 是用Java编写的服务器端的 程序 . java EE(servlet程序)运行在服务器中, 服务器负责调用Java程序, 进行前后端交互

2. Servlet的作用:

  1. 接收用户发送的请求数据

  2. 调用其他的java程序来处理请求

  3. 根据处理结果,将结果响应给客户端

三. http 请求

1. HTTP 定义:

HTTP(HyperText Transfer Protocol)超文本传输协议 (应用层的协议) , 以简捷、快速的方式,适用于分布式超媒体信息系统 . 基于TCP/IP通信协议来传递数据.

**超文本传输协议:**服务器传输超文本到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程

2. HTTP 请求

(1). 定义:

客户端连上服务器后,向服务器请求 web资源,称为客户端向服务器发送了一个http 请求

(2). 请求行 请求头 请求体

一次http请求包含 请求行 请求头 请求体.

请求行和请求头由浏览器自己发送, 客户端向服务器发送的数据在请求体中

请求行: 请求地址 请求方式,http版本

请求头: 请求中放一些客户端的环境信息

请求体: post发送的请求在请求体中

(3). http两种请求方式

get请求: 一般从服务器获取数据(发送少量数据,获取大量数据)

数据只能拼接在地址的后面,会在地址栏显示出来 例如超链接

post请求:一般主要是向服务器提交数据(表单)

向后端发送大量数据 数据在请求体中,发送的数量没有限制,还可以提交文件,数据不会在地址栏里显示

java 复制代码
package org.example.webserver;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

//servlet是服务器
@WebServlet(urlPatterns = "/hello")//配置前段访问的地址
public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }
    /*服务器会把请求中所有的数据封装到HttpServletRequest对象中,需要请求中的数据,
    直接从对象中获取,用HttpServletRespons对象,向客户端做出响应

     doGet和doPost中封装了HttpServletRequest, 表示请求对象;
                        HttpServletResponse,表示响应对象 */
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {

        System.out.println(req.getMethod());
        System.out.println("后端接收到了前端 的请求");
        System.out.println(req.getParameter("name"));//获取请求中, 自己发送的数据

        //获取请求头中的数据
        System.out.println(req.getRemoteAddr());//客户端的ip
        System.out.println(req.getRemotePort());//客户端的端口
        System.out.println(req.getHeader("user-agent"));
        System.out.println(req.getHeader("accept-language"));

        //jdbc
        //mybatis
        //响应
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //post请求中文解码方式和前端编码方式不一致, 所以中文会乱码
        req.setCharacterEncoding("utf-8");//设置 请求 中的数据解码格式
        String name = req.getParameter("name");//获取参数
        String password=req.getParameter("password");

        //设置响应内容的编码方式, 需要在获得PrintWriter之前设置
        resp.setContentType("text/html;charset=utf-8");//设置 响应头,为响应的内容设置编码格式
        PrintWriter printWriter =resp.getWriter();//获得打印输出字符流, 以流的形式向前端做出响应

        //各种逻辑处理,与数据交互
        if (name.equals("张三")&&password.equals("111")){//向客户响应体端做出响应
            printWriter.write("<h1>登录成功</h1>");//响应体 响应内容
        }else{
            printWriter.write("<h1>账号或密码错误</h1>");//响应体
        }
    }
}
(4). 常用方法

● getParameter(name) String 通过name获得值

● request.setCharacterEncoding(编码格式) 处理post请求中文乱码

● getMethod() 得到客户机请求方式

● getScheme() 请求协议

● getRemoteAddr() 返回发出请求的客户机的IP地址

● getServerName() 服务器名(ip或域名)

● getServerPort() 服务器端口

3. 响应

1. 定义:

一个http响应表示服务器向客户端回送的数据,包括 响应行,响应头,响应体

**响应行:**包含了http协议版本,以及用于描述服务器对请求的处理结果。

HTTP/1.1 (协议版本) 200(状态吗) OK(状态码描述)

响应头: 用于描述服务器的基本信息,以及数据描述

Server Apache-Coyote/1.1

Content-Type text/html;charset=UTF-8

Content-Length 0

Date Wed, 13 Sep 2017 02:26:07 GMT

响应体: 服务器向客户端浏览器回送的正文

2. 状态码:

http响应状态码:
200: 表示请求成功,后端处理没有问题,响应成功
404: 表示请求的资源不存在,请求路径中项目名,servlet地址写错了
ip和端口 没有问题,但是后端找不到项目
500: 服务器 内部出错了( 即 java代码出错)

四. 过滤器

1. 定义:

在请求到达servlet程序前,可以让请求进入过滤器中,进行一些处理(字符集编码设置,用户登录是否失效)

java 复制代码
package org.example.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/*过滤器:
     在请求到达servlet程序前,可以让请求进入过滤器中,进行一些处理
     (字符集编码设置,用户登录是否失效)
*/
@WebFilter(urlPatterns = "/*")//配置哪些请求可以进入到此过滤器
public class EncodFilter implements Filter {

    //执行过滤操作的方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        System.out.println("编码过滤器");

        //设置编码格式,防止乱码
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setContentType("text/html;charset=utf-8");

        //让请求离开过滤器,继续相互执行,后一个可能是目标Servlet,还可能是下一个过滤器
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
相关推荐
Leinwin5 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382505 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇5 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7595 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣6 小时前
智能体选型实战指南
运维·人工智能
yy55276 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔8 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密8 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20158 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑