0%

Java Web 请求处理:HttpServletRequest 详解

在 Java Web 开发中,客户端的 HTTP 请求由 HttpServletRequest 对象封装,它提供了丰富的方法用于获取请求行、请求头、请求参数等信息。本文将系统梳理 HttpServletRequest 的核心功能,包括请求行解析、请求头获取、参数处理及会话管理等,帮助开发者高效处理客户端请求。

HttpServletRequest 概述

HttpServletRequestServletRequest 接口的子接口,专门用于处理 HTTP 协议的请求。它由 Servlet 容器创建并传递给 service() 方法,包含客户端请求的所有信息(如 URL、参数、 headers 等)。

1
2
3
4
// HttpServlet 中处理请求的方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
// 通过 req 处理请求...
}

请求行信息获取

HTTP 请求行由请求方法(如 GET/POST)、请求 URI协议版本组成(如 GET /index.jsp HTTP/1.1)。HttpServletRequest 提供以下方法解析请求行:

方法 作用描述 示例(假设请求为 GET /app/user?id=1 HTTP/1.1
getMethod() 获取请求方法(GET/POST/PUT/DELETE 等) GET
getProtocol() 获取协议版本(如 HTTP/1.1 HTTP/1.1
getRequestURI() 获取请求 URI(主机名后的路径部分) /app/user
getRequestURL() 获取完整请求 URL(包含协议、主机、端口和路径) http://localhost:8080/app/user
getQueryString() 获取 URL 中的查询参数(? 后的部分) id=1
getContextPath() 获取当前 Web 应用的上下文路径(部署路径) /app
getServletPath() 获取 Servlet 映射的路径 /user
getPathInfo() 获取 URL 中 Servlet 路径后的额外路径信息(无则为 null null(若请求为 /app/user/1,则返回 /1

网络连接信息

获取客户端与服务器的网络连接细节,如 IP、端口等:

阅读全文 »

Linux 后台运行命令:从基础到进阶

在 Linux 中,将命令放在后台运行是提高工作效率的重要技巧,尤其适合处理耗时任务(如程序部署、数据备份等)。本文将详细介绍后台运行命令的方法、进程管理及持久化方案。

基础:用 & 让命令后台运行

最简单的后台运行方式是在命令末尾添加 &,使命令脱离当前终端的直接控制:

1
2
# 示例:后台运行 Java 程序
java -jar test.jar &

特点:

  • 命令立即返回终端控制权,可继续输入其他命令;
  • 命令输出(stdout/stderr)仍会显示在当前终端;
  • 进程与终端会话绑定,关闭终端会导致进程终止(收到 SIGHUP 信号)。

管理后台进程:jobsfg/bg

使用 & 启动的后台进程属于当前终端的 “作业(job)”,可通过以下命令管理:

查看后台进程

1
jobs [-l]
  • 不加参数:显示作业编号、状态(运行中 Running 或停止 Stopped)和命令;
  • -l:额外显示进程 PID(进程 ID),便于后续操作(如终止进程)。
阅读全文 »

Nginx 重定向配置详解:return 与 rewrite 的实战指南

重定向是 Web 服务中常见的功能,用于将客户端请求从一个 URL 转发到另一个 URL(如域名迁移、路径调整、HTTPS 强制跳转等)。Nginx 通过returnrewrite两种方式实现重定向,各有适用场景。本文详细讲解两种方式的语法、区别及实战案例,帮助灵活配置重定向规则。

重定向基础:状态码与场景

重定向通过 HTTP 状态码告知客户端跳转类型,常用状态码:

  • 301 Moved Permanently:永久重定向(客户端会缓存跳转关系,适合域名更换);
  • 302 Found:临时重定向(客户端不缓存,适合临时维护、活动页面跳转);
  • 307 Temporary Redirect:临时重定向(严格保留请求方法,如 POST 请求不会转为 GET);
  • 308 Permanent Redirect:永久重定向(严格保留请求方法)。

return指令:简单直接的重定向

return指令用于直接返回状态码和跳转 URL,语法简洁,适合固定规则的重定向(如域名跳转、HTTPS 强制跳转)。

1. 语法格式

阅读全文 »

Linux 进程管理命令详解:从查看监控到进程控制

在 Linux 系统管理中,进程管理是核心技能之一。无论是排查性能问题、终止异常进程,还是监控系统负载,都需要熟练掌握进程管理命令。本文将系统介绍常用的进程查看、监控、分析及控制命令,帮助你全面掌握进程管理技巧。

进程查看命令

ps:静态查看进程快照

ps(Process Status)用于显示系统当前运行的进程快照,是最基础的进程查看工具。

常用参数组合:
  • ps aux:显示所有用户的所有进程(包括无终端的后台进程),输出详细信息。

    1
    ps aux
  • ps -ef:以全格式显示进程信息,包含进程间的父子关系。

    1
    ps -ef | grep java  # 查找与 Java 相关的进程
输出字段解析:
字段 含义说明
USER 进程所属用户
PID 进程唯一标识符(用于后续操作,如终止进程)
%CPU 进程占用 CPU 的百分比
%MEM 进程占用物理内存的百分比
VSZ 进程使用的虚拟内存大小(单位:KB)
RSS 进程使用的物理内存大小(单位:KB,不包含交换分区)
TTY 进程运行的终端(? 表示无终端,通常为系统进程)
STAT 进程状态(关键状态:R 运行中、S 睡眠、Z 僵尸进程、T 停止)
START 进程启动时间
TIME 进程累计占用 CPU 的时间
COMMAND 启动进程的命令(含路径和参数)
实用技巧:
  • 按资源占用排序:

    1
    2
    3
    4
    5
    # 查看占用内存最多的前 10 个进程
    ps aux | head -1; ps aux | grep -v PID | sort -rn -k +4 | head

    # 查看占用 CPU 最多的前 10 个进程
    ps aux | head -1; ps aux | grep -v PID | sort -rn -k +3 | head

top:实时监控进程动态

top 命令提供动态实时的进程监控,默认每 3 秒刷新一次,适合跟踪系统资源占用变化。

基本用法:
阅读全文 »

Nginx 缓存配置详解:代理缓存与静态资源缓存策略

缓存是提升 Web 服务性能的关键技术,Nginx 作为高性能代理服务器,通过代理缓存(Proxy Cache)和客户端缓存(Expires)减少后端服务器压力,加速资源响应。本文详细讲解 Nginx 缓存的工作原理、核心配置及实战案例,帮助构建高效的缓存体系。

缓存的三种类型与 Nginx 定位

在 Web 架构中,缓存按存储位置可分为三类:

缓存类型 存储位置 作用
服务端缓存 后端服务器(如 Redis、Memcached) 缓存数据库查询结果、业务数据等
代理缓存 代理服务器(如 Nginx) 缓存后端返回的静态资源或 API 响应,减少后端重复处理
客户端缓存 浏览器本地 缓存静态资源(如图片、CSS),减少网络请求

Nginx 的角色:主要实现代理缓存,同时通过expires指令控制客户端缓存策略,是连接后端服务与客户端的 “中间缓存层”。

Nginx 代理缓存(Proxy Cache):减少后端请求

Nginx 代理缓存将后端服务器的响应数据存储在本地磁盘或内存中,当后续有相同请求时,直接返回缓存内容,无需转发至后端。

核心配置指令

代理缓存的配置需两步:先在http块定义缓存存储路径和参数(proxy_cache_path),再在location块启用缓存(proxy_cache)。

阅读全文 »