大二 第五次 请求和响应

请求和响应

HttpServletResponse对象

在servlet api中定义了一个httpservletresponse接口,它继承自servletresponse接口,专门用来封装http响应消息,由于http响应消息分为状态行,响应消息头,消息体三部分,因此在httpservletresponse接口中定义了向客户端发送响应状态码,响应消息头,响应消息体的方法。

发送状态码相关的方法

Servlet向客户端回送响应消息时,需要在响应消息中设置状态码,为此,在httpservletresponse接口中定义了两个发送状态码的方法。

setStatus(int status)方法

sendError(int sc)方法

发送响应消息头

发送响应消息体相关的方法

由于在 HTTP 响应消息中,大量的数据都是通过响应消息体传递的,因此,ServletResponse
遵循以I0 流传递大量数据的设计理念。在发送响应消息体时,定义了两个与输出流相关的方法,具体如下。

  1. getOutputStream()方法
    该方法所获取的字节输出流对象为 ServletOutputStream 类型。由于 ServletOutputStream
    是 OutputStream 的子类,它可以直接输出字节数组中的二进制数据。因此,要想输出二进制格式的响应正文,就需要使用 getOutputStream()方法。
  2. getWriter()方法
    该方法所获取的字符输出流对象为 PrintWriter 类型。由于 PrintWriter 类型的对象可以直接输出字符文本内容,因此,要想输出内容全为字符文本的网页文档,需要使用 getWriter()方法

Httpservletrespons应用

解决中文输出乱码问题

1.创建 Servlet
在chapter04项目的cn.icast,chapter04.response包中编写一个名为 ChineseServlet的类,在该类中定义一个中文字符串,然后使用字符输出流输出。
2.配置映射信息,查看运行结果
在web.xml中,配置完chineseservlet的映射后,启动tomcat服务器

实现网页定时刷新并跳转

1.创建 Servlet
在chapter04项目的cn.icast,chapter04.response包中编写一个名为RefreshServlet的类,该类使用response对象的set Header()方法实现了网页的定时刷新并跳转的功能。
2.配置映射信息,查看运行结果
在web.xml中,配置完refreshservlet的映射后,启动tomcat服务器

实现请求重定向

在某些情况下,针对客户端的请求,一个 Servet 类可能无法完成全部工作。这时,可以使用请求重定向来完成。所谓请求重定向,指的是 Web 服务器接收到客户端的请求后,可能由于某些条件限制,不能访问当前请求URL所指向的Web 资源,而是指定了一个新的资源路径,让客户端重新发送请求。
为了实现请求重定向,在 HttpServletResponse接口中,定义了一个 sendPediect()方法,该方法用于生成 302 响应码和 Location响应头,从而通知客户端重新访问 Location 响应头中指定的 URL,sendRedirect()方法的完整语法。

HttpServletRequest对象

在Senvlet API中,定义了一个 HtpServletRequest 接口,它继承自 SenvletRequest接口,专门用来封装 HTTP 请求消息。由于 HTTP 请求消息分为请求行、请求消息头和请求消息体 3部分,因此,在 HttpServietRequest接口中定义了获取请求行、请求头和请求消息体的相关方法。

获取请求行信息的相关方法

当访问 Senvlet 时,会在请求消息的请求行中,包含请求方法、请求资源名、请求路径等信息,为了获取这些信息,在 HtpServietRequest接口中,定义了一系列用于获取请求行的方法。

获取请求消息头的相关方法

当请求 Servlet 时,需要通过请求头向服务器传递附加信息,例如,客户端可以接收的数据类型、压缩方式、语言等。

代码级成果展示

package cn.itcast.chapter04.request;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RequestHead
 */
@WebServlet("/head")
public class RequestHead extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("yuanxuehua");
		response.setContentType("text/heml;charset=utf-8");
		Enumeration<String> er=request.getHeaderNames();
		while(er.hasMoreElements()) {
			String name=er.nextElement();
			String value=request.getHeader(name);
			System.out.println("消息头:"+name +" : "+value);
			//System.out.println("消息头:"+name +" : "+value+"<br/>");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
package cn.itcast.chapter04.request;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RequestLine
 */
@WebServlet("/line")
public class RequestLine extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String method=request.getMethod();
		System.out.println("请求方式:"+method);
		String proto=request.getProtocol();
		System.out.println("请求协议方式:"+proto);
		String contextpath=request.getContextPath();
		System.out.println("请求路径:"+contextpath);
		String servletpath=request.getServletPath();
		System.out.println("servletpath:"+servletpath);
		String pathURI=request.getRequestURI();
		StringBuffer pathURL=request.getRequestURL();
		System.out.println("URI: "+pathURI+"   URL: "+pathURL);
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
package cn.itcast.chapter04.request;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RequestParamServlet
 */
@WebServlet("/Param")
public class RequestParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	System.out.println("get请求");
		String username= request.getParameter("username");
		System.out.println("username:"+username);
		String password= request.getParameter("password");
		System.out.println("password:"+password);
		String[] hobbys=request.getParameterValues("hobby");
		System.out.println("hobbys:"+Arrays.toString(hobbys));

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("post请求");
		request.setCharacterEncoding("utf-8");
		String username= request.getParameter("username");
		System.out.println("username:"+username);
		String password= request.getParameter("password");
		System.out.println("password:"+password);
		String[] hobbys= request.getParameterValues("hobby");
		System.out.println("hobbys:"+Arrays.toString(hobbys));

	}

}
package cn.itcast.chapter04.response;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ChineseServlet
 */
@WebServlet("/Chinese")
public class ChineseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/heml;charset=utf-8");
		String data="2020080605045 袁雪华 大数据2005";
		PrintWriter pw=response.getWriter();
		pw.print(data);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
package cn.itcast.chapter04.response;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Loc
 */
@WebServlet("/loc")
public class Loc extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setStatus(302);
		response.setHeader("Location","/chapter04/login.html");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
package cn.itcast.chapter04.response;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RefreshServlet
 */
@WebServlet("/Refresh")
public class RefreshServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setHeader("Refresh", "3");
		response.getWriter().print(new Date());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2020080605045 袁雪华 大数据2005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值