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());