系统集成(2)

来源:网络收集 时间:2025-09-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

举一个例子,如@Override里面的Retention设为SOURCE,编译成功了就不要这一些检查的信息;相反,@Deprecated里面的Retention设为RUNTIME,表示除了在编译时会警告我们使用了哪个被Deprecated的方法,在执行的时候也可以查出该方法是否被Deprecated.

4、源文件ElementType.java 代码

public enum ElementType {

TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE,PACKAGE }

@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上的.说明一下:TYPE(类型), FIELD(属性), METHOD(方法), PARAMETER(参数), CONSTRUCTOR(构造函数),LOCAL_VARIABLE(局部变量),

ANNOTATION_TYPE,PACKAGE(包),其中的TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上.

另外,从1的源代码可以看出,@Target自己也用了自己来声明自己,只能用在ANNOTATION_TYPE之上.

如果一个Annotation类型没有指明@Target使用在哪些元素上,那么它可以使用在任何元素之上,这里的元素指的是上面的八种类型. 举几个正确的例子:

@Target(ElementType.METHOD)

@Target(value=ElementType.METHOD)

@Target(ElementType.METHOD,ElementType.CONSTRUCTOR) 具体参考一下javadoc文档

上面一下1和2的源文件,它们都使用了@Documented,@Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个类型生成的信息.

另外一点,如果需要把Annotation的数据继承给子类,那么就会用到@Inherited这一个Annotation类型.

第三部分:下面讲的设计一个最简单的Annotation例子,这一例子共用四个文件; 1、Description.java 代码

package lighter.javaeye.com;

import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME) @Documented

public @interface Description { String value(); }

说明:所有的Annotation会自动继承java.lang.annotation这一个接口,所以不能再去继承别的类或是接口.

最重要的一点,Annotation类型里面的参数该怎么设定:

第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型.

第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean和String,Enum等数据类型.例如,String value();这里的参数成员就为String.

第三,如果只有一个参数成员,参数名称一定要为\后加小括号.例:上面的例子就只胡一个参数成员.

2、Name.java 代码

package lighter.javaeye.com;

import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;

//注意这里的@Target与@Description里的不同,参数成员也不同 @Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME) @Documented

public @interface Name { String originate(); String community(); }

3、JavaEyer.java

代码

package lighter.javaeye.com;

@Description(\做最棒的软件开发交流社区\ public class JavaEyer {

@Name(originate=\创始人:robbin\ public String getName() {

return null; }

@Name(originate=\创始人:江南白衣\ public String getName2() {

return \借用两位老大的id,写这一个例子,请见谅!\ } }

4、最后,写一个可以运行提取JavaEyer信息的类TestAnnotation 代码

package lighter.javaeye.com;

import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set;

public class TestAnnotation { /**

* author lighter

* 说明:具体关天Annotation的API的用法请参见javaDoc文档 */

public static void main(String[] args) throws Exception { String CLASS_NAME = \ Class test = Class.forName(CLASS_NAME); Method[] method = test.getMethods();

boolean flag = test.isAnnotationPresent(Description.class); if(flag) {

Description des = (Description)test.getAnnotation(Description.class); System.out.println(\描述:\ System.out.println(\ }

//把JavaEyer这一类有利用到@Name的全部方法保存到Set中去 Set set = new HashSet(); for(int i=0;i

boolean otherFlag = method[i].isAnnotationPresent(Name.class); if(otherFlag) set.add(method[i]); }

for(Method m: set) {

Name name = m.getAnnotation(Name.class); System.out.println(name.originate());

System.out.println(\创建的社区:\ } } }

5、运行结果:

描述:javaeye,做最棒的软件开发交流社区 ----------------- 创始人:robbin

创建的社区:javaEye 创始人:江南白衣

创建的社区:springside

移动开发者大会最新议题发布,八折抢票! 2013年1月微软MVP申请开始啦! ―第一次亲密接触‖—有奖征文活动

应用HttpClient来对付各种顽固的WEB服务器

分类: Java网络编程 2006-01-06 17:08 7435人阅读 评论(5) 收藏 举报

一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。目前我们使用的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中―偷‖一些数据;利用某些站点提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网站来完成这个功能,这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。如果对方仅仅是一个很简单的页面,那我们的程序会很简单,本文也就没有必要大张旗鼓的在这里浪费口舌。但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。我们知道目

前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用java.net.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的―顽固‖!再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了―它‖就很容易解决了! 我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。当然了,正如前面说到的,如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,目前的版本是2.0RC2。commons下本来已经有一个net的子项目,但是又把httpclient单独提出来,可见http服务器的访问绝非易事。

Commons-httpclient项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。通过它可以让原来很头疼的事情现在轻松的解决,例如你不再管是HTTP或者HTTPS的通讯方式,告诉它你想使用HTTPS方式,剩下的事情交给httpclient替你完成。本文会针对我们在编写HTTP客户端程序时经常碰到的几个问题进行分别介绍如何使用httpclient来解决它们,为了让读者更快的熟悉这个项目我们最开始先给出一个简单的例子来读取一个网页的内容,然后循序渐进解决掉前进中的所有问题。 1. 读取网页(HTTP/HTTPS)内容

下面是我们给出的一个简单的例子用来访问某个页面

/*

* Created on 2003-12-14 by Liudong */

package http.demo;

import java.io.IOException;

import org.apache.commons.httpclient.*;

import org.apache.commons.httpclient.methods.*; /**

* 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面 * @author Liudong */

public class SimpleClient {

public static void main(String[] args) throws IOException {

HttpClient client = new HttpClient(); //设置代理服务器地址和端口

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库系统集成(2)在线全文阅读。

系统集成(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/618633.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219