您的位置:首页 > 编程语言 > Java开发

Java Web之请求和响应

2016-05-09 09:31 507 查看
  Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletResponse。其中HttpServletRequest封装HTTP请求消息,HttpServletResponse封装HTTP响应消息。需要注意的是,Web服务器运行过程中,每个Servlet都会只创建一个实例对象,不过每次请求都会调用Servlet实例的service(ServletRequest req, ServletResponse res)方法,这里HttpServletRequest是ServletRequest的子类,HttpServletResponse是ServletResponse的子类。

  HttpServletRequest和HttpServletResponse接口继承关系图如下所示:

package zzz;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Hello extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 设置响应消息编码
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

Enumeration<String> names = request.getHeaderNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String value = request.getHeader(name);
out.println(name + ": " + value + "</br>");
}
}

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
this.doGet(request, response);
}
}


View Code
获取请求体的相关方法

方法说明
public ServletInputStream getInputStream()获取请求的ServletInputStream对象,如果实体内容为非文本,只能通过getInputStream方法获取请求体消息体
public BufferedReader getReader()获取请求的BufferedReader对象,该对象会将实体内容字节数据转换为指定字符集编码的文本字符串
获取请求参数

方法说明
public String getParameter(String name)获取指定的参数值,没有该参数返回null
public Enumeration<String> getParameterNames()返回一个包含所有参数名的Enumeration对象
public String[] getParameterValues(String name)HTTP请求中可能有多个相同的参数,获取同一个参数名对应的所有参数值
  获取请求参数实例见:http://www.cnblogs.com/xdp-gacl/p/3798347.html

3、RequestDispatcher接口

  当一个Web资源受到客户端请求后,如果希望服务器通知另外一个资源如处理请求,除了使用功能sendRedirect()实现重定向外,还可以通过RequestDispatcher接口的实例对象来实现,在ServletRequest接口中定义了一个获取RequestDispatcher对象的方法--getRequestDispatcher(String path),它返回某个路径所指定资源的RequestDispatcher对象,参数path必须以"/"开头,用于表示当前Web应用的根目录,也就是path路径必须是在本Web程序中,否则会出现异常。

RequestDispatcher接口中方法

方法功能
public void forward(ServletRequest request, ServletResponse response)将一个Servlet传递给另外一个Web资源,将请求传递给其他资源进行响应
public void include(ServletRequest request, ServletResponse response)用于将其他资源作为当前响应内容包含进来

4、参考资料

  1、javaweb学习总结(十)——HttpServletRequest对象(一)

  2、Java Web之Servlet技术
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: