高级java实验指导书(1)
更新时间:2024-03-14 06:55:01 阅读量: 综合文库 文档下载
高级java程序设计实验指导书
指导老师:王森
重庆理工大学计算机科学与工程学院
目录
第一部分 上机实验的目的及要求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
1.1 上机实验的目的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 1.2 上机实验基本要求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
第二部分 实验内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4 实验1 java集合框架。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4
实验 2 类型信息与反射。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7 实验 3 泛型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 实验 4 注解。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13 实验 5 网络。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。16 实验 6 多线程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。20 实验 7 序列化。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。24 实验 8 WEB服务器开发。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。28
第一部分 上机实验的目的及要求
2
1.1 上机实验的目的
《高级java程序设计》是软件工程专业的一门专业基础课,课程开设的目的就是帮助学生建立面向对象编程的基本思想。通过本课程的学习,使学生在短时间内理解java面向对象编程的基本原则,以及对Java Web编程、java数据库编程、WEB服务器编程有一个基本的了解,并为后继课程打下坚实的理论基础和编程基础。
实验课是本门课程的重要环节。实验内容以验证性实验和设计性实验相结合为主,以综合性实验为辅。实验过程中要求使用JAVA语言独立进行编程和调试。通过实验主要要达到下述目的:
1、加深对面向对象编程思想的理解。 2、熟悉JAVA语言的语言要素,通过大量的验证性实验,巩固学生在理论课上所学的知识点。
3、通过大量的实验编写来提高学生对程序的编写、调试、连接、运行全过程,积累程序调试经验。
4、学习如何系统的设计程序、使学生逐渐建立程序设计的系统观,养成良好的编程习惯和编程风格。
1.2 上机实验基本要求
学生在实验前必须做好上机的各项准备,按教师的要求进行上机实验。具体要求如下:
1、根据实验指导书提前做好上机预习。必须携带相关的源程序上机。程序可以是由教师布置安排的或是自编的。
自编程序应书写整齐,并经人工检查无误,以提高上机效率。对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。
2、必须携带教材和相关参考资料上机。 3、调试程序的过程应独立完成。
独立上机是学生独立思维能力独自动手能力的一个重要途径,上机过程中出现的问题,一般应由学生独立处理,不要轻易举手问老师或周围同学。对常见的“出错信息”应尽快熟悉其含义,并在总结经验的基础上迅速排出常见的错误。
4、在程序调试通过运行成功后,应及时做好程序清单和运行结果的记录,实验结束后及时填写实验报告。实验报告应包括如下内容: (1)实验时间 (2)实验内容 (3)源程序清单
(4)运行结果及分析结论
5、上机过程中严格遵守实验室纪律,养成良好的上机习惯。
第二部分 实验内容
3
实验1 java集合框架
一、实验目的
1、掌握java集合框架的层次体系结构
2、掌握规则集、线性表、队列等集合的相关知识。 3、了解java集合里面各种方法的相关算法,为数据结构后面的章节打好基础。
二、实验内容 1、程序验证题。
(1)输入如下程序,观察输出结果。 class TestLinkedHashSet { public public static void main(String [] args){ Set
(2)输入如下程序,观察输出结果。 public class TestHashSet { public static void main(String[] args){ Set
(1)输出下面程序的运行结果。 public class TestTreeSet { public static void main(String []args){ Set
(1)————————
(2)输出下面程序的运行结果。
5
public class Person
protected T t;
public Person(T t){
this.t = t;
}
public String toString(){
return \参数的类型是:\
}
}
public class GenericTest
public static void main(String[] args){
————————————
————————————
}
(2)如下代码,怎么填才能使其正确 ArrayList dates___=new ArrayList___(); dates.add(new Date);
Date date = dates.get(0) ; 三、根据下面的要求编写程序
(1)设计一个泛型堆栈类GenericStack,并编写一个测试程序。 (2)使用泛型二分查找法实现下面的方法。
Public static
(3)实现下面的方法,返回数组中的最大元素
Public static
四、实验结果
写实验报告。内容包括:
1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。
五、选做题目
11
(1)使用泛型选择排序法实现下面的方法
Public static
Public static
(3)编写一个泛型方法返回二维数组的最大元素
Public static
一、实验目的
实验4 注解
12
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());
public class Server { public static void main(String[] args) throws Exception{ ServerSocket server = new ServerSocket(888); ———————————— InputStreamReader reader = new InputStreamReader(socket.getInputStream()); BufferedReader buffer_reader=new BufferedReader(reader); PrintWriter writer=new PrintWriter(socket.getOutputStream()); String request = buffer_reader.readLine(); System.out.println(\ String line=\ writer.println(line); writer.flush(); writer.close(); buffer_reader.close(); 服务端 ———————— server.close(); } } 三、根据下面要求编写程序
1. 请分别采用TCP、UDP协议编程实现一对一的文件上传。
2. 编写一对多的聊天程序,程序由服务器和客户端两部分构成,两部分的
交互方式如下:
17
a. 客户端发送命令:
b. 客户端发送命令:
c. 客户端发送命令:
d. 服务器向指定客户端发送命令:
e. 客户端发送命令:
程序可以采用GUI,也可采用命令行的方式。
四、实验结果
写实验报告。内容包括:
1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。
五、选做习题
(1)请分别采用TCP、UDP协议编程实现一对多的文件上传。
(2)请编写程序把页面:http://www.w3.org/Consortium/Member/List中的 “Current Members”的名称抽取出来,存入文本文件中。(也可以下载任意指定页面,并抽取相关的内容)
18
(3)模仿QQ,设计实现一个聊天工具。
一、实验目的
1、理解线程概念和定义。
实验6 多线程
19
2、掌握创建、管理和控制Java线程对象的方法,包括创建Java 线程对象、 改 变线程状态、设置线程优先级以控制线程调度等方法。
3、了解并执行的多线程间存在的各种不同关系,掌握实现线程互斥和线程同步的方法。
二、实验内容
1、程序验证
(1)输入以下程序,观察输出结果。
class MyThread extends Thread{ public int x = 0; public void run(){ System.out.println(++x); } } class R implements Runnable{ private int x = 0; public void run(){ System.out.println(++x); } } public class Test { public static void main(String[] args) throws Exception{ for(int i=0;i<10;i++){ Thread t = new MyThread(); t.start(); } Thread.sleep(10000); R r = new R(); for(int i=0;i<10;i++){ Thread t = new Thread(r); t.start(); } } }
(2)输入如下程序,观察输出结果。
ublic class ThreadDemo { (3) public static void main(String[] args) { Thread t = new TestThread(); // t.setDaemon(true); t.start(); 20 int i=0; while(true) { System.out.println(\
2、程序填空题。 class C6 implements Runnable{ public void run() { for(int a=3;a<=10;a++){ if(isPrime(a)) System.out.print(a+\); } } public boolean isPrime(int n){ boolean b=true; for(int i=2;i (1)输出上面程序的运行结果 ———————————— (2) 在下列程序的横线处填入正确的语句。 public class Test { public static void main(String args[]) { Thread t1 = new subTread(\); Thread t2 = new subTread(\); t1.start(); t2.start(); } } class subTread extends Thread { public subTread(String s) { } public void run() { System.out.println(\ + getName()); try { sleep((int) (Math.random() * 1000)); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(\结束!\ + getName()); } } 三、按照要求编写程序 1、编写基于多线程的素数(是除了自身和1以外,没有其它素数因子的自然数)判定程序。待判定的整数经过键盘录入后存放在一个列表中,创建10个线程从列表中取出整数进行判定,判定的结果存入到另一个列表中,用户可以通过键盘查询判定的结果。 2、编写基于多线程的素数(是除了自身和1以外,没有其它素数因子的自然 22 数)判定程序。待判定的整数经过键盘录入后存放在一个列表中,创建10个线程从列表中取出整数进行判定,判定的结果存入到另一个列表中,用户可以通过键盘查询判定的结果。 3、应用继承类Thread的方法实现多线程类,该线程3次休眠若干(随机)毫秒后显示线程名和第几次执行。 4、请通过实现Runnable接口和继承Thread类分别创建线程,要求:除了main线程之外,还要创建一个新的线程。Main线程重复100次“main“,新线程重复100次输出“new”。 四、实验结果 写实验报告。内容包括: 1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。 五、选做题目 1、编写一个多线程类,该类的构造方法调用Thread类带字符串参数的构造方法。建立自己的线程名,然后随机生成一个休眠时间,再将自己的线程名和休眠多长时间显示出来。该线程运行后,休眠一段时间,该时间就是在构造方法中生成的时间。最后编写一个测试类,创建多个不同名字的线程,并测试其运行情况。 2、编写一个程序,测试异常。该类提供一个输入整数的方法,使用这个方法先输入两个整数,再用第一个整数除以第二个整数,当第二个整数为0时,抛出异常,此时程序要捕获异常。 3、.编写一个用线程实现一个数字时钟的应用程序。该线程类要采用休眠的方式,把绝对大部分时间让系统使用。 4、编写一个使用继承Thread类的方法实现多线程的程序。该类有两个属性,一个字符串代表线程名,一个整数代表该线程要休眠的时间。线程执行时,显示线程名和休眠时间。 实验7 序列化 一、实验目的 1、了解什么是序列化以及序列化的相关概念。 2、掌握序列化流程和如何对程序进行序列化、 23 3、学习如何自定义序列化。 4、掌握XML和Jason的相关概念。 二、实验内容 1、程序验证 (1)输入如下程序,观察输出结果。 Public class Person implements Serializable{ Private static final long serialVersionUID = 1L; Private String name =\ Private Integer age = 15; Public string getName(){ return this.name; } } Public class SerializeTool{ Public static void serialize(Object obj,String fileName)throws Exception{ File file = new File(\ FileOutputStream output = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream (output); oos.writeObject(obj); oos.flush; oos.close(); output.close(); } } (2)输出如下程序,观察输出结果 Public class Person implements Serializable{ Private static final long serialVrsionUID = 1L; Private String name =\ Private Integer age = 15; Public string getName(){ return this.name; } } Public class SerializeTool{ 24 三、根据下面要求编写程序 (1)请编写程序把任意对象序列化成XML文件,如果属性不是基本数据类型,则需要序列化相关联的属性,XML的格式如下例所示: 提示:采用反射 (2)请把第一题序列化的XML反序列化为Java对象。 25 (3)编写一对多的聊天程序,程序由服务器和客户端两部分构成,服务器和客户端通过对象传送实现消息传递,两部分的交互方式如下: a. 客户端发送命令: b. 客户端发送命令: c. 客户端发送命令: d. 服务器向指定客户端发送命令: e. 客户端发送命令: 以上命令所对应的对象如下图所示。 Command-sendDateRegister-name : stringResult-command : Command-state : stringLogin-name : stringMessage-from : string-to : string-message : stringLogout-name : string 26 a. 请采用Java本身的序列化方法序列化命令对象; b. 请采用XML序列化命令对象; c.请采用Json序列化命令对象。 程序可以采用GUI,也可采用命令行的方式。 四、实验结果 写实验报告。内容包括: 1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。 五、选做题目 1. 请编写远程方法调用程序,程序分为客户端和服务器端,客户端负责接 受用户输入的命令,服务器端负责接收命令、并执行命令。例如:用户通过客户端输入: ddd.lis.StudentManager.saveStudent({name:”xu”,age:20}) (ddd.lis是包名,StudentManager是服务器端的一个类名,saveStudent是其方法,{name:”xu”,age:20}是JSON格式)。 服务器端接收到命令,通过反射创建StudentManager对象,并检索到方法 saveStudent,根据方法saveStudent的参数类型把 {name:”xu”,age:20}转换成对应的类型,然后通过反射执行方法saveStudent,把执行的结果返回给客户端,客户端显示返回的结果。 实验8 WEB 服务器开发 一、实验目的 1、了解tomcat整体架构以及基本工作原理。 2、了解tomcat连接器的代码架构。 3、学习编写一个简易的tomcat。 二、实验内容 27 1、程序验证题。 (1)输入以下程序,在浏览器输入http://localhost:8010/观察输出结果。 public class Server { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(8010); Socket socket = server.accept(); InputStream in = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); PrintWriter pw = new PrintWriter(socket.getOutputStream()); char[] buffer = new char[1024]; int len = br.read(buffer); StringBuffer reqStr = new StringBuffer(); for(int i=0; i 注意:要先运行 Server类,后运行Client。 2、程序填空题。 (1)要为服务器8010端口注册一个侦听器。请根据下面给出的程序补全程序。 public class Server{ public static void main(String[] args) throws Exception{ —————————— —————————— BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(br.readLine()); socket.close(); } } (2)要为IP为127.0.1的客户端Client的8010端口创建一个Socket。请跟据下面给出的部分程序,补全程序。 public class Client { public static void main(String[] args) throws Exception{ —————————————— PrintWriter pw = new PrintWriter(socket.getOutputStream(),true); pw.write(\ pw.flush(); socket.close(); } } 三、根据下面要求,编写程序。 1、仔细阅读下面程序,画出程序的UML图。 public class Server { public static String WEBROOT = System.getProperty(\ public static String SHUTDOWN = \ private boolean live = true; /** 29 * 服务启动方法 * @throws Exception */ public class Request { private String title; //请求头 private String header; //请求体 private String body;//请求方法 private String method;//请求目的地址 private String uri;//请求使用的协议名称和版本 private String protocol;//请求消息的参数集合 private Map protected void parse(){ if(this.requestStr.length() > 0){ int index = this.requestStr.indexOf(\ this.title = this.requestStr.substring(0,index); String context = this.requestStr.substring(index + 1); String[] elements = context.split(\ if(elements.length==1){ this.header = elements[0]; }else if(elements.length == 2){ this.header = elements[0]; 31 this.body = elements[1]; } this.parseTitle();//解析请求头 String[] param = element.split(\ if(param.length > 1){ //将请求数据放入请求参数集合中 this.addParam(param[0], param[1]); } } } } 32 public void addParam(String name, String value){ this.params.put(name, value); } public class Response { private OutputStream out; private Request request; public Response(Request request, OutputStream out){ this.request = request; this.out = out; } /** * 响应请求时执行的方法。该方法以请求的URI指定的文件内容作为响应 * @throws Exception */ public void invoke() throws Exception { String path = request.getUri(); if(path != null && path.length() > 0){ String url = Server.WEBROOT + path; System.out.println(url); File file = new File(url); if(!file.exists()){ file = new File(Server.WEBROOT + \33 } this.report(file); } } public class BootStrap { public static void main(String[] args) throws Exception{ Server server = new Server(); server.start(); } } (2)仔细阅读老师给的简化版Tomcat,画出其项目构架图。 四、实验结果 写实验报告。内容包括: 1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。 34 五、选做题目 (1)编写运行一个简化的Tomcat服务器。 35
正在阅读:
高级java实验指导书(1)03-14
补办入团申请书03-31
关于激发学生学习兴趣的探讨08-15
小学科学实验操作考核试题及评分表01-03
美丽的小花园作文300字06-23
数据结构全部上机实验及答案 - 图文04-26
企业性质的演化经济学解释_基于对正统经济学解释基础的批判05-07
辽宁石油化工大学分析化学试题01-22
枇杷膏的作用与功效02-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 高级
- 实验
- java