## 术语辨析
| 类型 | 代表 | 核心职责 |
| :------------------------------ | :----------------------- | :----------------------------------------------- |
| Web 服务器 (HTTP Server) | Nginx、Apache HTTP Server | 处理 HTTP 协议、返回静态资源、反向代理、负载均衡 |
| Web 容器 (Servlet Container) | Tomcat、Jetty | 运行 Java Servlet/JSP,处理动态请求 |
| 应用服务器 (Application Server) | JBoss、WebLogic、WebSphere | 完整 Java EE 规范(EJB、JMS、JTA 等) |
## 几个细节
1. Tomcat 也能当 Web 服务器用
它内置了 HTTP 连接器(Coyote),可以直接处理 HTTP 请求。小项目可以不用 Nginx 前置。
2. 但 Tomcat 的核心是容器
它的价值在于能执行 Java 代码(Servlet 生命周期管理、JSP 编译等),这是 Nginx/Apache 做不到的。
3. Nginx/Apache 不能运行 Java
它们需要通过 proxy_pass(反向代理)或 mod_jk(AJP 协议)把动态请求转发给 Tomcat。
## 一句话总结
Nginx 是「门卫」,只管收发快递(HTTP);
Tomcat 是「Java 虚拟机的管家」,能让 Java 代码跑起来。
tomcat 与 nginx,apache 的区别是什么?- 代码小郭的回答 - 知乎
https://www.zhihu.com/question/32212996/answer/3218239422

根据题目和讨论,可以总结以下几点关于HttpServletRequest.getParameter()获取参数的编码问题:
1. 编码由客户端浏览器和Web容器(如Tomcat)的配置共同决定,而不是单一因素决定。
2. 编码过程:
- 浏览器根据HTML中指定的编码格式(如`<meta charset="UTF-8">`)对参数进行编码
- Web容器(如Tomcat)根据其配置的编码格式对参数进行解码
3. GET和POST请求对编码的处理有所不同:
- GET请求的参数编码通常由浏览器决定
- POST请求的参数编码可以在表单中指定
4. Tomcat等Web容器通常有默认的编码设置,如Tomcat早期版本默认ISO-8859-1,新版本默认UTF-8
5. 为避免乱码问题,需要确保客户端编码和服务器解码的一致性
6. 可以通过配置或代码方式指定服务器端的解码格式,如: `request.setCharacterEncoding("UTF-8");`
7. 编码问题与服务器操作系统无关,主要涉及浏览器和Web容器
8. 解决编码问题的关键是使客户端与Web容器的编码方式兼容
总之,这是一个由多方面因素共同决定的问题,需要综合考虑客户端和服务器端的编码设置,以确保正确获取参数。