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

相关文章

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

玩转Web之servlet(三)---一张图看懂B/S架构

学WEB, 首先 要明白B/S架构,本文将简单说一下小编的愚见,若有不当,欢迎大家指正。 首先,什么是B/S架构?B/S是Broweser/Server的缩写,即浏览器/服务器模式,简单说就是客户端使用浏览器,服务端使用Web服务器,客户端与服务端之间使用http协议进行通讯。 那么,为什么要使用B/S架构呢?当然是其有一定的优点:           1.传统的C/S架构 需要单独安装客户

jsp和Servlet中的响应(response)编码

<span style="font-size:18px;">  常见字符编码:iso-8859-1(不支持中文)、gb2312、gbk、gb18030(系统默认编码,中国的国标码)、utf-8(万国码,支持全世界的编码,所以我们使用这个)1. 响应编码* 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文

Servlet小记

Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,由Tomcat来创建! 在web.xml中配置Servlet的目的其实只有一个,就是把访问路径与一个Servlet绑定到一起。 服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在we

Jsp和Servlet分工之求a+b的和

流程: 在WebContent文件下面建立sum文件夹,再在这里面新建form.jsp和result.jsp页面,在 form.jsp: <body> <span style="white-space:pre"> </span>//是项目名加资源路径<form action="/Web/SumServlet" method="post">整数a:<input type="

WEB服务器、应用服务器、Tomcat、Servlet

Web服务器:专门处理HTTP请求,提供WEB信息浏览服务 应用服务器:可解析运行后台代码,为应用服务器提供商业逻辑 Servlet:是一种运行在支持Java语言的服务器上的组件 Tomcat是一个Servlet容器,也是具备WEB服务器能力的轻量级的应用服务器

servlet---java读取本地文件

元素顺序列表:       元素标签详解: 元素1:<icon> 含义 icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径. <small-icon>/路径/smallicon.gif</small-icon> small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象

web容器 web服务器 servlet/jsp容器 之间的区别和关系

Web服务器(软件): Apache http server, 这个它的网址,http://httpd.apache.org/download.cgi#apache24,实现的是HTTP协议,提供的是静态网页服务。 替代者有Nginx Web容器: tomcat, http://tomcat.apache.org/whoweare.html, 实现的是JSP,Servlet,提供了环境

深入理解Servlet Filter及其限流实践

引言 在Java Servlet技术中,Filter是一个拦截器,它允许开发者在请求到达目标资源之前或响应发送给客户端之后,对请求或响应进行拦截和处理。这种机制为实现诸如身份验证、日志记录、请求修改等功能提供了极大的灵活性。 Filter基础 Filter接口定义了三个主要方法:init()、doFilter()和destroy()。下面我们将逐一介绍这些方法的作用和使用场景。 init(

java jsp+servlet实现登录网页设计

java jsp+servlet实现登录网页设计 这次涉及到四个文件: 登录页面:login.jsp 登录成功欢迎页面:success.jsp 登录失败页面:fail.jsp Servlet处理文件:LoginServlet.java 其实还涉及到一个文件:web.xml,这个后面再说: 下面分别介绍这几个文件: //------------------