Javaweb Servlet核心接口学习记录(3)—HttpServletRequest接口

Javaweb Servlet核心接口学习记录(3)—HttpServletRequest接口

  我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口。

  • javax.servlet.http.HttpServletRequest 接口的定义为 :
public interface  HttpServletRequest  extends  ServletRequest
  • 在 Servlet API 中, ServletRequest 接口被定义为用于封装请求的信息,ServletRequest 对象由 Servlet 容器在用户每次请求 Servlet 时创建并传入Servlet 的 service() 方法中
  • HttpServletRequest 接口继承了 ServletRequest 接口,是专用于 HTTP 协议的子接口,用于封装 HTTP 请求信息;
  • 在 HttpServlet 类的 service() 方法中,传入的 ServletRequest 对象被强制转换为 HttpServletRequest 对象来进行 HTTP 请求信息的处理 。
  • HttpServletRequest 接口提供了具有如下功能类型的方法:
    1、获取请求报文信息(包括请求行、请求头、请求正文)的方法;
    2、获取网络连接信息的方法;
    3、存取请求域属性的方法。

 HTTP 协议
 POST请求报文信息格式样例
在这里插入图片描述

  1.获取请求行信息
HttpServletRequest接口对请求行各部分信息的获取方法

方法 方法描述
getMethod() 获取请求使用的HTTP方法,例如,GET、POST、PUT
getRequestURI() 获取请求行中的资源名部分
getProtocol() 获取使用的协议及版本号。例如,HTTP/1.1 、HTTP/1.0
getQueryString() 获取请求URL后面的查询字符串,只对GET有效
getServletPath() 获取Servlet所映射的路径
getContextPath() 获取请求资源所属于的Web应用的路径

演示:
创建RequestLineServlet

package com;

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 RequestLineServlet
 */
@WebServlet("/RequestLineServlet")
public class RequestLineServlet extends HttpServlet {
   
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public RequestLineServlet() {
   
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
   
		// TODO Auto-generated method stub
		// 设置响应编码
		response.setContentType("text/html; charset=UTF-8");
		// 获取请求使用http的方法
		String method = request.getMethod();
		// 获取请求行的uri部分
		String uri = request.getRequestURI();
		// 获取使用的协议及版本
		String protcol = request.getProtocol();
		// 获取uri后面拼接的字符串(参数)
		String queryString = request.getQueryString();
		// 获取servlet映射路径
		String servletPath = request.getServletPath();
		// 获取应用的上下文路径
		String contextPath = request.getContextPath();

		PrintWriter out = response.getWriter();

		out.print("<p>请求使用http的方法:" + method + "</p>");
		out.print("<p>获取请求行的uri部分:" + uri + "</p>");
		out.print("<p>获取使用的协议及版本:" + protcol + "</p>");
		out.print("<p>获取uri后面拼接的字符串(参数):" + queryString + "</p>");
		out.print("<p>获取servlet映射路径:" + servletPath + 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值