当前位置: 首页 > backend >正文

[ Servlet 服务器]

目录

一. web概述

1. 定义:

2. web开发环境搭建

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

 (2). 安装JDK

 (3). Tomcat 修改端口号

3. 创建web项目(*)

二. servlet 概述

1. 定义:

2. Servlet的作用:

三. http 请求

1. HTTP 定义:  

2. HTTP 请求

    (1). 定义: 

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

    (3). http两种请求方式

    (4). 常用方法

3. 响应

    1. 定义: 

    2. 状态码:

四. 过滤器

     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请求:一般主要是向服务器提交数据(表单)

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

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,表示响应对象 */@Overridepublic 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());//客户端的ipSystem.out.println(req.getRemotePort());//客户端的端口System.out.println(req.getHeader("user-agent"));System.out.println(req.getHeader("accept-language"));//jdbc//mybatis//响应}@Overrideprotected 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程序前,可以让请求进入过滤器中,进行一些处理(字符集编码设置,用户登录是否失效)

package org.example.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;/*过滤器:在请求到达servlet程序前,可以让请求进入过滤器中,进行一些处理(字符集编码设置,用户登录是否失效)
*/
@WebFilter(urlPatterns = "/*")//配置哪些请求可以进入到此过滤器
public class EncodFilter implements Filter {//执行过滤操作的方法@Overridepublic 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);}
}

http://www.xdnf.cn/news/18300.html

相关文章:

  • electron-vite_18Less和Sass共用样式指定
  • 基于混合注意力网络和深度信念网络的鲁棒视频水印技术基础理论深度解析
  • AI设计师-标小智旗下AI在线设计平台
  • [论文阅读] 人工智能 + 软件工程 | 当AI成为文学研究员:Agentic DraCor如何用MCP解锁戏剧数据分析
  • 设计模式之观察者模式
  • 为什么可以kvcache
  • 订单簿数据深度学习方法在大单发现应用
  • 微信小程序集成vant-weapp时,构建npm报错的解决办法
  • 深度学习-计算机视觉-物体检测与边缘框实现
  • 区块链联邦学习思路一
  • 机器学习两大核心算法:集成学习与 K-Means 聚类详解
  • 如何保证数据库和缓存的一致性?
  • Java设计模式-模板方法模式
  • 常见开源协议详解:哪些行为被允许?哪些被限制?
  • B站 韩顺平 笔记 (Day 24)
  • K8S-Secret资源对象
  • 学习数组①
  • 1.Shell脚本修炼手册之---为什么要学Shell编程?
  • 【MySQL的卸载】
  • 读《精益数据分析》:规模化(Scale)—— 复制成功,进军新市场
  • PiscCode集成Hand Landmarker:实现高精度手部姿态检测与分析
  • JVM面试精选 20 题(终)
  • 【北京迅为】iTOP-4412精英版使用手册-第三十二章 网络通信-TCP套字节
  • 30.Linux cobbler自动化部署
  • 基于51单片机自动浇花1602液晶显示设计
  • STM32_0001 KEILMDK V5.36 编译一个STM32F103C8T6说core_cm3.h文件找不到以及编译器版本不匹配的解决办法
  • 多模型创意视频生成平台
  • 设计模式1-单例模式
  • PyTorch如何修改模型(魔改)?/替换模型,一般除了注意输入输出一致,还有其他要修改的吗?
  • 【Python】新手入门:python面向对象编程的三大特性是什么?python继承、封装、多态的特性都有哪些?