javaweb——HttpServletRequest对象学习

一、HttpServletRequest介绍

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

二、request的常见方法

request.getRequestURL(): 浏览器发出请求时的完整URL
request.getRequestURI(): 浏览器发出请求的资源名部分
request.getQueryString(): 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到
request.getRemoteAddr(): 浏览器所处于的客户机的IP地址
request.getRemoteHost(): 浏览器所处于的客户机的主机名
request.getRemotePort(): 浏览器所处于的客户机使用的网络端口
request.getLocalAddr(): 服务器的IP地址
request.getLocalName(): 服务器的主机名
request.getMethod(): 得到客户机请求方式一般是GET或者POST

当客户端通过Http协议访问服务器时,即访问HelloServlet类映射的地址/hello时会发送请求,通过以下方式将所获信息打印到tomcat中。

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

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

public class HelloServlet extends HttpServlet {
	
	public void init(ServletConfig config) {
		System.out.println("init of Hello Servlet");
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		
		System.out.println("浏览器发出请求时的完整URL:"+request.getRequestURI());
		System.out.println("浏览器发出请求时的资源名部分:"+request.getRequestURI());
		System.out.println("请求行中的部分参数:"+request.getQueryString());
		System.out.println("浏览器所处的客户机的IP地址:"+request.getRemoteAddr());
		System.out.println("浏览器所处的客户机的主机名:"+request.getRemoteHost());
		System.out.println("浏览器所处的客户机使用的网络端口:" + request.getRemotePort());
		System.out.println("服务器的IP地址:"+request.getLocalAddr());
		System.out.println("服务器的主机名:"+request.getLocalName());
		System.out.println("得到客户机请求方式:"+request.getMethod());
		
	}
}

在这里插入图片描述

三、获得客户机请求参数(客户端提交的数据)

request.getParameter(): 是常见的方法,用于获取单值的参数
request.getParameterValues(): 用于获取具有多值的参数
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。

<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<form action="register" method="get">
		账号:<input type="text" name="name"> <br>
		密码:<input type="password" name="password"> <br>
		爱好:dog<input type="checkbox" name="hobits" value="dog"> <br>
			cat<input type="checkbox" name="hobits" value="cat"> <br>
			<input type="submit" value="注册">
	</form>
import java.util.Arrays;
import java.util.Map;
import java.util.Set;

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

public class RegisterServlet extends HttpServlet{
	
	protected void service(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("获取用户提交的参数");
		System.out.println("获取用户输入账号name:" + request.getParameter("name"));
		System.out.println("获取用户输入密码password:" + request.getParameter("password"));
		
		String[] hobits = request.getParameterValues("hobits");
		//Arrays.asList  将数组转化为list
		System.out.println("获取具有多值的参数hobits:"+ Arrays.asList(hobits));
		System.out.println("通过getParameterMap遍历所有的参数:");
		Map<String,String[]> parameters = request.getParameterMap();
		Set<String>paramNames = parameters.keySet();
		for(String param : paramNames) {
			String[] value = parameters.get(param);
			System.out.println(param + ":" + Arrays.asList(value));
		}
		
	}
}

在这里插入图片描述

四、获取头信息(能判断是什么浏览器)

request.getHeader() 获取浏览器传递过来的头信息。
request.getHeaderNames() 获取浏览器所有的头信息名称,根据头信息名称就能遍历出所有的头信息

五、request

request对象同时也是一个域对象(Map容器),开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。

request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作
*
1、setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute(“data”, data);
*
2、getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute(“data”)
*
3、removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute(“data”)
*
4、getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration
attrNames = request.getAttributeNames();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值