悠悠楠杉
JSP中request与response的用法详解
Request对象的使用
获取参数: 可以通过
request.getParameter(String name)
方法获取请求中的参数值。如果参数存在多个值,可以使用request.getParameterValues(String name)
获取所有值。
java String username = request.getParameter("username");
处理特殊数据: 对于非字符型数据(如整数、布尔值),可通过
request.getAttribute(String name)
获取,它比getParameter
更通用,可以获取任何类型的属性。
java Integer age = (Integer) request.getAttribute("age");
转发请求: 使用
request.getRequestDispatcher(String path).forward(request, response);
可以在服务器内部转发请求到另一个资源,实现页面间的无刷新数据传递。
java RequestDispatcher dispatcher = request.getRequestDispatcher("/nextPage"); dispatcher.forward(request, response);
包含页面: 可以通过
request.include(ServletRequest request, ServletResponse response)
将另一个页面的输出包含到当前页面中,适合于构建多页面布局或重用页面组件。
java request.getRequestDispatcher("/header").include(request, response);
Response对象的使用
设置响应内容类型: 使用
response.setContentType(String type)
设置响应的MIME类型,如HTML、JSON等,这对于正确显示数据非常重要。
java response.setContentType("text/html;charset=UTF-8");
发送响应: 通过
response.getWriter().write(String str)
或response.getOutputStream().write(byte[] b)
直接向客户端发送响应数据。注意选择合适的方法(字符流或字节流)取决于数据的类型。
java response.getWriter().write("<h1>Hello, World!</h1>");
或使用字节流发送二进制数据:
java response.getOutputStream().write("Hello, World!".getBytes());
设置状态码: 使用
response.setStatus(int sc)
设置HTTP响应的状态码,如200表示成功,404表示未找到等。这有助于客户端理解请求的结果。
java response.setStatus(HttpServletResponse.SC_OK); // 200 OK
设置响应头: 通过
response.setHeader(String name, String value)
可以设置HTTP响应头,用于控制缓存、内容类型等。例如:
java response.setHeader("Content-Disposition", "attachment; filename=\"report.pdf\""); // 用于下载文件时设置文件名和类型为附件。
注意:在发送任何响应体之前设置响应头是必要的,否则可能导致异常。重定向: 使用
response.sendRedirect(String location)
可以将请求重定向到另一个URL,常用于登录后重定向到主页或其他需要特定权限的页面。这不会改变URL地址栏的内容。使用重定向时,后续的请求将由新的URL发起。
```java
response.sendRedirect("http://example.com/loginSuccess"); // 登录成功后重定向到成功页面。 // 提示:这将导致浏览器地址栏变为新的URL。 重新加载时从新URL开始请求。