高级java实验指导书(1) 下载本文

1、了解注解的基本概念和为什么使用注解 2、掌握常见的注解使用方法以及如何自定义注解 3、了解注解实体映射与如何解析注解实体 4、学会如何利用注解解决实际编程中的问题

二、实验内容 1、程序验证题

(1)输入如下程序,看编译器报什么警告。

public class Person {

private String name;

public void speak(String message){

List list = new ArrayList();

System.out.println(\\

}

}

(2)输入如下程序,看程序结果是什么? class A { private String id; A(String id){ this.id = id; } @Deprecated public void execute(){ System.out.println(id); } public static void main(String[] args) { A a = new A(\

a.execute();

}

}

2、程序填空题

(1)要定义一个作用在属性上、信息保留到程序运行时的注解ID。请按要求填完程序。

——————————

——————————

public @interface ID { public String value() default \} 13

(2)如下程序,要为注解ID赋一个值“personID”,请根据题目要求填完程序。 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ID { public String value(); public String description() default \ }

public class Person {

————————

}

三、根据下面要求编写程序

(1)创建Person类,Person的属性有:

Strng name 姓名 String sex 性别 Integer age 年龄, String idNo 身份证号

Boolean isMerried 是否已婚

请生成相应的getter、setter方法。请编写注解@Label,表示所注解对象的中文名称,请把@Label注解标注在Person类和Person的每个属性上面。请编写PersonInput类,负责提示录入人员的相关属性,提示必须是注解@Label所标注的中文名称。请编写PersonDisplay,负责显示人员信息,显示时的属性名称必须为注解@Label所标注的中文名称,PersonInput类与PersonDisplay类实现了共同的接口PersonAction,接口PersonAction有方法process,方法process的签名为:public Person process(Person person);

(2) 在第一题目的基础上,编写注解@Column,属性有Label 表示类的属性的显示名称,

Nullable 表示是否允许属性值为空,MaxLength 表示文本属性的最大长度,MinLength表示文本属性的最小长度,MaxValue表示最大值,MinValue表示最小值,把注解@Column加在Person类的每个属性上,在输入Person时根据注解@Column的配置进行校验。第一题的@Label只标注在类上。请实现Person的增、删、改、查功能。

四、实验结果

写实验报告。内容包括:

1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照)

14

3、若有没通过的程序,分析原因。

五、选做题目

(1)请思考:注解还可以应用到哪些场景?

(2) 请设计一个注解,用于标注类的方法可以调用的权限(即标注方法只有在用户登录后,有指定权限的人员才可以调用),结合第三章的动态代理,在方法调用时进行安全检查。

一、实验目的

实验5 15

网络

1、了解网络协议的基本概念和区分OSI模型和TCP/IP模型的不同点。

2、熟悉输入输出流、以及常见的流处理工具。

3、掌握基于TCP编程和UDP编程的基本步骤和对相关核心类的了解。 4、掌握简单的应用服务器工作原理,为后面Web服务器开发打好基础。

二、实验内容

1.验证实验。

(1)输入如下程序,观察输出结果。 public static void main(String[] args) throws Exception { InetAddress address = InetAddress.getByName(\ System.out.println(\获取新浪的IP地址========\ System.out.println(address.toString()); InetAddress[] addresses = InetAddress.getAllByName(\ System.out.println(\获取新浪的IP地址列表=======\ for(InetAddress add : addresses){ System.out.println(add.toString()); } } (2)输入如下程序,观察输出结果。

public class NetTest { public static void main(String[] args) throws Exception{ InetAddress address = InetAddress.getLocalHost(); if(address instanceof Inet4Address){ System.out.println(\ address = (Inet4Address)address; } System.out.println(address.toString()); } } public class NetTest {

2.程序填空题。

1、 如下程序,是基于TCP/IP编程的客户端和服务端的程序。请填完空缺代码

public class Client { public static void main(String[] args) throws Exception{

Socket socket = new Socket(\InputStreamReader reader = new InputStreamReader(socket.getInputStream()); 16 ———————————— PrintWriter writer = new PrintWriter(socket.getOutputStream());