- 浏览: 305656 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
Xiaoanemy:
我怎么就是不行Error opening zip file o ...
javarebel不用再反复重启tomcat -
fly_hyp:
lvwenwen 写道相对hessian来说有其他什么优势?应 ...
一个很牛的架构组件(Dubbo) -
lvwenwen:
相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
dj4307665:
想了解下,相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
fly_hyp:
sweat89 写道怎么解决的啊?忘了。怎么说呢?自己写的代码 ...
Spring之恶心错误记录
转自:http://leonardom.wordpress.com/2009/08/06/getting-parameters-from-httpexchange/
You now in Java 6 has some APIs to create lightweight HTTP server. Well, today, I had to created a lightweight HTTP server embedded in an application, but when I try to get the parameters for a request I noticed the HttpExchange class doesn’t have a method for that.
After some researches on Google, I come across a solution.
What I did was to create a Filter class which will deal with the parameters parse:
public class ParameterFilter extends Filter { @Override public String description() { return "Parses the requested URI for parameters"; } @Override public void doFilter(HttpExchange exchange, Chain chain) throws IOException { parseGetParameters(exchange); parsePostParameters(exchange); chain.doFilter(exchange); } private void parseGetParameters(HttpExchange exchange) throws UnsupportedEncodingException { Map<String, Object> parameters = new HashMap<String, Object>(); URI requestedUri = exchange.getRequestURI(); String query = requestedUri.getRawQuery(); parseQuery(query, parameters); exchange.setAttribute("parameters", parameters); } private void parsePostParameters(HttpExchange exchange) throws IOException { if ("post".equalsIgnoreCase(exchange.getRequestMethod())) { @SuppressWarnings("unchecked") Map<String, Object> parameters = (Map<String, Object>)exchange.getAttribute("parameters"); InputStreamReader isr = new InputStreamReader(exchange.getRequestBody(),"utf-8"); BufferedReader br = new BufferedReader(isr); String query = br.readLine(); parseQuery(query, parameters); } } @SuppressWarnings("unchecked") private void parseQuery(String query, Map<String, Object> parameters) throws UnsupportedEncodingException { if (query != null) { String pairs[] = query.split("[&]"); for (String pair : pairs) { String param[] = pair.split("[=]"); String key = null; String value = null; if (param.length > 0) { key = URLDecoder.decode(param[0], System.getProperty("file.encoding")); } if (param.length > 1) { value = URLDecoder.decode(param[1], System.getProperty("file.encoding")); } if (parameters.containsKey(key)) { Object obj = parameters.get(key); if(obj instanceof List<?>) { List<String> values = (List<String>)obj; values.add(value); } else if(obj instanceof String) { List<String> values = new ArrayList<String>(); values.add((String)obj); values.add(value); parameters.put(key, values); } } else { parameters.put(key, value); } } } } }
After that you can add this filter to your HttpServer context:
HttpServer server = HttpServer.create(new InetSocketAddress(80), 0); HttpContext context = server.createContext("/myapp", new myHttpHandler()); context.getFilters().add(new ParameterFilter()); server.start();
Then you can do something like below in your HttpHandler to get the parameters:
public class MyHttpHandler implements HttpHandler { @Override public void handle(HttpExchange exchange) throws IOException { Map<String, Object> params = (Map<String, Object>)exchange.getAttribute("parameters"); //now you can use the params } }
Well, that’s all! I hope you enjoy the tip!
发表评论
-
为什么中文编程项目失败率特别高?
2017-06-11 10:58 424不少中文编程语言都是创造者一时热情。觉得发明很伟大,想当然的 ... -
阿里大数据架构
2014-06-26 10:16 758阿里大数据架构 -
JDI Java程序员的高级玩具
2013-12-30 10:03 1487JDI,Java程序员的高级玩 ... -
异构云操作系统需要具备的18总特性和3类支持
2013-12-24 14:07 1086什么是云操作系统? 相对于单机操作系统,网络操作系统。至少 ... -
安全云存储系统技术总结
2013-12-05 16:15 1036阅读了一下《计算机研究与发展-安全云存储系统与关键技 ... -
大型团队Java项目日志自由激活的设计
2013-11-25 13:40 853大型团队Java项目日志自由激活的设计 摘要: ... -
可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写
2013-11-05 17:04 871这句话我喜欢。 凡是可以用 JavaScrip ... -
评价挺高的Java Web Profile 开源工具 Jwebap
2013-11-04 09:19 740想法很不错,作者也很努力,评价也不错。不过从历史的角 ... -
playframework 非常不错的web开发框架
2013-09-18 15:34 892playframework 非常不错的web开发 ... -
knockoutjs 非常不错的js mvc 框架
2013-09-18 15:32 697knockoutjs 非常不错的js mvc 框架 ... -
一个企业级的自动化工具gradle
2013-09-02 16:08 812还没有用过,理念不错,我喜欢。值得研究一下。 ... -
activeJDBC现在很流行的一个JDBC应用
2013-09-02 16:05 884activeJDBC现在很流行的一个JDBC应用 ... -
如何解决 emma 在 JDK7 下 java.lang.ClassFormatError 错误
2013-09-02 16:04 759JVM 启动时可以加入 “-XX:-UseSplit ... -
10 个非常重要的 HotSpot JVM 参数
2013-08-17 20:42 8231) 跟 Java 堆大小相关的 JVM 内存参数 下 ... -
A JSP to print all the stacks
2013-06-19 17:29 870A JSP to print all the stacks ... -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
2013-05-13 18:05 8471.错误案例 java] view plaincop ... -
对Emma的使用进行一些总结
2013-01-06 17:47 1007对Emma的使用进行一些总结 写道 首先将 ... -
一个很牛的架构组件(Dubbo)
2012-12-27 17:52 2713这是一个在阿里内部广泛使用的,管理SOA组件间互相调用的基本框 ... -
Open Id and Open Auth
2011-05-31 10:00 1449Open Id and Open Auth 1.a ... -
redis 初学指导
2010-06-26 23:08 1342如果你初学或者对redis很有兴趣下面的文字可能会对你有帮助 ...
相关推荐
如果是POST方法,可能涉及到设备参数的提交,此时服务器会解析POST数据,更新设备参数,并返回确认信息。 4. **设备参数配置**:设备参数通常存储在MCU的Flash或EEPROM中,通过HTTP POST请求可以将新的配置参数传递...
Nginx is a lightweight HTTP server designed for high-traffic websites, with network scalability as the primary objective. With the advent of high speed Internet access, short loading times and fast ...
直到最近,在浏览器中创建类似桌面的应用程序意味着使用低效的Ajax或Comet技术与之通信服务器。 通过本实用指南,您将学习如何使用WebSocket, 使客户端和服务器能够与每个通信的协议其他同时在一个连接上。...
在IBM HTTP Server和WebSphere环境中,SSO通常通过插件和LTPA(Lightweight Third-party Authentication)令牌实现。在项目中,你需要配置Web应用程序信任LTPA令牌,这样当用户通过SSL连接登录到一个应用后,他们...
However, for the past few years, the same reports reveal the rise of a new competitor: Nginx, a lightweight HTTP server originating from Russia—pronounced engine X. There have been many questions ...
《lightweight清爽简洁的编辑器探索》 在数字化时代,编辑器成为了我们日常工作中不可或缺的工具,特别是对于程序员、作家以及任何需要处理文本的人来说。"lightweight清爽简洁的编辑器"这一主题,恰恰迎合了现代...
A_flexible_and_lightweight_web_server_fiery
3. **HTTP服务器框架**:这是一段用于解析HTTP请求、构建响应和管理文件系统映射到HTTP资源的代码。在STM32上,可以自己编写这部分代码,或者使用开源库,如uWSGI或ESP8266WebServer。 4. **硬件接口**:STM32需要...
它的核心组件可能包括索引构建模块、查询解析器、排名算法实现和结果展示逻辑,所有这些都封装在Java的lightweight-search.jar文件中。对于需要在有限资源环境下实现快速、准确搜索功能的项目,这样的工具是理想的...
在lightweight-rate-limiter中,配置中心可以是如Apollo、ConfigServer等,它使得限流参数可以根据业务需求动态调整,增强了系统的灵活性。 四、轻量级设计 轻量级限流组件强调的是低侵入性、易于集成和高效执行。...
STM32H7FreeRTOS_LWIP_web_server_socket是一个基于STM32H7微控制器、FreeRTOS实时操作系统、LWIP轻量级网络协议栈的简单Web服务器实现。这个项目的核心是利用STM32的强大处理能力,通过FreeRTOS进行任务调度,结合...
Latest version of "Lightweight Django" Suitable if you've finished the official tutorial and re start Django research
Server Core也支持部署和运行Active Directory Domain Services(AD DS)和Active Directory Lightweight Directory Services(AD LDS)。文档中提到了使用“netdom join”和“netdom remove”命令添加和移除域成员...
5. **处理HTTP请求**:在回调函数中,读取客户端发送的HTTP请求,解析请求头,根据请求类型(GET、POST等)执行相应的操作。 6. **响应处理**:根据请求,生成HTTP响应报文,包括状态码、响应头和内容。使用netconn...
Welcome to the HTTP ... This repository contains a lightweight and efficient HTTP proxy server implemented in C. The server acts as an intermediary for requests from clients seeking resources from other
In this paper, we propose a new lightweight 64-bit block cipher, which we call MIBS, suitable for resource-constrained devices, such as low-cost RFID tags. We also study its hardware implementation ef...
总的来说,“lightweight-human-pose-estimation.rar”项目揭示了深度学习在轻量化人体姿态估计中的实践,展现了AI技术如何帮助我们理解和解析复杂的人体运动。这不仅提升了相关领域的技术水平,也为未来的研究和...
BEC参数通常包含在配置文件中,如server.xml,通过修改这些参数可以调整服务器的行为。例如,调整BEC的JDBC连接池参数可以优化数据库访问性能。 综上所述,BES是一个强大的企业级应用服务器,其丰富的特性和配置...
例如,通过调整内存分配、协议栈配置和接口参数,开发者可以优化内存使用,提升数据处理效率,减少延迟,并增加吞吐量,从而使得嵌入式设备在网络性能上达到预期表现。 此外,lwIP的多线程支持和可裁剪的设计也是其...