- 浏览: 307424 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
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 429不少中文编程语言都是创造者一时热情。觉得发明很伟大,想当然的 ... -
阿里大数据架构
2014-06-26 10:16 764阿里大数据架构 -
JDI Java程序员的高级玩具
2013-12-30 10:03 1502JDI,Java程序员的高级玩 ... -
异构云操作系统需要具备的18总特性和3类支持
2013-12-24 14:07 1091什么是云操作系统? 相对于单机操作系统,网络操作系统。至少 ... -
安全云存储系统技术总结
2013-12-05 16:15 1048阅读了一下《计算机研究与发展-安全云存储系统与关键技 ... -
大型团队Java项目日志自由激活的设计
2013-11-25 13:40 858大型团队Java项目日志自由激活的设计 摘要: ... -
可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写
2013-11-05 17:04 882这句话我喜欢。 凡是可以用 JavaScrip ... -
评价挺高的Java Web Profile 开源工具 Jwebap
2013-11-04 09:19 744想法很不错,作者也很努力,评价也不错。不过从历史的角 ... -
playframework 非常不错的web开发框架
2013-09-18 15:34 909playframework 非常不错的web开发 ... -
knockoutjs 非常不错的js mvc 框架
2013-09-18 15:32 711knockoutjs 非常不错的js mvc 框架 ... -
一个企业级的自动化工具gradle
2013-09-02 16:08 815还没有用过,理念不错,我喜欢。值得研究一下。 ... -
activeJDBC现在很流行的一个JDBC应用
2013-09-02 16:05 890activeJDBC现在很流行的一个JDBC应用 ... -
如何解决 emma 在 JDK7 下 java.lang.ClassFormatError 错误
2013-09-02 16:04 768JVM 启动时可以加入 “-XX:-UseSplit ... -
10 个非常重要的 HotSpot JVM 参数
2013-08-17 20:42 8261) 跟 Java 堆大小相关的 JVM 内存参数 下 ... -
A JSP to print all the stacks
2013-06-19 17:29 878A JSP to print all the stacks ... -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
2013-05-13 18:05 8541.错误案例 java] view plaincop ... -
对Emma的使用进行一些总结
2013-01-06 17:47 1011对Emma的使用进行一些总结 写道 首先将 ... -
一个很牛的架构组件(Dubbo)
2012-12-27 17:52 2723这是一个在阿里内部广泛使用的,管理SOA组件间互相调用的基本框 ... -
Open Id and Open Auth
2011-05-31 10:00 1462Open Id and Open Auth 1.a ... -
redis 初学指导
2010-06-26 23:08 1347如果你初学或者对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
总的来说,“lightweight-human-pose-estimation.rar”项目揭示了深度学习在轻量化人体姿态估计中的实践,展现了AI技术如何帮助我们理解和解析复杂的人体运动。这不仅提升了相关领域的技术水平,也为未来的研究和...
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...
BEC参数通常包含在配置文件中,如server.xml,通过修改这些参数可以调整服务器的行为。例如,调整BEC的JDBC连接池参数可以优化数据库访问性能。 综上所述,BES是一个强大的企业级应用服务器,其丰富的特性和配置...
例如,通过调整内存分配、协议栈配置和接口参数,开发者可以优化内存使用,提升数据处理效率,减少延迟,并增加吞吐量,从而使得嵌入式设备在网络性能上达到预期表现。 此外,lwIP的多线程支持和可裁剪的设计也是其...