请求对象和响应对象学习 在 Java Web 开发中HttpServletRequest和HttpServletResponse是两个至关重要的对象。每当客户端发送一个 HTTP 请求Web 服务器如 Tomcat就会为这次请求创建一个request对象和一个response对象。request对象用于封装客户端发送的请求信息如表单数据、请求头、URL 参数等。response对象用于向客户端输出响应数据如 HTML 内容、状态码、响应头等。掌握这两个对象的使用是进入 Java Web 开发的基础。一、HttpServletRequest 详解HttpServletRequest是service()方法的重要参数之一它提供了大量方法来获取客户端请求信息。1. 获取请求头信息通过request可以获取 HTTP 请求头中的各种信息java String value request.getHeader(User-Agent); EnumerationString names request.getHeaderNames(); while (names.hasMoreElements()) { String name names.nextElement(); String value request.getHeader(name); System.out.println(name : value); }2. 获取请求相关其他信息方法说明getMethod()获取请求方式如 GET、POSTgetRequestURI()获取请求的 URI 路径getRequestURL()获取完整的请求 URLgetQueryString()获取 URL 中的参数字符串getRemoteAddr()获取客户端 IP 地址getContextPath()获取项目上下文路径示例代码java System.out.println(Method: request.getMethod()); System.out.println(URI: request.getRequestURI()); System.out.println(URL: request.getRequestURL()); System.out.println(Client IP: request.getRemoteAddr());3. 获取请求参数3.1 单值参数适用于文本输入框、单选按钮、下拉框等java String username request.getParameter(username); String gender request.getParameter(gender);3.2 多值参数适用于复选框checkbox或多个同名字段java String[] hobbies request.getParameterValues(hobby); for (String hobby : hobbies) { System.out.println(hobby); }3.3 获取所有参数java EnumerationString paramNames request.getParameterNames(); MapString, String[] paramMap request.getParameterMap();4. 中文乱码处理POST 请求乱码在获取参数前设置编码java request.setCharacterEncoding(UTF-8); String name request.getParameter(name);GET 请求乱码Tomcat 8.5 及以上版本已支持 URL 中文参数无需额外处理。若需手动处理java String name request.getParameter(name); name new String(name.getBytes(ISO-8859-1), UTF-8);或修改 Tomcat 的server.xmlxml Connector port8080 URIEncodingUTF-8 /5. 请求转发与 Request 域对象请求转发是服务器内部跳转浏览器地址栏不变属于同一次请求。java // 设置域属性 request.setAttribute(msg, 登录成功); // 转发到另一个资源 request.getRequestDispatcher(/success.jsp).forward(request, response);在转发的目标页面中可以通过request.getAttribute(msg)获取数据。二、HttpServletResponse 详解HttpServletResponse用于向客户端发送响应数据。1. 设置响应类型与编码为避免中文乱码通常在输出前设置java response.setContentType(text/html;charsetUTF-8); // 或分别设置 response.setCharacterEncoding(UTF-8); response.setContentType(text/html);2. 输出响应内容java PrintWriter out response.getWriter(); out.write(Hello, 世界);3. 设置响应头与状态码java // 设置状态码 response.setStatus(200); // 发送错误页面 response.sendError(404, 资源未找到); // 定时跳转 response.setHeader(Refresh, 5; URLhttp://www.baidu.com);4. 重定向重定向是客户端跳转浏览器地址栏会变化属于两次请求java response.sendRedirect(/项目名/success.html);三、请求转发与重定向的区别对比项请求转发forward重定向sendRedirect发生位置服务器内部客户端请求次数一次请求两次请求浏览器地址栏不变改变数据共享可使用 request 域无法使用 request 域跨域访问不支持支持性能更高稍低方法来源HttpServletRequestHttpServletResponse四、路径问题总结转发路径以/开头表示当前 Web 应用的根目录示例/WEB-INF/page.jsp重定向路径以/开头表示 Tomcat 的根目录需包含项目名示例/项目名/page.jsp

相关新闻

最新新闻

380 种格式打底,Subtitle Edit 如何把字幕从“打不开“变成“多语言成品“?

380 种格式打底,Subtitle Edit 如何把字幕从“打不开“变成“多语言成品“?

380 种格式打底,Subtitle Edit 如何把字幕从"打不开"变成"多语言成品"? 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 字幕编辑器 Subtitle Edit 是一款…

2026/8/19 23:40:27
一个cmd文件激活整套Windows与Office:免费KMS激活工具 KMS_VL_ALL_AIO 上手实录

一个cmd文件激活整套Windows与Office:免费KMS激活工具 KMS_VL_ALL_AIO 上手实录

一个cmd文件激活整套Windows与Office:免费KMS激活工具 KMS_VL_ALL_AIO 上手实录 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 那天下午我正赶一个方案,屏幕右下角毫无预…

2026/8/19 23:40:27
Windows 11 玩经典局域网游戏总是连不上?用 IPXWrapper 让它重新“开口说话“

Windows 11 玩经典局域网游戏总是连不上?用 IPXWrapper 让它重新“开口说话“

Windows 11 玩经典局域网游戏总是连不上?用 IPXWrapper 让它重新"开口说话" 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 周六晚上八点,你和老同学约好来一局《红色警戒2》。新电脑装着 Wind…

2026/8/19 23:40:27
GitHub下载加速插件快速上手完整指南:60秒装好,克隆与下载提速不再靠运气

GitHub下载加速插件快速上手完整指南:60秒装好,克隆与下载提速不再靠运气

GitHub下载加速插件快速上手完整指南:60秒装好,克隆与下载提速不再靠运气 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fas…

2026/8/19 23:40:27
晶体管与三极管核心区别:从电流/电压控制原理到电路选型避坑指南

晶体管与三极管核心区别:从电流/电压控制原理到电路选型避坑指南

1. 从一次“烧管”事故说起:为什么必须分清晶体管与三极管? 前几天,一个刚入行的硬件工程师朋友,在调试一个简单的LED驱动电路时,信心满满地告诉我:“我用了一个NPN晶体管来控制,结果一上电&…

2026/8/19 23:40:27
2026年7月嘉兴市新房价格深度分析报告

2026年7月嘉兴市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月嘉兴市新房实际成交案例,结合区域分布、楼盘定位、成交价格等多维度数据,对当前嘉兴新房市场进行深度分析。数据来源涵盖嘉兴市本级及下辖县市的主要在售楼盘成交记录,样本覆盖刚需、改善、高端等多…

2026/8/19 23:35:27