HttpServletRequest概述

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

1、getMethod()方法:获得客户端请求方式

2、getRequestURI()方法:返回URI(URI是URL从主机和端口之后到表单数据之前的那一部分)。

3、getRemoteAddr()方法:用于获取请求客户端的IP地址

4、getRemotePort()方法:用于获取请求客户端的端口号

5、getLocalAddr()方法:用于获取服务器当前接收请求的IP地址

6、getContextPath()方法:该方法用于获取URL中属于web应用程序的路径

7、getProtocol()方法:该方法用于获取请求中的协议名和版本

8.   getQueryString():get提交url地址后的参数字符串

package com.oracle.demo01;

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

public class LineServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取请求的方式
		String method=request.getMethod();
		System.out.println("请求方式为:"+method);
		//获取请求的URL
		String URI=request.getRequestURI();
		System.out.println("URI为:"+URI);
		//获取请求的URL
		StringBuffer URL=request.getRequestURL();
		System.out.println("URL为:"+URL);
		//获取WEB应用名称
		String name=request.getContextPath();
		System.out.println("WEB应用名称为:"+name);
		//获取请求get请求后的URL后的字符串
		String query=request.getQueryString();
		System.out.println("get请求参数为:"+query);
		//获取客户端的IP地址
		String ip=request.getRemoteAddr();
		System.out.println("ip地址为:"+ip);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

 

获取请求头的相关方法:

1、getHeader(String name):该方法用于获取一个指定头字段的值,如果请求头中不包含该字段则返回null,如果包含多个该字段的值则获取第一个值。

获取请求参数:获取单个参数

1、getParameter(String name):用于获取某个指定名称的参数值,如果请求中没有包含指定名称的参数,则返回null,如果有指定参数但是没有给设置值,则返回空串,如果包含多个该参数的值则返回第一个出现的参数值

2、getParameterNames():该方法用于返回一个包含请求消息中所有参数名的枚举集合

3、getParameterMap():将请求中所有参数和值装入一个map对象然后返回

4  .getParametervalues(String name):获取多个值的参数,以数组的String数组的方式

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <form action="/WEB06/BodyServlet" method="get">
       <input type="text" name="username"><br>
       <input type="radio" name="sex" value="man">男
       <input type="radio" name="sex" value="woman">女
       <br>
       <input type="checkbox" name="hobby" value="ppq">
                   乒乓球
       <input type="checkbox" name="hobby" value="pq">
                   排球
       <input type="checkbox" name="hobby" value="wq">
                   网球
       <br>
       <input type="submit" value="提交">
   </form>
</body>
</html>

  

package com.oracle.demo01;

import java.io.IOException;
import java.util.Map;
import java.util.Set;

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

public class BodyServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//post请求解决中文乱码问题
		//request.setCharacterEncoding("utf-8");
		//获取请求参数
		//1.获取单个值的参数
		String name=request.getParameter("username");
		name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
		String sex=request.getParameter("sex");
		System.out.println(name+"...."+sex);
		//获取多个值的参数,以数组的String数组的方式
		String[] hobbys=request.getParameterValues("hobby");
		//遍历
		for(String s:hobbys){
			System.out.println(s);
		}
		//获取所有值的请求参数Map
		Map<String,String[]> map=request.getParameterMap();
		//遍历
		Set<String> set=map.keySet();
		for(String str:set){
			String[] value=map.get(str);
			for(String v:value){
				System.out.println(str+"....."+v);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

 注意:

      解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");

      解决get提交的方式的乱码:

            parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

request:

     只请求一次

     url地址不会改变

原文地址:https://www.cnblogs.com/awdsjk/p/11130788.html