java中request常用方法小结
作者:hebedich 发布时间:2022-09-13 06:19:45
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。
request常用方法:
一、获取客户机环境信息常见方法:
1.getRequestURL方法返回客户端发出请求时的完整URL。
2.getRequestURI方法返回请求行中的资源名部分。
3.getQueryString方法返回请求行的参数部分。
4.getRemoteAddr方法返回发出请求的客户机的IP地址。
5.getRemoteHost方法返回发出请求的客户机的完整主机名。
6.getRemotePort方法返回客户机所使用的网络端口号。
7.getLocalAddr方法返回WEB服务器的IP地址。
8.getLocalName方法返回WEB服务器的主机名。
9.getMethod得到客户机请求方式。
package com.yyz.request;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* URL是URI的子集。
* URI用来标识一个资源。
* URL用来标识互联网上的一个资源。
*/
System.out.println(request.getRequestURL());//得到请求URL地址
System.out.println(request.getRequestURI());//得到请求的资源
System.out.println(request.getQueryString());
System.out.println(request.getRemoteAddr());//得到来访者IP
System.out.println(request.getRemoteHost());
//由于没有在dns上注册所以打印结果还是127.0.0.1,如果是百度访问这个程序,则打印www.baidu.com
System.out.println(request.getRemotePort());//得到请求的资源
System.out.println(request.getMethod());//得到请求的资源
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
在浏览器地址栏输入:http://localhost:8080/test/servlet/RequestDemo后后台输出入下图:
二、获得客户机请求头:
1.getHeader(String name)方法
2.getHeaders(String name)方法
3.getHeaderNames()方法
package com.yyz.request;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//获取请求头
public class RequestDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String head = request.getHeader("Accept-Encoding");
//有些浏览器不支持压缩数据
if(head.contains("gzip")){
//输出压缩数据
}else{
//输出不压缩数据
}
//获取指定名称的头的所有值
Enumeration e = request.getHeaders("Accept-Encoding");
while(e.hasMoreElements()){
String value = (String ) e.nextElement();
System.out.println(value);
}
System.out.println("------------------------");
//获取所有的头和值
e = request.getHeaderNames();
while(e.hasMoreElements()){
String name = (String)e.nextElement();
String value = request.getHeader(name);
System.out.println(name+"="+value);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
在浏览器访问该程序,后台输出如下:
三、获得客户机请求参数(客户端提交的数据):
1.getParameter(name)方法
2.getParameterValues(String name)方法
3.getParameterNames方法
4.getParameterMap方法,做框架时大量使用
package com.yyz.request;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//获取请求数据
public class RequestDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//http://localhost:8080/test/servlet/RequestDemo?name=yyz
String value = request.getParameter("name");
System.out .println(value);
//http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance
String likes[] = request.getParameterValues("like");
if(likes!=null){
for(String like : likes){
System.out.println(like);
}
}
//下面是这种遍历的专业写法,获取数组数据的方式(可避免空指针异常)
for(int i=0;likes!=null&&i<likes.length;i++){
System.out.println(likes[i]);
}
//获取所有名称,并根据名称获取值
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement();
value = request.getParameter(name);
System.out.println(name+"="+value);
}
System.out.println("----------------------");
//得到request对象中用来封装数据的Map集合
Map<String,String[]> map = request.getParameterMap();
for(Entry<String, String[]> me : map.entrySet()){
String name = me.getKey();
String [] v = me.getValue();
System.out.println(name+"="+v[0]);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
猜你喜欢
- Controller如何进行重定向Spring MVC中进行重定向本人知道的有两种方式方法返回的URI(相对路径)中加上"redi
- 目录问题案例原因分析源码分析解决方法备注问题案例来个简单点的例子public static void main(String[] args)
- SpringBoot接收文件和对象使用场景:某个接口,需要同时接收文件和实体,也就是参数一、这个时候,前端就不能json格式传送数据了,要用
- 目前为止,我遇到使用Tomcat有三种情况:第一,使用Eclipse,在Eclipse中配置Tomcat。第二,直接在Tomcat中部署项目
- 第一种(懒汉,线程不安全):public class Singleton { private static Singleton
- 前言前两篇我们详细了解了 findById 和 findAll 以及 findAll 的分页查询,如果说JPA只有上面的两种查询功能,那就太
- 前言taptap-developer是一个spring boot框架驱动的纯Grpc服务,所以,只用了四步,移除了web和spring cl
- 后台生成验证码工具方法 /* * 设置图片的背景色 */ public static v
- SpringBoot v2.2以上重复读取Request Body内容一、需求项目有两个场景会用到从Request的Body中读取内容。打印
- Java 异常的栈轨迹(Stack Trace)详解 捕获到异常时,往往需要进行一些处理。比较简单直接的
- 一、Drools引擎简介1、基础简介Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形
- 前言前不久遇到一个问题,是公司早期的基础库遇到的,其实很低级,但是还是记录下来。出错点是一个 IO 流的写入bug,我们项目会有一种专有的数
- mybatis-spring:@MapperScan注解在demo: springboot+mybatis的示例中,dao层接口使用了注解@
- using System;using System.Collections.Generic;using System.Net;using S
- 本文实例讲述了java字符串相似度算法。分享给大家供大家参考。具体实现方法如下:public class Levenshtein {&nbs
- 本文实例讲述了java中Object类用法。分享给大家供大家参考。具体如下:1、Object类是所有java类的基类如果在类的声明中未使用e
- 缓存是HTTP协议的一个强大功能,但由于某些原因,它主要用于静态资源,如图像,CSS样式表或JavaScript文件,但是,HTTP缓存不仅
- 冒泡排序算法演示图:public static void bubbleSort(int[] array) { &
- 引言周五去面试又被面试的一个问题问哑巴了面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilde
- 本文实例讲述了C#提取网页中超链接link和text部分的方法。分享给大家供大家参考,具体如下:string s = "..&qu