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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
加了HttpServletRequest请求不到是指在Servlet中使用HttpServletRequest获取请求参数或其他信息时无法获取到吗? 根据提供的引用内容,请求转发是一种技术,可以从一个Servlet发起请求并将其转发到另一个Servlet或静态页面。 要实现请求转发,需要使用RequestDispatcher类的两个方法:getRequestDispatcher(String path)和forward(ServletRequest request, ServletResponse response)。 关于HttpServletRequest无法获取请求的问题,可能是因为没有正确配置或使用HttpServletRequest对象导致的。在Servlet中,可以通过HttpServletRequest对象获取请求参数、请求头、请求属性等信息。请确保以下几点: 1. 确保在Servlet类中引入`javax.servlet.http.HttpServletRequest`包; 2. 在doGet()或doPost()方法中,使用HttpServletRequest对象来获取请求信息,例如`String parameter = request.getParameter("parameterName");`来获取请求参数; 3. 确保Servlet容器正确地调用了doGet()或doPost()方法,以触发Servlet处理请求。 如果仍然无法获取到请求信息,可以进一步检查是否有异常抛出,查看日志文件或调试代码来定位问题所在。另外,确保设置了正确的字符编码,以防止乱码问题。 总结:要在Servlet中使用HttpServletRequest获取请求信息,需要确保正确配置和使用HttpServletRequest对象,并在doGet()或doPost()方法中处理请求。如果仍然无法获取到请求信息,可以查看日志文件或调试代码来进一步排查问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [HttpServletRequest请求概述](https://blog.csdn.net/qq_45638271/article/details/124399654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值