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

[ 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.dtcms.com/a/342830.html

相关文章:

  • LTM框架Letta
  • Java项目:基于SpringBoot和VUE的在线拍卖系统(源码+数据库+文档)
  • 【leetcode】202. 快乐数
  • IKE工作过程
  • 树表转换成有层次的List列表(无限层级)
  • 北京-15k测试-入职甲方金融-上班第二天
  • Python面向对象高级编程——多重继承
  • (LeetCode 面试经典 150 题) 129. 求根节点到叶节点数字之和 (深度优先搜索dfs)
  • 麒麟系统播放图片 速度比较
  • 【Python代码】谷歌专利CSV处理函数
  • 【双极性ocl放大电路原理图】2022-11-11
  • 计算机网络:网络基础、TCP编程
  • Seaborn数据可视化实战:Seaborn基础与实践-数据可视化的艺术
  • 数据安全管理——解读银行保险机构数据安全管理办法【附全文阅读】
  • 哈希:最长连续序列
  • 如何根据团队技术能力选择最适合的PHP框架?
  • Python 标准库--python012
  • 机器学习集成算法与K-means聚类
  • Spring两个核心IoCDI(二)
  • 【信创系统】信创系统传输文件
  • 科普:Python 中颜色的格式: RGB 格式 v.s. RGBA 格式
  • Terraform vs Ansible:基础设施即代码(IaC)工具深度对比与实战指南
  • 哈尔滨服务器托管,如何实现高效稳定运行?
  • 泛型与反射
  • MySQL--MVCC
  • MPS MPQ2013AGQ-AEC1-Z MPS芯源汽车级 同步降压转换器IC 电源传感器IC
  • 【密码学】深入浅出栅栏密码:原理、流程与实现
  • Android:compose-Scaffold组件
  • 【CS创世SD NAND征文】存储芯片在工业电表中的应用与技术演进
  • 基于Python与Tkinter开发的微博多功能自动化助手