所有HTTP请求参数及报文查看SERVLET【原】
HttpRequestServlet.java
说明:
用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来.
package king.server; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.UUID; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来
* @author King
*
*/
public class HttpRequestServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
System.err.println("我是服务器,通过request.getParameter()获取的参数:");
StringBuilder paramSB = new StringBuilder();
Enumeration<?> paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
String name=(String)paramNames.nextElement();
String valueNotDecode=request.getParameter(name);
String valueDecode=new String(valueNotDecode.getBytes("UTF-8"),"UTF-8");
paramSB.append(name + "==" + valueDecode+"\n");
}
System.out.println("我是服务器,通过param读取的参数如下:\n"+paramSB.toString());
PrintWriter writer = response.getWriter();
writer.write("通过param读取的参数如下:\n"+paramSB.toString());
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
} @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 如果"您的文本内容" 用UTF-8编码后,再以conn.setRequestProperty("content-type", "text/xml;charset=iso-8859-1");发送到本服务端,那么需要对参数内容进行如下解码
// String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8");
// System.out.println("name : "+ name); System.err.println("我是服务器,通过request.getParameter()获取的参数:");
StringBuilder paramSB = new StringBuilder();
Enumeration<?> paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
String name=(String)paramNames.nextElement();
String valueNotDecode=request.getParameter(name);
String valueDecode=new String(valueNotDecode.getBytes("iso-8859-1"),"UTF-8");
System.out.println(name + "==" + valueDecode);
paramSB.append(name + "==" + valueDecode+"\n");
} //使用apache的httpcomponents 的post请求时:formparams.add(new BasicNameValuePair("key","value")); 也只能从这里获取到!
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
String line = null;
StringBuilder streamSB = new StringBuilder();
while ((line = br.readLine()) != null) {
streamSB.append(line);
}
String decode = URLDecoder.decode(streamSB.toString(), "UTF-8");
System.out.println("我是服务器,通过request.getInputStream()读取的参数:\n" + decode); response.setCharacterEncoding("UTF-8");//第一优先级高于第二优先级,只能用来设置out输出流中所采用的编码
// response.setContentType("text/html;charset=UTF-8");//第二优先级,不仅能用来设置out输出流中所采用的编码,也可以设置浏览器接收到这些字符后以什么编码方式来解码
PrintWriter writer = response.getWriter();
writer.write("通过param读取的参数如下:\n"+paramSB.toString());
writer.write("通过stream读取的参数如下:\n"+decode);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 客户端通过conn.setRequestProperty(key,value),
* 即可在服务端通过request.getHeader(key)获取到对应的head协议头值
* @param request
* @param response
* @throws Exception
*/
public void tip(HttpServletRequest request, HttpServletResponse response) throws Exception{
//在客户端用
HttpURLConnection conn = (HttpURLConnection) new URL("http://localhost:8080/httpserver").openConnection();
conn.setRequestProperty("Accept", "application/soap+xml, application/dime, multipart/related, text/*");
//就能在本服务端用
request.getHeader("Accept");//获取到Head协议头中的值.
}
}
所有HTTP请求参数及报文查看SERVLET【原】的更多相关文章
- 所有HTTP请求参数及报文查看SERVLET
HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...
- jmeter将上一个接口返回值作为下一个接口的请求参数
在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...
- 修改request请求参数
本质上来讲,request请求当中的参数是无法更改的,也不能添加或者删除: 但在后台程序中,一般对request的参数的操作,都是通过request的getParameter.getParameter ...
- Android拦截并获取WebView内部POST请求参数
起因: 有些时候自家APP中嵌入的H5页面并不是自家的.但是很多时候又想在H5不知情的情况下获取H5内部请求的参数,这应该怎么做到呢? 带着这个疑问,就有了这篇博客. 实现过程: 方案一: 最开始想到 ...
- jsp连接数据库的乱码问题 servlet请求参数编码处理get post
1.在所有需要读取数据的地方用下面的方式.同时jsp必须统一编码,如我都是UTF-8 String userName= new String(request.getParameter("us ...
- Servlet请求参数的方式
今天整理了以下几种常用的Servlet请求参数的方式,下面简单地介绍 1)getParameter(String key)返回一个字符串,获得name和key 一样的表单控件的数据,如果有重复的nam ...
- Spring MVC请求参数绑定 自定义类型转化 和获取原声带额servlet request response信息
首先还在我们的框架的基础上建立文件 在domian下建立Account实体类 import org.springframework.stereotype.Controller; import org. ...
- 4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等
1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为tr ...
- 入门servlet:request获取请求参数通用方式
一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...
随机推荐
- 2017[BUAA软工]第0次个人作业
第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? ●其实填写志愿之前并不知道要学什么专业,当初选择计算机是因为计算机就业前景好.方向多.计算机应用的领域无处不在, ...
- 关于EA和ED的区别
在申请美国大学本科的过程中,申请的截止时间往往分为两轮:提前申请(Early Decision/Action) 和常规申请 (Regular Decision).提前申请,顾名思义,截止时间会相对早一 ...
- mysql 数据表备份导出,恢复导入操作实践
因为经常跑脚本的关系, 每次跑完数据之后,相关的测试服数据库表的数据都被跑乱了,重新跑脚本恢复回来速度也不快,所以尝试在跑脚本之前直接备份该表,然后跑完数据之后恢复的方式,应该会方便一点.所以实践一波 ...
- 一个想休息的线程:JVM到底是怎么处理锁的?怎么不让我阻塞呢?
我是一个线程,生活在JVM(Java虚拟机)中, 这一段日子过得有些无聊,整个世界似乎只有这一个人,天天忙着执行代码,想休息一下都很难. 我听说人类写的代码中有些特殊的地方,叫做临界区,比如synch ...
- Ajax+JSP登陆后带参数跳转
点击提交按钮后使用Ajax将用户名和密码传至后台校验,然后判断返回结果进行跳转或提示错误. <%@ taglib prefix="form" uri="http:/ ...
- linux中内存使用原理
首先介绍一下linux中内存是如何使用的. 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存 来使用,也 ...
- codeforces1045B
CF1045B 自己瞎鸡巴yy了一下,可知若一个数X不能被表示出来,那么X所有的表示方法都在A集合中,如a1,a2,a3······an-1,an-2中若a1+ai不能被表示出来,那么如果a1到ai是 ...
- BZOJ2159 Crash的文明世界(树形dp+斯特林数)
根据组合意义,有nk=ΣC(n,i)*i!*S(k,i) (i=0~k),即将k个有标号球放进n个有标号盒子的方案数=在n个盒子中选i个将k个有标号球放入并且每个盒子至少有一个球. 回到本题,可以令f ...
- Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 03 Zabbix常用的术语
03 Zabbix常用的术语 host(主机): 要监控的网络设备,可由IP或DNS名称指定 host group(主机组):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接: ...