仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 490|回复: 14
打印 上一主题 下一主题

[学习教程] JAVA网页设计Java中创立URL的罕见成绩及办理计划仓酷云

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。URL无处不在,不外仿佛开辟职员并没有真正地舆解它们,由于我在StackOverflow上常常看到有人在问怎样准确的创立一个URL。想晓得URL语法是怎样事情的,能够看下Lunatech的这篇文章,十分不错。
本文不会深切先容URL的全体语法(假如你想周全懂得URL的话,能够读下RFC3986,RFC1738,和下面提到的那篇文章,另有W3下面的文档),这里我想讲的是罕见的一些库在操纵URL方面存在的毛病,和怎样经由过程URL-builder来准确的利用它,这是我们公布的一个用于准确地创立URL的Java库。
成绩1:Java的URLEncoder

这个类不但名字取的很差,并且它的文档下去第一句话就不太仇人。
UtilityclassforHTMLformencoding.
你大概正烦闷为何叫URLEncoder呢,看到这行就完全无语了。
假如你读过Lunatech的那篇博文,如今你应当分明了,你没法经由过程这个类将一个URL串事业般地转化成一个平安,准确编码的URL对象,固然假如你没做足作业的话,这里有个小例子能够匡助你了解下。
假定你有个HTTP的服务端点http://foo.com/search,它承受一个查询参数p,p的值就是要查找的字符串。假如你搜刮"You&I"这个串的话,你第一次创立的搜刮的URL多是如许:http://foo.com/search?q=You&I。这个固然没法事情,由于&是分开查询参数name/value对的分开符。假如你拿到这个庞杂的URL串的话,你对它几乎一筹莫展,由于起首你就没法准确的剖析它。
那好,我们来利用下URLEncoder。URLEncoder.encode("You&I","UTF-8")是了局是You+%26+I。这个%26解码以后就是&,而+号在查询串中代表的就是空格,因而这个URL是能一般事情的。
如今假定你想利用你的查询串来拼接URL路径,而不是放到URL参数内里。很分明,http://foo.com/search/You&I是毛病的。不幸的是,URLEncoder.encode()的了局也是错的。http://foo.com/search/You+%26+I解码后会失掉/search/You+&+I,由于+号在URL路径中是不会剖析成空格的。
URLEncoder也许能满意你的一些场景。但不幸的是,它这个过于通用的名字使得开辟职员很简单误用它。因而最好的办法就是不要利用它,以免前面其余开辟职员在你的基本上又利用了其余功效时出错(除非,你真的是在举行"HTML表单编码")。
成绩2:GroovyHttpBuilder和Java的URI

HTTPBuilder是Groovy的一个HTTP客户端库。
创立一个一般的GET哀求十分复杂:
  1. newHTTPBuilder("http://localhost:18080").request(Method.GET){uri.path="/foo"}
复制代码
这段代码会发送GET/fooHTTP/1.1到服务端(你能够运转nc-l-p18080以后再实行这段代码考证下)。
我们来试一下包括空格的URL。
  1. newHTTPBuilder("http://localhost:18080").request(Method.GET){uri.path="/foobar"}
复制代码
这个发送的是GET/foo%20barHTTP/1.1,看起来还不错。
如今假定我们的路径中有一段就叫做foo/bar。这可不克不及复杂地发送foo/bar就完了,由于这会被以为成路径中包括两段,foo和bar,那我们试下foo%2Fbar吧(把/交换成对应的编码)。
  1. newHTTPBuilder(http://localhost:18080).request(Method.GET){uri.path=/foo%2Fbar}
复制代码
这个发送的则是GET/foo%252FbarHTTP/1.1。这可不太妙。%2F中的%被反复编码了,如许解码后拿到的路径是foo%2Fbar而不是foo/bar。这里实在真正要怪的是java.net.URI,由于这个HTTPBuilder里的URIBuilder类用的就是它。
上述代码中的设置闭包中表露的uri属性的范例是URIBuilder。假如你经由过程uri.path=...来更新uri的path属性的话,它终极会挪用URI的一个机关办法,这个办法关于传进的path属性是这么形貌的:
假如供应了path参数,则将它追加到URL前面。path内里的字符,只需不长短保存,标点,本义及别的分类(译注:这几个分类在RFC2396中有具体申明)的字符,同时又不是/大概@号的,城市举行编码。
这个做法意义不年夜,由于假如未编码前的文本包括特别字符的话,它就没法天生一个准确编码的路径分段。换句话说,“我会对这个字符串举行编码,而编码以后它就是准确的”,这固然是个谬论,而URI恰好是这个谬论的就义品。假如字符串已准确编码了,那就没甚么成绩,假如不是的话,那就垮台了,由于这个串没法剖析。现实上,文档里说的不会对/号本义的意义是,它假定path串已准确地编码了(就是说准确地利用/来分开路径),同时又还没有准确地编码(除/外的别的部分仍旧必要举行编码)。
假如HTTPBuilder不利用URI类的这个存在缺点的功效就行了,固然了,假如URI本人自己没成绩的话就更好了。

轮性能微软曾做过一个例子,就是同一个项目用java和.net网页编程来作,结果开发周期,.net网页编程是java的一半,性能java是.net网页编程的十分之一,代码量java是.net网页编程的三倍。呵呵,这说明了什么,.net网页编程的全方位比java好。但是有的人说.net网页编程不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net网页编程很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net网页编程,只是推出了跨语言的.net网页编程,
因胸联盟 该用户已被删除
沙发
发表于 2015-1-20 19:21:54 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
透明 该用户已被删除
板凳
发表于 2015-1-29 16:31:09 | 只看该作者
是一种突破用户端机器环境和CPU
莫相离 该用户已被删除
地板
发表于 2015-1-30 23:45:56 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
兰色精灵 该用户已被删除
5#
发表于 2015-2-6 17:07:01 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
老尸 该用户已被删除
6#
发表于 2015-2-7 08:29:40 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
蒙在股里 该用户已被删除
7#
发表于 2015-2-7 23:46:39 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
爱飞 该用户已被删除
8#
发表于 2015-2-8 03:26:28 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘飘悠悠 该用户已被删除
9#
发表于 2015-2-24 03:25:27 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
柔情似水 该用户已被删除
10#
发表于 2015-2-25 00:21:59 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
分手快乐 该用户已被删除
11#
发表于 2015-3-7 14:43:47 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
再见西城 该用户已被删除
12#
发表于 2015-3-11 08:52:11 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
13#
发表于 2015-3-11 16:04:16 | 只看该作者
是一种为 Internet发展的计算机语言
变相怪杰 该用户已被删除
14#
发表于 2015-3-19 00:44:55 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
若天明 该用户已被删除
15#
发表于 2015-3-26 20:11:01 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表