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格式数据并进行显示。

posted @ 2023-04-15 10:35  空空大首领  阅读(62)  评论(0编辑  收藏  举报