本文共 2280 字,大约阅读时间需要 7 分钟。
上一篇博客中简单介绍了如何使用Servlet处理客户端的请求,只处理请求,我们的工作其实只做了一半,请求处理完后,我们要对客户端的请求进行响应,这一篇博文将介绍Servlet如何响应。
同样的,我们在之前的工程上进行修改。
package com.gujin.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Test extends HttpServlet{ private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // 获得请求头信息 System.out.println("======HEAD INFO======"); Enumeration enumeration = request.getHeaderNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); Enumeration headers = request.getHeaders(name); while (headers.hasMoreElements()) { System.out.println(name + ":" + headers.nextElement()); } } // 获得请求参数 System.out.println("======REQUEST PARAM======"); // 获得指定参数 // request.getParameter("userId"); // 获得所有请求参数名称 // request.getParameterNames(); // 获得请求参数集合 // request.getParameterMap(); Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); System.out.println(name + ":" + request.getParameter(name)); } // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); // 想输出流写的内容就是客户端接收到的内容 writer.print(""); writer.print(""); writer.print(" "); writer.print(""); writer.print(""); writer.print("Hello!
"); writer.print(""); writer.print(""); writer.flush(); writer.close(); }}
这样服务端就像客户端输出了一个网页,显示效果如下:
查看页面源代码如下:
Hello!
这正是我们输出内容。
在上面的例子中,我们直接的向客户端输出了HTML,我们还可以控制跳转到指定的页面,代码如下:
response.sendRedirect("index.html");
这样可以将页面重定向到index.html
页面,除了重定向外,我们还可以实现请求转发,代码如下:
request.getRequestDispatcher("index.html").forward(request, response);
重定向和请求转发都可以控制页面的跳转,二者的区别在于重定向是由客户端重新请求,而请求转发是服务端进行跳转,在浏览器上现实的地址还是原请求地址,重定向显示新的地址。