Servlet--HttpUtils类

2024-06-17 11:48
文章标签 servlet httputils

本文主要是介绍Servlet--HttpUtils类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义

public class HttpUtils

收集 HTTP Servlet 使用的静态的有效的方法。


方法
1、getRequestURL
public static StringBuffer getRequestURL(HttpServletRequestrequest);
在服务器上重建客户端用来建立请求的 URL。这个方法反映了不同的协议(例如 http和 https)和端口,但不包含查询字符串。这个方法返回一个 StringBuffer 而不是一个 String,这样 URL 可以被 Servlet 开发者有效地修改。
2、parsePostData
public static Hashtable parsePostData(int len,ServletInputstream in);
解析一个包含 MIME 类型 application/x-www-form-urlencoded 的数据的流,并创建一个具有关键值-数据对的 hash table。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在 POST 的数据中出现一次或多次。这个关键值每出现一 次,它的相应的值就被加入到 hash table 中的字符串所对应的值的列表中。从POST数据读出的数据将经过URL 解码, +将被转换为空格以十六进制传送的数据 (例如%xx)将被转换成字符。当 POST 数据无效时,该方法抛出一个 IllegalArgumentException。
3、parseQueryString
public static Hashtable parseQueryString(String s);
解析一个查询字符串,并创建一个具有关键值-数据对的 hash table。这里的数据是该字符串所对应的值的列表。一个关键值可以出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到 hash table 中的字符串所对应的值的列表中。从查询字符串读出的数据将经过 URL 解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。

当查询字符串无效时,该方法抛出一个 IllegalArgumentException。


这个类我从来没接触过,不过既然是一个工具类,就贴出来吧,下面是源码:

package javax.servlet.http;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Hashtable;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
import javax.servlet.ServletInputStream;/** @deprecated */
public class HttpUtils
{private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";private static ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings");public static Hashtable parseQueryString(String s){String[] valArray = null;if (s == null) {throw new IllegalArgumentException();}Hashtable ht = new Hashtable();StringBuffer sb = new StringBuffer();StringTokenizer st = new StringTokenizer(s, "&");while (st.hasMoreTokens()) {String pair = st.nextToken();int pos = pair.indexOf('=');if (pos == -1){throw new IllegalArgumentException();}String key = parseName(pair.substring(0, pos), sb);String val = parseName(pair.substring(pos + 1, pair.length()), sb);if (ht.containsKey(key)) {String[] oldVals = (String[])(String[])ht.get(key);valArray = new String[oldVals.length + 1];for (int i = 0; i < oldVals.length; i++)valArray[i] = oldVals[i];valArray[oldVals.length] = val;} else {valArray = new String[1];valArray[0] = val;}ht.put(key, valArray);}return ht;}public static Hashtable parsePostData(int len, ServletInputStream in){if (len <= 0) {return new Hashtable();}if (in == null) {throw new IllegalArgumentException();}byte[] postedBytes = new byte[len];try {int offset = 0;do{int inputLen = in.read(postedBytes, offset, len - offset);if (inputLen <= 0) {String msg = lStrings.getString("err.io.short_read");throw new IllegalArgumentException(msg);}offset += inputLen;}while (len - offset > 0);}catch (IOException e) {throw new IllegalArgumentException(e.getMessage());}try{String postedBody = new String(postedBytes, 0, len, "8859_1");return parseQueryString(postedBody);}catch (UnsupportedEncodingException e) {}throw new IllegalArgumentException(e.getMessage());}private static String parseName(String s, StringBuffer sb){sb.setLength(0);for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);switch (c) {case '+':sb.append(' ');break;case '%':try {sb.append((char)Integer.parseInt(s.substring(i + 1, i + 3), 16));i += 2;}catch (NumberFormatException e){throw new IllegalArgumentException();} catch (StringIndexOutOfBoundsException e) {String rest = s.substring(i);sb.append(rest);if (rest.length() == 2) {i++;}}default:sb.append(c);}}return sb.toString();}public static StringBuffer getRequestURL(HttpServletRequest req){StringBuffer url = new StringBuffer();String scheme = req.getScheme();int port = req.getServerPort();String urlPath = req.getRequestURI();url.append(scheme);url.append("://");url.append(req.getServerName());if (((scheme.equals("http")) && (port != 80)) || ((scheme.equals("https")) && (port != 443))){url.append(':');url.append(req.getServerPort());}url.append(urlPath);return url;}
}


这篇关于Servlet--HttpUtils类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069364

相关文章

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

请解释Java Web应用中的前后端分离是什么?它有哪些好处?什么是Java Web中的Servlet过滤器?它有什么作用?

请解释Java Web应用中的前后端分离是什么?它有哪些好处? Java Web应用中的前后端分离 在Java Web应用中,前后端分离是一种开发模式,它将传统Web开发中紧密耦合的前端(用户界面)和后端(服务器端逻辑)代码进行分离,使得它们能够独立开发、测试、部署和维护。在这种模式下,前端通常通过HTTP请求与后端进行数据交换,后端则负责业务逻辑处理、数据库交互以及向前端提供RESTful

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示; 代码如下: Demo07.jrxml <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.

servlet用反射代替if..else

String methodName = request.getParameter("method"); Method method = this.getClass().getDeclaredMethod(methodName,HttpServletRequest.class, HttpServletResponse.class); method.invoke(this, request, re

【Servlet】基础入门

1、使用 IDEA 建 javaWeb 及 Servlet http://blog.csdn.net/u012532559/article/details/51013400 2、doget与dopost的区别 http://www.cnblogs.com/cyy-13/p/5711235.html

Servlet mapping specifies an unknown servlet name Action

看一下web.xml中<servlet-mapping>有没有配错

怎么通过Servlet向浏览器发送中文

1.通过Servlet向浏览器发送中文,会出现以下的乱码: 2.为什么通过Servlet向浏览器发送中文会产生乱码呢?          在Servlet编程中,经常需要通过response对象将一些信息返回给浏览器,给我们的客户端,而我们在服务器端显示的中文,但是响应给客户端浏览器却是乱码,这主要是由于response对象的getWriter()方法返回的PrintWriter对象默认

HttpUtils工具类(三)OKHttpClient使用详细教程

OkHttpClient 是一个由 Square 公司开发的 HTTP 客户端库,用于在 Android 和 Java 应用中进行网络请求。它支持同步和异步请求、连接池、超时设置、拦截器等功能,适合用于高性能网络请求,特别是在需要处理复杂的网络操作时。 一、OKHttpClient介绍 主要特点 同步和异步请求: 同步请求会在当前线程等待响应,适合不需要并发的简单请求。 异步请求会

请解释Java Web中的Filter的作用和使用场景。什么是Java Web中的JSP?请解释其与Servlet的关系及各自优势。

请解释Java Web中的Filter的作用和使用场景。 Java Web中的Filter(过滤器)是一个重要的组件,它在客户端与服务器端之间扮演着关键角色。Filter的主要作用是在请求到达Servlet或JSP之前,或者响应返回给客户端之前,对请求和响应进行预处理和后处理。以下是Filter的详细作用和使用场景: Filter的作用 请求预处理:在请求到达目标资源(如Servlet、J