JavaWeb-Servlet的应用

打印 上一主题 下一主题

主题 932|帖子 932|积分 2796

目录

1. HTTP协议
2. HttpServlet
内容


HTTP


  • 什么是HTTP协议
HTTP 协议一般指 HTTP(超文本传输协议)。超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

  • HTTP请求消息


  • HTTP请求类型
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。目前使用比较广泛的是HTTP1.1。
  1. 1. GET 请求指定的页面信息,并返回实体主体。
  2. 2. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
  3. 3. HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
  4. 4. PUT 从客户端向服务器传送的数据取代指定的文档的内容。
  5. 5. DELETE 请求服务器删除指定的页面。
  6. 6. CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
  7. 7. OPTIONS 允许客户端查看服务器的性能。
  8. 8. TRACE 回显服务器收到的请求,主要用于测试或诊断。
  9. 9. PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
复制代码
虽然有九个请求方法,但是实际开发过程中使用比较多的是GET和POST。

  • HTTP响应消息
HTTP响应消息是向客户端提供请求的结果。结构如下:


  • HTTP 响应状态码
HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类:
  1. 1. 信息响应 (100–199)
  2. 2. 成功响应 (200–299)
  3. 3. 重定向消息 (300–399)
  4. 4. 客户端错误响应 (400–499)
  5. 5. 服务端错误响应 (500–599)
复制代码
状态码比较多,但是实际开发过程中遇到的比较多的是200,404,500等。

HttpServlet

HttpServlet是Servlet接口的实现类。主要用来处理HTTP请求。HttpServlet的doXxx方法是用来处理此类请求的。比如doGet方法处理GET请求。每个方法有两个HttpServletRequest和HttpServletResponse类型的参数。
  1. package com.example.aji.servlet;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import java.io.IOException;
  9. @WebServlet("/demo")
  10. public class DemoServlet extends HttpServlet {
  11.     @Override
  12.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  13.     }
  14.     @Override
  15.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  16.     }
  17. }
复制代码
HttpServletRequest


  • getHeader(param) 获取请求头中param参数对应的值。例:
  1. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.    String token = req.getHeader("token");
  3.    System.out.println(token);   
  4. }
复制代码


  • getParameter(param) 获取请求行中param参数对应的值。例:
  1.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.         String token = req.getHeader("token");
  3.         System.out.println(token);
  4.         String username = req.getParameter("username");
  5.         System.out.println(username);
  6.     }
复制代码


  • 更多方法自行测试
HttpServletResponse


  • .getWriter() 获取一个PrintWriter对象,通过PrintWriter对象的write()方法想返回给前端的数据写进HttpServletResponse的响应体中。例:
  1.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.         String token = req.getHeader("token");
  3.         System.out.println(token);
  4.         String username = req.getParameter("username");
  5.         System.out.println(username);
  6.         String password = req.getParameter("password");
  7.         resp.getWriter().write(username);
  8.     }
复制代码


  • .setStatus(statuscode) 设置响应码。例:
  1.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.         String token = req.getHeader("token");
  3.         System.out.println(token);
  4.         String username = req.getParameter("username");
  5.         System.out.println(username);
  6.         String password = req.getParameter("password");
  7.         //resp.getWriter().write(username);
  8.         //HttpServletResponse.SC_INTERNAL_SERVER_ERROR的值等于500
  9.         resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
  10.     }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表