首页 > 其他分享 >Servlet

Servlet

时间:2023-04-15 10:58:18浏览次数:28  
标签:httpservletrequestwrapper HTTP 请求 响应 Controller Servlet 客户端

1.request 和 response的结构

请求结构

一个HTTP请求由以下部分组成:

  1. 请求行(request line):包含请求方法,URI和HTTP协议版本信息。
  2. 请求头部(header):包含一些附加的元数据,如客户端浏览器的类型,所期望的响应内容等。
  3. 消息正文(message body):在某些情况下,可以通过消息体传递请求参数和数据,比如POST和PUT请求。

以下是一个示例请求结构:

 

1 GET /api/users?group=admin HTTP/1.1
2 Host: example.com
3 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
4 Accept: application/json

其中:

  • GET 是请求方法,/api/users?group=admin是URI,HTTP/1.1是HTTP协议版本。
  • HostUser-AgentAccept是请求头部字段。
  • 消息正文为空。

响应结构

一个HTTP响应由以下部分组成:

  1. 状态行(status line):包含HTTP协议版本,数字状态码和相应文本描述。
  2. 响应头部(header):与请求头类似,包含响应元数据,例如服务器类型,返回的内容类型等。
  3. 响应正文(message body):包含实际的相应内容。

以下是一个示例响应结构:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 1234

{"id": 1, "name": "John Doe", ... }

 

其中:

  • HTTP/1.1是HTTP协议版本号,200是状态码,OK是对状态码的描述。
  • Content-Type

2.java中可以通过以下几种方式对request进行增强:

  • 使用filter(过滤器):filter是servlet中的一种机制,可以在请求被处理之前或者响应被发送回客户端之前拦截http请求和响应。在filter中,可以通过httpservletrequestwrapper来增强request对象。

  • 自定义httpservletrequestwrapper类:这是一个包装器类,可以通过继承httpservletrequestwrapper来重写其中的方法,从而达到增强httpservletrequest对象的目的。

  • 使用框架封装好的httpservletrequestwrapper类:比如spring框架中的httpservletrequestwrapper:servletrequestwrapper是基于组合模式的设计,提供了默认实现的servletrequestwrapper和servletresponsewrapper,同时也提供了模板模式中需要实现的抽象方法。

  • 使用aspectj实现aop

3.Controller层 void 方法如何对前端返回数据

  1. 首先,在Controller方法上添加@ResponseBody注解,表示该方法返回的是响应体内容而不是视图名称。

  2. 然后在方法中构造需要返回给前端的数据对象。可以使用JavaBean、Map、List等集合来封装数据。

  3. 最后,Spring MVC框架会自动将数据序列化为JSON或其他格式的数据,并将其设置为HTTP响应的主体内容,以便客户端可以正确解析和显示。

示例代码:

 1 import org.springframework.stereotype.Controller;
 2 import org.springframework.web.bind.annotation.RequestMapping;
 3 import org.springframework.web.bind.annotation.ResponseBody;
 4 
 5 @Controller
 6 public class ExampleController {
 7 
 8     @RequestMapping("/example")
 9     @ResponseBody
10     public String exampleMethod() {
11         // 构造需要返回的数据对象
12         String data = "Hello World!";
13         return data; // 将数据对象返回给前端客户端
14     }
15 }

这个示例Controller方法会返回一个字符串“Hello World!”,该字符串会被自动序列化为JSON格式并发送给客户端。客户端可以使用JavaScript库如jQuery和AngularJS等解析JSON格式数据并进行显示。

标签:httpservletrequestwrapper,HTTP,请求,响应,Controller,Servlet,客户端
From: https://www.cnblogs.com/zjh996/p/17320657.html

相关文章

  • Servlet
    Servlet关于系统架构:系统架构包括什么形式?C/S架构B/S架构1.C/S架构Client/Server(客户端/服务器)C/S架构的软件或者说系统有哪些例子QQC/S架构的特点:需要安装特定的客户端软件。C/S架构的系统优点和缺点分别是什么?优点:速度快(软件中的数据大部分都是集......
  • Servlet生命周期2
      销毁方法1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用2.调用次数:1次使用Terminal开启和关闭,就会出现destory被调用的信息 ......
  • Servlet生命周期1
    不要忘记导入这个tomcat的依赖<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><ve......
  • DispatcherServlet 是一个 Servlet 也是一个bean
    ServletDispatcherServlet实现了javax.servlet.Servlet接口,负责处理来自客户端浏览器的HTTP请求,并将请求分发给相应的Controller进行处理。DispatcherServlet通常是Web应用程序中唯一一个Servlet,并且是SpringMVC框架中最核心的组件之一。SpringBoot启动时会初始化Tomcat容器......
  • webServlet添加数据报错500
     新建数据库文件,之后跳转出现问题,发现是数据库问题。字符不匹配 代码里是utf-8,将字符修改为utf-8,顺序为utf8之后可以 ......
  • servlet容器,web容器,spring容器,springmvc容器的区别(转载)
     这个理解我可以通过一个http的页面请求来说明。说明 Tomcat&Jetty在启动时给每个Web应用创建一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring容器提供宿主环境。Tomcat&Jetty在启动过程中触发容器初始化事件,Spring的ContextLoaderListener会监听到......
  • SpringBoot向web容器注入Servlet,Filter及SpringSecurity注册DelegatingFilterProxy
    从SpringSecurity架构图可知SpringSecurity的过滤器与Web容器的过滤器是通过DelegatingFilterProxy接入的。由DelegatingFilterProxy代理了FilterChainProxy,FilterChainProxy包含了SpringSecurity的过滤器链。 那么DelegatingFilterProxy是怎么创建及如何加入到Web容器中? 看......
  • JavaWeb之Servlet详解(以及浏览器调用 Servlet 流程分析图)
    Servlet1.什么是ServletServlet(java服务器小程序)他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)他是用java语言编写的,本质就是Java类他是按照Servlet规范开发的(除了tomcat->Servletweblogic->Servlet)功能强大,可以完成几乎所有的网站功能2.开发......
  • JavaWeb中Servlet、web应用和web站点的路径细节("/"究竟代表着什么)
    JavaWeb中Servlet、web应用和web站点的路径细节("/"究竟代表着什么) 1开门见山新建一个tomcatweb项目,配置tomcat的虚拟目录,取默认值(/项目名_war_exploded)那么如果你的tomcat的默认站点(即http://localhost:8080)没有更改的话,这个项目的两个重要的根目录就出来了web站点根目......
  • javaweb-学习创建servlet
    Servlet创建、声明、映射,利⽤ServletContext统计⼀个⽹站的访问总量。1)、创建一个servelet选择要用到的方法2)、编辑serveletpackagecom.cont;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servlet.Ser......