尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

请求对象和响应对象学习

请求对象和响应对象学习 在 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
返回列表