javaweb如何将文件保存到服务器的指定目录
可以把文件目录配置在webxml文件的初始化参数中, 通过ServletAPI读取文件目录
比如
定义一个Properties文件保存相关配置
#可以上传文件的后缀名
extensions=pptx,docxdoc,txt,jpg,jar
#单个文件的大小1M
fileMaxSize=1048576
#总共上传文件大小5M
totalFileMaxSize=5242880
#文件保存路径
filePath=z:/temp
#临时文件路径
tempDir=z:/temp/temp
使用Listener在服务器启动时加载配置信息
ServletContext context = eventgetServletContext();InputStream inputStream = context
getResourceAsStream("/WEB-INF/classes/file/upload/commons/uploadConfigproperties");
Properties properties = new Properties();
try {
propertiesload(inputStream);
contextsetAttribute("fileConfig", properties);
Systemoutprintln("properties = " + propertiessize());
} catch (IOException e) {
eprintStackTrace();
}
在你上传文件时通过配置文件读取路径保存
String filePath = ((Properties) thisgetServletContext()getAttribute("fileConfig"))
getProperty(FileUploadConstantsFILE_PATH);
Java8种值得学习优秀技能
1 Git
Git 是 Java 开发人员需要掌握的基础工具之一,每一位 Java 从业者都应该学会用它。Git 使用一套版本控制系统来管理各种项目集合。这是一个完全免费的开源系统,专注干非线性工作流、完整性和速度。分布式扩展:存储库可用来创建开发历史的副本。链接方法: Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
分布式扩展: 存储库可用来创建开发历史的副本。链接方法:Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
2Selenium
Java 中的 Selenium Web 驱动程序是 Java 开发人员在 2021 年应该了解的重要技术之一。
Selenium 提供了使用测试框架测试 Web 应用程序的一组工具; Selenium Web 驱动提供了一个开源API。它包括了用于 Web 应用程序的一些自动化特性。Selenium 的关键元素包括:
IDE(集成开发环境)
远程控制 /Selenium10
Web 控制器 /Selenium20/30
Selenium网格
3Jenkins
Jenkins 是源自 JAVA 编程的技术,其开源自动化的持续交付和集成可以自动化软件开发流程,支持多种版本控制工具。
Jenkins的插件可与另一种语言编写的代码集成。以下是你应该选择 Jenkins 的三大原因: 它提供了比其他软件更好的质量;其自动化系统可以管理集成;Jenkins的开发速度要快得多。
4用户友好的 Web 服务
REST 的全称是Representative Translation ofState(表述性状态转移),它代表了一种架构风格,是Java 开发人员必须掌握的知识。它提升了 Web 服务性能,还定义了可伸缩性和性能约束。这是 2022年Java 开发人员最理想的选项之一。
它的可重建 API用于 Web 服务开发中的通信需求。如果你了解 HTML、CSS 等,那么你将从RESTfulWeb 服务中获益匪浅。以下是 RESTful 服务的特性:
基干客户端 - 服务器的架构提供了服务器的管理、部署和托管等特性,还可以帮助用户使用服务和资源。它本质上是一种共享资源的共享计算模型。
5 Spring security
它的主要功能是应用程序身份验证。其 J2EE servlet规范和 EJB规范是JAVA 开发人员常用的两个关键安全特性。
Spring Security 支持多种身份验证模型,并与HTTP、Kerberos、JOSSO、CAS、LDAP 等技术集成。Spring Security 与 Java 深度关联,强烈建议Java 开发人员学习它。
6SpringBoot2
Spring Boot 发布了一个名为 Spring Boot 2的新版本。其中 Spring 框架负责控制,Spring Boot 负责生成具有常规配置的独立解决方案。
它主要依赖JAVA Baseline、BOM 材质和 cradle插件,其自动配置可提供安全性和响应性。它还提供了技术支持并改善了开发体验。它是 JAVA 程序员应了解的基本工具之一,其关键特性包括:
直接部署 Undertow、Jetty 或 Tomcat
减少构建配置,提供依赖项
在 Spring 中创建独立的应用程序
7Angular 或响应式 JS
ReactJS 是一个专门用于 UI开发的 JavaScript库,而 Angular 是一个框架。JAVA 开发人员应该很熟悉这两大关键技术了。微信搜索readdot,关注后回复编程资源,领取各种经典学习资料
Angular 2是开源 We 应用程序框架,Angular 的主要特性包括指令、范围、模板、注解、高级依赖项注入和子路由器: ReactJS 用于开发移动应用程序。ReactJS的主要特性包括与服务器的免费开源侧通信功能等。
8ApacheSpark 和 Kafka
Apache Spark 和 Kafka 是2021年Java开发人员一定要掌握的两项技术;它们在 2018 年底已发布稳定版本。Apache Spark 是用于集群计算的框架已开源。
Spark 提供了用于执行基本 1/0、调度和分派等任务的应用程序接口,并提供了同样开源的流处理平台。特别要提的是 Apache Kafka 代码是 Java 和 Scala 编写的。
Kafka 可以使用一些基本 API,例如 Producer APIConsumer APl、Connector API 和 Stream APl。
第1章 Java语言概述 1
实例001 输出“Hello World” 2
实例002 输出控制台传递的参数 2
实例003 输出由“”组成的三角形 3
实例004 输出符号表情 5
第2章 Eclipse开发工具 6
实例005 下载并运行Eclipse工具 7
实例006 为Eclipse安装汉化包 8
实例007 使用Eclipse注释代码 10
实例008 使用Eclipse格式化代码 11
实例009 安装WindowBuilder插件 12
实例010 开发计算器界面 14
第3章 Java语言基础 15
实例011 输出错误信息与调试信息 16
实例012 从控制台接收输入字符 16
实例013 重定向输出流实现程序日志 17
实例014 自动类型转换与强制类型转换 19
实例015 加密可以这样简单(位运算) 20
实例016 用三元运算符判断奇数和偶数 21
实例017 不用乘法运算符实现2×16 22
实例018 实现两个变量的互换
(不借助第3个变量) 23
第4章 流程控制 25
实例019 判断某一年是否为闰年 26
实例020 验证登录信息的合法性 27
实例021 为新员工分配部门 28
实例022 用switch语句根据消费
金额计算折扣 29
实例023 判断用户输入月份的季节 31
实例024 使用while循环语句与自增
运算符循环遍历数组 33
实例025 使用for循环输出杨辉三角形 34
实例026 使用嵌套循环在控制台上
输出九九乘法表 35
实例027 使用while循环计算1+
1/2!+1/3!…1/20! 36
实例028 使用for循环输出空心的菱形 38
实例029 终止循环体 39
实例030 循环体的过滤器 41
第5章 数组及其常用操作 43
实例031 获取一维数组的最小值 44
实例032 将二维数组中的行列互换 45
实例033 利用数组随机抽取幸运观众 47
实例034 用数组设置JTable表格的
列名与列宽 49
实例035 使用按钮控件数组实现
计算器界面 51
实例036 通过复选框控件数组实现
添加多个复选框控件 52
实例037 使用选择排序法对数组排序 53
实例038 使用冒泡排序法对数组排序 55
实例039 使用快速排序法对数组排序 57
实例040 使用直接插入法对数组排序 59
实例041 使用sort()方法对数组排序 61
实例042 反转数组中元素的顺序 63
第6章 面向对象入门 65
实例043 自定义图书类 66
实例044 温度单位转换工具 67
实例045 成员变量的默认初始化值 68
实例046 单例模式的应用 69
实例047 汉诺塔问题求解 70
实例048 编写同名的方法 71
实例049 构造方法的应用 72
实例050 统计图书的销售量 73
实例051 两只完全相同的宠物 74
实例052 重新计算对象的哈希码 76
实例053 使用字符串输出对象 77
实例054 Java对象的假克隆 78
实例055 Java对象的浅克隆 80
实例056 Java对象的深克隆 82
实例057 序列化与对象克隆 84
实例058 深克隆效率的比较 87
第7章 面向对象进阶 89
实例059 经理与员工的差异 90
实例060 重写父类中的方法 92
实例061 计算几何图形的面积 93
实例062 简单的汽车销售商场 95
实例063 使用Comparable接口自定
义排序 96
实例064 策略模式的简单应用 98
实例065 适配器模式的简单应用 100
实例066 普通内部类的简单应用 102
实例067 局部内部类的简单应用 103
实例068 匿名内部类的简单应用 104
实例069 静态内部类的简单应用 105
实例070 实例化Class类的几种方式 107
实例071 查看类的声明 108
实例072 查看类的成员 110
实例073 查看内部类信息 112
实例074 动态设置类的私有域 113
实例075 动态调用类中方法 115
实例076 动态实例化类 116
实例077 创建长度可变的数组 117
实例078 利用反射重写toString()方法 119
第8章 字符串与包装类 121
实例079 将数字格式化为货币字符串 122
实例080 货币金额大写格式 123
实例081 String类格式化当前日期 125
实例082 字符串大小写转换 126
实例083 字符与Unicode码的转换 128
实例084 判断用户名是否正确 129
实例085 用户名排序 130
实例086 判断网页请求与FTP请求 132
实例087 判断文件类型 133
实例088 判断字符串是否为数字 135
实例089 验证IP地址的有效性 136
实例090 鉴别非法电话号码 137
实例091 将字符串转换成整数 139
实例092 整数进制转换器 140
实例093 获取字符串中汉字的个数 141
实例094 批量替换某一类字符串 142
实例095 查看数字的取值范围 144
实例096 ASCII编码查看器 145
实例097 判断手机号的合法性 146
实例098 用字符串构建器追加字符 147
实例099 去掉字符串中的所有空格 148
实例100 Double类型的比较 149
第9章 Java集合类框架 151
范例101 用动态数组保存学生姓名 152
实例102 用List集合传递学生信息 153
实例103 Map集合二级联动 155
实例104 不重复随机数组排序 157
实例105 for循环遍历ArrayList 159
实例106 Iterator遍历ArrayList 159
实例107 ListIterator逆序遍历ArrayList 160
实例108 制作电子词典 161
实例109 制作手机电话簿 162
第10章 常用数学工具类 164
实例110 角度和弧度的转换 165
实例111 三角函数的使用 166
实例112 反三角函数的使用 167
实例113 双曲函数的使用 168
实例114 指数与对数运算 169
实例115 高精度整数运算 170
实例116 高精度浮点运算 171
实例117 七星彩号码生成器 173
实例118 大乐透号码生成器 174
第11章 错误处理 177
实例119 算数异常 178
实例120 数组下标越界异常 179
实例121 空指针异常 180
实例122 类未发现异常 181
实例123 非法访问异常 182
实例124 文件未发现异常 183
实例125 数据库操作异常 184
实例126 方法中抛出异常 185
实例127 方法上抛出异常 186
实例128 自定义异常类 187
实例129 捕获单个异常 188
实例130 捕获多个异常 189
第12章 输入/输出 191
实例131 显示指定类型的文件 192
实例132 以树结构显示文件路径 193
实例133 查找替换文本文件内容 194
实例134 设置Windows系统的文件
属性 195
实例135 文件批量重命名 196
实例136 快速批量移动文件 197
实例137 删除文件夹中的tmp文件 198
实例138 将文件保存到数据库 199
实例139 从数据库读取文件 200
实例140 窗体动态加载磁盘文件 201
实例141 删除文件夹中所有文件 202
实例142 创建磁盘索引文件 208
实例143 控制台记录器 205
实例144 防止创建多个字符串对象 206
实例145 合并多个文本文件 207
实例146 对大文件实现分割处理 208
实例147 将分割后的文件重新合并 209
实例148 读取属性文件单个属性值 210
实例149 向属性文件中添加信息 211
实例150 在复制文件时使用进度条 212
实例151 从XML文件中读取数据 213
实例152 读取Jar文件属性 214
实例153 电子通讯录 215
实例154 批量复制指定扩展名文件 217
实例155 分类保存文件 218
实例156 搜索指定文件夹中的文件 219
实例157 实现文件锁定功能 220
实例158 简单的投票软件 221
实例159 压缩所有文本文件 222
实例160 将压缩包解压到指定文件夹 223
实例161 压缩所有子文件夹 225
实例162 深层文件夹压缩包的释放 226
实例163 解决压缩包中文乱码 227
实例164 Apache实现文件解压缩 228
实例165 把窗体压缩成ZIP文件 229
实例166 解压缩Java对象 230
实例167 文件压缩为RAR文档 231
实例168 解压缩RAR压缩包 233
实例169 为RAR压缩包添加注释 234
实例170 获取压缩包详细文件列表 235
实例171 从RAR压缩包中删除文件 237
实例172 在压缩文件中查找字符串 238
实例173 重命名RAR压缩包中文件 239
实例174 创建自解压RAR压缩包 240
第13章 枚举类型与泛型 242
实例175 查看枚举类型的定义 243
实例176 枚举类型的基本特性 244
实例177 增加枚举元素的信息 245
实例178 选择合适的枚举元素 246
实例179 高效的枚举元素集合 248
实例180 高效的枚举元素映射 249
实例181 使用枚举接口遍历元素 250
实例182 使用泛型实现栈结构 251
实例183 自定义泛型化数组类 253
实例184 泛型方法与数据查询 254
实例185 使用通配符增强泛型 256
实例186 泛型化的折半查找法 257
第14章 Swing入门 259
实例187 从上次关闭位置启动窗体 260
实例188 始终在桌面最顶层显示窗体 261
实例189 设置窗体大小 262
实例190 根据桌面大小调整窗体大小 263
实例191 自定义最大化、最小化和
关闭按钮 265
实例192 禁止改变窗体的大小 267
实例193 指定窗体标题栏图标 267
实例194 设置闪烁的标题栏 269
实例195 实现带背景的窗体 270
实例196 背景为渐变色的主界面 271
实例197 随机更换窗体背景 273
实例198 椭圆形窗体界面 275
实例199 钻石形窗体 276
实例200 创建透明窗体 277
实例201 信息提示对话框 278
实例202 设置信息提示对话框的图标 279
实例203 指定打开对话框的文件类型 280
实例204 为保存对话框设置默认文件名 282
实例205 支持预览的文件选
择对话框 283
实例206 颜色选择对话框 285
实例207 信息输入对话框 286
实例208 定制信息对话框 287
实例209 拦截事件的玻璃窗格 289
实例210 简单的每日提示信息 290
实例211 震动效果的提示信息 292
实例212 制作圆形布局管理器 293
实例213 制作阶梯布局管理器 295
实例214 密码域控件简单应用 296
实例215 文本域设置背景 297
实例216 文本区设置背景 298
实例217 简单的字符统计工具 299
实例218 能预览的复选框 300
实例219 简单的投票计数软件 301
实例220 单选按钮的简单应用 302
实例221 能显示的组合框 303
实例222 使用滑块来选择日期 305
实例223 模仿记事本的菜单栏 308
实例224 自定义纵向的菜单栏 309
实例225 复选框与单选按钮菜单项 311
实例226 包含的弹出菜单 312
实例227 工具栏的实现与应用 314
实例228 修改列表项显示方式 315
实例229 列表项与提示信息 316
实例230 表头与列的高度设置 317
实例231 调整表格各列的宽度 319
实例232 设置表格的选择模式 321
实例233 为表头增添提示信息 323
实例234 单元格的粗粒度排序 325
实例235 实现表格的查找功能 326
实例236 应用网格布局设计计算
器窗体 327
第15章 多线程 329
实例237 查看线程的运行状态 330
实例238 查看JVM中的线程名 331
实例239 查看和修改线程优先级 333
实例240 休眠当前线程 335
实例241 终止指定线程 336
实例242 线程的插队运行 337
实例243 使用方法实现线程同步 339
实例244 使用特殊域变量实现线程同步 341
实例245 简单的线程通信 342
实例246 新建有返回值的线程 344
实例247 使用线程池优化多线程编程 346
实例248 哲学家的就餐问题 348
第16章 网络通信 350
实例249 获得内网的所有IP地址 351
实例250 获取网络资源的大小 352
实例251 解析网页中的内容 354
实例252 网络资源的单线程下载 355
实例253 网络资源的多线程下载 357
实例254 下载网络资源的断点续传 359
实例255 建立服务器套接字 362
实例256 建立客户端套接字 363
实例257 设置等待连接的超时时间 364
实例258 获得Socket信息 365
实例259 接收和发送Socket信息 367
实例260 关闭Socket缓冲 369
实例261 使用Socket通信 371
实例262 防止Socket传递汉字乱码 375
实例263 使用Socket传递对象 377
实例264 使用Socket传输 379
实例265 使用Socket传输音频 381
实例266 使用Socket传输视频 384
实例267 一个服务器与一个客户端
通信 385
实例268 一个服务器与多个客户端
通信 387
实例269 客户端一对多通信 389
实例270 客户端一对一通信 391
实例271 基于Socket的数据库编程 393
实例272 使用Proxy创建代理服务器 396
实例273 使用ProxySelector选择
代理服务器 397
实例274 聊天室服务器端 399
实例275 聊天室客户端 401
第17章 数据库操作 405
实例276 JDBC连接MySQL数据库 406
实例277 连接SQL Server 2005数据库 407
实例278 JDBC连接Oracle数据库 408
实例279 获取SQL Server指定数据
库中的数据表信息 409
实例280 获取MySQL指定数据库
中的数据表名称 411
实例281 查看数据表结构 412
实例282 动态维护投票数据库 414
实例283 SQL Server数据备份 416
实例284 SQL Server数据恢复 419
实例285 MySQL数据备份 422
实例286 MySQL数据恢复 424
实例287 动态附加数据库 425
实例288 生成SQL数据库脚本 426
实例289 表中字段的描述信息 429
实例290 将员工信息添加到数据表 430
实例291 添加数据时使用数据验证 431
实例292 插入用户登录日志信息 432
实例293 生成有规律的编号 433
实例294 生成无规律的编号 435
实例295 插入数据时过滤危险字符 436
实例296 复选框保存到数据库 437
实例297 把数据复制到另一张表中 438
实例298 批量插入数据 439
实例299 更新指定记录 440
实例300 在删除数据时给出提示信息 442
使用File类中方法就可以实现
File[] listFiles() 返回目录下所有的文件
File file=new File("你的ftp的根路径");
File files[]=filelistFiles();
for(int i=0;i<fileslength;i++){
Systemoutprintln(files[i]getName() );
}
如果要获取所有的文件和文件夹可以使用String[] list()方法。返回的是String类型的数组,其中所有文件和文件夹的相对路径表示。
补充---
如果那样的话那么就需要在你的ftp服务器上做一个socket服务端,你通过一个客户端连接上去。然后服务器端将获取的文件列表数组传递给你,就可以了。如果想直接获取别人的机器的文件列表是很难的,基本上是不可能的,当然是出于安全的考虑
文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。
java中文件上传到服务器的指定路径的代码:
在前台界面中输入:
<form method="post" enctype="multipart/form-data" action="/manage/excelImportdo">
请选文件:<input type="file" name="excelFile">
<input type="submit" value="导入" onclick="return impExcel();"/>
</form>
action中获取前台传来数据并保存
/
excel 导入文件
@return
@throws IOException
/
@RequestMapping("/usermanager/excelImportdo")
public String excelImport(
String filePath,
MultipartFile excelFile,HttpServletRequest request) throws IOException{
loginfo("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
if (excelFile != null){
String filename=excelFilegetOriginalFilename();
String a=requestgetRealPath("u/cms/www/201509");
SaveFileFromInputStream(excelFilegetInputStream(),requestgetRealPath("u/cms/www/201509"),filename);//保存到服务器的路径
}
loginfo("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );
return "";
}
/
将MultipartFile转化为file并保存到服务器上的某地
/
public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
Systemoutprintln("------------"+path + "/"+ savefile);
byte[] buffer =new byte[10241024];
int bytesum = 0;
int byteread = 0;
while ((byteread=streamread(buffer))!=-1)
{
bytesum+=byteread;
fswrite(buffer,0,byteread);
fsflush();
}
fsclose();
streamclose();
}
第1章 Java网络编程入门 1
11 进程之间的通信 1
12 计算机网络的概念 3
13 OSI参考模型 5
14 TCP/IP参考模型和TCP/IP协议 8
141 IP协议 11
142 TCP协议及端口 14
143 RFC简介 15
144 客户/服务器通信模式 16
15 用Java编写客户/服务器程序 17
151 创建EchoServer 18
152 创建EchoClient 20
16 小结 22
17 练习题 23
第2章 Socket用法详解 25
21 构造Socket 25
211 设定等待建立连接的超时时间 26
212 设定服务器的地址 26
213 设定客户端的地址 27
214 客户连接服务器时可能抛出的异常 27
22 获取Socket的信息 30
23 关闭Socket 32
24 半关闭Socket 33
25 设置Socket的选项 38
251 TCP_NODELAY选项 38
252 SO_RESUSEADDR选项 38
253 SO_TIMEOUT选项 39
254 SO_LINGER选项 42
255 SO_RCVBUF选项 44
256 SO_SNDBUF选项 45
257 SO_KEEPALIVE选项 45
258 OOBINLINE选项 45
259 服务类型选项 45
2510 设定连接时间、延迟和带宽的相对重要性 46
26 发送邮件的SMTP客户程序 47
27 小结 51
28 练习题 52
第3章 ServerSocket用法详解 55
31 构造ServerSocket 55
311 绑定端口 55
312 设定客户连接请求队列的长度 56
313 设定绑定的IP地址 58
314 默认构造方法的作用 58
32 接收和关闭与客户的连接 59
33 关闭ServerSocket 60
34 获取ServerSocket的信息 60
35 ServerSocket选项 62
351 SO_TIMEOUT选项 62
352 SO_REUSEADDR选项 63
353 SO_RCVBUF选项 64
354 设定连接时间、延迟和带宽的相对重要性 64
36 创建多线程的服务器 65
361 为每个客户分配一个线程 65
362 创建线程池 67
363 使用JDK类库提供的线程池 72
364 使用线程池的注意事项 74
37 关闭服务器 76
38 小结 80
39 练习题 81
第4章 非阻塞通信 83
41 线程阻塞的概念 83
411 线程阻塞的原因 83
412 服务器程序用多线程处理阻塞通信的局限 84
413 非阻塞通信的基本思想 85
42 javanio包中的主要类 87
421 缓冲区Buffer 88
422 字符编码Charset 90
423 通道Channel 90
424 SelectableChannel类 92
425 ServerSocketChannel类 93
426 SocketChannel类 93
427 Selector类 96
428 SelectionKey类 97
43 服务器编程范例 100
431 创建阻塞的EchoServer 100
432 创建非阻塞的EchoServer 103
433 在EchoServer中混合用阻塞模式与非阻塞模式 110
44 客户端编程范例 114
441 创建阻塞的EchoClient 114
442 创建非阻塞的EchoClient 116
443 创建非阻塞的PingClient 120
45 小结 126
46 练习题 127
第5章 创建非阻塞的HTTP服务器 129
51 HTTP协议简介 129
511 HTTP请求格式 129
512 HTTP响应格式 132
513 测试HTTP请求 133
52 创建非阻塞的HTTP服务器 137
521 服务器主程序:
HttpServer类 137
522 具有自动增长的缓冲区的ChannelIO类 138
523 负责处理各种事件的
Handler接口 140
524 负责处理接收连接就绪
事件的AcceptHandler类 140
525 负责接收HTTP请求和发送HTTP响应的RequestHandler类 141
526 代表HTTP请求的Request类 143
527 代表HTTP响应的Response类 145
528 代表响应正文的Content接口及其实现类 147
529 运行HTTP服务器 149
53 小结 150
54 练习题 151
第6章 客户端协议处理框架 153
61 客户端协议处理框架的主要类 153
62 在客户程序中运用协议处理框架 154
621 URL类的用法 154
622 URLConnection类的用法 156
63 实现协议处理框架 160
631 创建EchoURLConnection类 161
632 创建EchoURLStreamHandler及工厂类 162
633 创建EchoContentHandler类及工厂类 163
634 在EchoClient类中运用ECHO协议处理框架 165
64 小结 166
65 练习题 167
第7章 用Swing组件展示HTML文档 169
71 在按钮等组件上展示HTML文档 170
72 用JEditorPane组件创建简单的浏览器 171
73 小结 179
74 练习题 179
第8章 基于UDP的
数据报和套接字 181
81 UDP协议简介 181
82 DatagramPacket类 184
821 选择数据报的大小 185
822 读取和设置DatagramPacket的属性 185
823 数据格式的转换 186
824 重用DatagramPacket 187
83 DatagramSocket类 189
831 构造DatagramSocket 189
832 接收和发送数据报 190
833 管理连接 190
834 关闭DatagramSocket 191
835 DatagramSocket的选项 191
836 IP服务类型选项 193
84 DatagramChannel类 193
841 创建DatagramChannel 194
842 管理连接 194
843 用send()方法发送数据报 194
844 用receive()方法接收数据报 195
845 用write()方法发送数据报 198
846 用read()方法接收数据报 199
85 组播Socket 202
851 MulticastSocket类 205
852 组播Socket的范例 207
86 小结 209
87 练习题 210
第9章 对象的序列化与反序列化 213
91 JDK类库中的序列化API 213
92 实现Serializable接口 218
921 序列化对象图 220
922 控制序列化的行为 222
923 readResolve()方法在单例类中的运用 229
93 实现Externalizable接口 231
94 可序列化类的不同版本的序列化兼容性 233
95 小结 235
96 练习题 236
第10章 Java语言的反射机制 239
101 Java Reflection API简介 239
102 在远程方法调用中运用反射机制 244
103 代理模式 248
1031 静态代理类 248
1032 动态代理类 250
1033 在远程方法调用中
运用代理类 253
104 小结 258
105 练习题 259
第11章 RMI框架 261
111 RMI的基本原理 262
112 创建第一个RMI应用 264
1121 创建远程接口 264
1122 创建远程类 265
1123 创建服务器程序 267
1124 创建客户程序 269
1125 运行RMI应用 270
113 远程对象工厂设计模式 272
114 远程方法中的参数与返回值传递 277
115 回调客户端的远程对象 281
116 远程对象的并发访问 286
117 分布式垃圾收集 289
118 远程对象的equals()、hashCode()和clone()方法 294
119 使用安全管理器 294
1110 RMI应用的部署及类的动态加载 295
1111 远程激活 297
1112 小结 303
1113 练习题 304
第12章 通过JDBC API访问数据库 305
121 JDBC的实现原理 306
122 安装和配置MySQL数据库 308
123 JDBC API简介 310
124 JDBC API的基本用法 314
1241 处理字符编码的转换 317
1242 把连接数据库的各种属性放在配置文件中 318
1243 管理Connection、Statement和ResultSet对象的生命周期 321
1244 执行SQL脚本文件 326
1245 处理SQLException 328
1246 输出JDBC日志 329
1247 获得新插入记录的主键值 329
1248 设置批量抓取属性 330
1249 检测驱动器使用的JDBC版本 330
12410 元数据 331
125 可滚动及可更新的结果集 333
126 行集 339
127 调用存储过程 346
128 处理Blob和Clob类型数据 347
129 控制事务 351
1291 事务的概念 351
1292 声明事务边界的概念 353
1293 在mysqlexe程序中声明事务 354
1294 通过JDBC API声明事务边界 356
1295 保存点 357
1296 批量更新 358
1297 设置事务隔离级别 360
1210 数据库连接池 362
12101 创建连接池 363
12102 DataSource数据源 369
1211 小结 371
1212 练习题 372
第13章 基于MVC和RMI的分布式应用 375
131 MVC设计模式简介 375
132 store应用简介 377
133 创建视图 381
134 创建控制器 389
135 创建模型 390
136 创建独立应用 394
137 创建分布式应用 395
138 小结 398
139 练习题 398
第14章 通过JavaMail API收发邮件 401
141 E-mail协议简介 401
1411 SMTP简单邮件传输协议 401
1412 POP3邮局协议 402
1413 接收邮件的新协议IMAP 402
1414 MIME简介 403
142 JavaMail API简介 403
143 建立JavaMail应用程序的开发环境 405
1431 获得JavaMail API的类库 405
1432 安装和配置邮件服务器 406
144 创建JavaMail应用程序 408
145 身份验证 412
146 URLName类 416
147 创建和读取复杂电子邮件 418
1471 邮件地址 419
1472 邮件头部 420
1473 邮件标记 421
1474 邮件正文 422
148 操纵邮件夹 427
149 小结 432
1410 练习题 433
第15章 安全网络通信 435
151 SSL简介 435
1511 加密通信 436
1512 安全证书 436
1513 SSL握手 437
1514 创建自我签名的安全证书 438
152 JSSE简介 439
1521 KeyStore、KeyManager与TrustManager类 442
1522 SSLContext类 443
1523 SSLServerSocketFactory类 444
1524 SSLSocketFactory类 444
1525 SSLSocket类 444
1526 SSLServerSocket类 447
1527 SSLEngine类 448
153 创建基于SSL的安全服务器和安全客户 453
154 小结 457
155 练习题 457
第16章 CORBA简介 459
161 创建IDL接口 460
162 创建IDL接口的实现类 460
163 创建服务器程序 461
164 创建客户程序 462
165 运行CORBA程序 463
166 小结 464
167 练习题 465
第17章 Web服务简介 467
171 SOAP简介 467
172 建立Apache AXIS环境 469
173 在Tomcat上发布
Apache-AXIS Web应用 470
174 创建SOAP服务 471
1741 创建提供SOAP
服务的Java类 471
1742 创建SOAP服务的
发布描述符文件 471
175 管理SOAP服务 472
1751 发布SOAP服务 472
1752 删除SOAP服务 473
176 创建和运行SOAP
客户程序 473
177 发布JWS服务 476
178 小结 476
179 练习题 477
附录A 本书范例的运行方法 479
A1 本书所用软件的下载地址 479
A2 部分软件的安装 479
A21 安装JDK 480
A22 安装ANT 480
A23 安装Tomcat 481
A3 编译源程序 481
A4 运行客户/服务器程序 482
0条评论