社区
Java EE
帖子详情
struts中日期验证的正则表达式
fkpwolf
2003-10-21 06:55:51
struts1.1自带的例子中用的datapatern是:yyyy/MM/dd的形式
这样时间1999/1/1就不行,月,日必须皆为两位数,必须改为1999/01/01
我后来用mask自己定义,不要partern,depends去掉date.
网上抄了个:^(d+)-(d{1,2})-(d{1,2})(d{1,2})$
但这样的话,1-1-4444也可以成为日期.不大懂正则表达式.
怎么办呢?
...全文
68
3
打赏
收藏
struts中日期验证的正则表达式
struts1.1自带的例子中用的datapatern是:yyyy/MM/dd的形式 这样时间1999/1/1就不行,月,日必须皆为两位数,必须改为1999/01/01 我后来用mask自己定义,不要partern,depends去掉date. 网上抄了个:^(d+)-(d{1,2})-(d{1,2})(d{1,2})$ 但这样的话,1-1-4444也可以成为日期.不大懂正则表达式. 怎么办呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
angelheavens
2003-10-22
打赏
举报
回复
我后来一想,用正则表达式太麻烦,事实上你把日期分成三部份更好,把年份以文本框来输入,月(1-12是固定的),日(1-31也是固定的),那么只要判断年就可以了:
pattern=/^[0-9]{4}$/ 且 年>=限制最小年份 且 年<=限制最大年份(通常是当前的)
fkpwolf
2003-10-22
打赏
举报
回复
那具体的表达式是什么呢?
angelheavens
2003-10-21
打赏
举报
回复
你对日期有什么具体要求?在js中用正则表达式完全可以,只不过不是一步完成.
validate
验证
帮助文档
表单的
验证
一直是网页设计者头痛的问题,表单
验证
类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单
验证
中
解放出来,把精力集
中
于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页
中
的表单项输入进行相应的
验证
,允许同一页面
中
同时
验证
多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行
验证
。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的
验证
类型有: 1.是否为空; 2.
中
文字符; 3.双字节字符 4.英文; 5.数字; 6.整数; 7.实数; 8.Email地址; 9.使用HTTP协议的网址; 10.电话号码; 11.货币; 12.手机号码; 13.邮政编码; 14.身份证号码; 15.QQ号码; 16.
日期
; 17.符合安全规则的密码; 18.某项的重复值; 19.两数的关系比较; 20.判断输入值是否在(n, m)区间; 21.输入字符长度限制(可按字节比较); 22.对于具有相同名称的单选按钮的选
中
判断; 23.限制具有相同名称的多选按钮的选
中
数目; 24.自定义的
正则表达式
验证
;
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单
验证
的烦恼
增加validate-ajax以支持ajax
验证
增加validate-pattern直接通过
正则表达式
的认证 修改validate-equlas以
验证
密码与确认密码的问题 增加less-than与great-than的
验证
以支持开始
日期
与结束
日期
相比较的问题 增加validation之间内部依赖的支持, 欢迎大家提出改进,以便框架完成的更好如果需要,我会在将来开发出与服务端结合的开发框架,如
struts
and
struts
2 并且感谢原作者这么棒的Idea: http://tetlaw.id.au/view/blog/really-easy-field-validation-w
Java学习笔记-个人整理的
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{subsection.1.4.2} {1.4.3}\texttt {char}}{24}{subsection.1.4.3} {1.4.4}转义字符}{25}{subsection.1.4.4} {1.4.5}Boolean 布尔值}{25}{subsection.1.4.5} {1.5}基本类型变量的初始值}{26}{section.1.5} {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}Preincrement}{28}{subsubsection.1.8.1.2} {1.8.1.3}复合赋值运算}{28}{subsubsection.1.8.1.3} {1.8.2}逻辑运算}{29}{subsection.1.8.2} {1.8.3}条件运算符}{29}{subsection.1.8.3} {1.8.4}移位运算符}{30}{subsection.1.8.4} {1.9}流程控制}{31}{section.1.9} {1.9.1}\texttt {if\ldots esle\ldots }}{31}{subsection.1.9.1} {1.9.2}\texttt {switch}}{31}{subsection.1.9.2} {1.9.3}\texttt {while}}{32}{subsection.1.9.3} {1.9.4}\texttt {for}}{32}{subsection.1.9.4} {1.9.5}foreach}{32}{subsection.1.9.5} {1.9.6}go-to}{33}{subsection.1.9.6} {1.9.7}\texttt {do-while}}{33}{subsection.1.9.7} {1.10}数组(array)}{34}{section.1.10} {1.10.1}数组变量的声明}{34}{subsection.1.10.1} {1.10.2}数组变量的初始化}{34}{subsection.1.10.2} {1.10.3}数组对象的引用}{35}{subsection.1.10.3} {1.10.4}数组对象的复制}{35}{subsection.1.10.4} {1.10.5}扩充数组对象长度}{36}{subsection.1.10.5} {1.10.6}Problems}{37}{subsection.1.10.6} {1.11}简单算法}{38}{section.1.11} {1.11.1}打乱算法}{38}{subsection.1.11.1} {1.11.2}排序算法}{38}{subsection.1.11.2} {1.11.2.1}选择排序}{38}{subsubsection.1.11.2.1} {1.11.2.2}冒泡排序}{39}{subsubsection.1.11.2.2} {1.11.2.3}插入排序}{40}{subsubsection.1.11.2.3} {1.11.3}递归调用}{41}{subsection.1.11.3} {1.12}Java API}{41}{section.1.12} {1.13}Linux命令}{41}{section.1.13} {1.13.1}基本查看、移动}{41}{subsection.1.13.1} {1.13.2}权限}{42}{subsection.1.13.2} {1.13.3}打包备份与恢复}{42}{subsection.1.13.3} {1.13.3.1}\texttt {tar},\texttt {gzip}}{42}{subsubsection.1.13.3.1} {1.13.3.2}\texttt {zip}}{42}{subsubsection.1.13.3.2} {1.13.3.3}文本创建与编辑}{43}{subsubsection.1.13.3.3} {1.14}\texttt {PATH}}{43}{section.1.14} {1.14.1}Java的打包命令}{44}{subsection.1.14.1} {2}Everything is an Object }{45}{chapter.2} {2.1}类与对象}{45}{section.2.1} {2.1.1}构造方法}{45}{subsection.2.1.1} {2.1.2}Java变量类型}{47}{subsection.2.1.2} {2.1.3}面向对象的编程}{47}{subsection.2.1.3} {2.2}继承}{48}{section.2.2} {2.2.1}super(), this()}{49}{subsection.2.2.1} {2.2.2}方法重写/覆盖}{50}{subsection.2.2.2} {2.3}修饰符}{51}{section.2.3} {2.4}父类对象的方法调用}{51}{section.2.4} {2.5}封装}{52}{section.2.5} {2.6}多态}{53}{section.2.6} {2.7}Sample code}{54}{section.2.7} {2.8}框架
中
移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {2.10.3}静态代码块}{62}{subsection.2.10.3} {2.11}\ttfamily final}{63}{section.2.11} {2.12}\ttfamily abstract}{63}{section.2.12} {2.13}\ttfamily interface}{64}{section.2.13} {2.14}JavaBean规范}{66}{section.2.14} {3}常用类}{67}{chapter.3} {3.1}Object类}{67}{section.3.1} {3.1.1}\ttfamily toString}{67}{subsection.3.1.1} {3.1.2}\ttfamily equals}{67}{subsection.3.1.2} {3.1.3}\ttfamily hashCode}{68}{subsection.3.1.3} {3.2}String类}{69}{section.3.2} {3.3}String常量重利用}{70}{section.3.3} {3.4}
正则表达式
}{71}{section.3.4} {3.5}StringBuffer}{75}{section.3.5} {3.6}StringBuilder}{76}{section.3.6} {3.7}StringBuilder与StringBuffer的缺点}{76}{section.3.7} {3.8}内部类}{77}{section.3.8} {4}Collection}{80}{chapter.4} {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section.4.3} {4.4}散列表与HashMap}{83}{section.4.4} {4.4.1}java.util.HashMap}{83}{subsection.4.4.1} {4.5}\ttfamily java.util.HashSet}{84}{section.4.5} {4.6}泛型}{84}{section.4.6} {4.7}集合的迭代(Iterator)}{85}{section.4.7} {4.8}Collections集合工具类}{86}{section.4.8} {4.9}Comparable与Comparator}{86}{section.4.9} {4.9.1}Comparable}{86}{subsection.4.9.1} {4.9.2}Comparator}{87}{subsection.4.9.2} {4.10}包装类}{87}{section.4.10} {4.11}集合的复制}{88}{section.4.11} {4.12}集合的同步化}{89}{section.4.12} {4.13}集合转换为数组}{89}{section.4.13} {4.14}数组转换为集合}{89}{section.4.14} {4.15}Map的迭代}{90}{section.4.15} {4.15.1}字符统计}{91}{subsection.4.15.1} {5}格式化输入输出}{94}{chapter.5} {5.1}时间与
日期
}{94}{section.5.1} {5.1.1}各类时间
日期
转换}{94}{subsection.5.1.1} {5.1.2}时间的输入与输出}{97}{subsection.5.1.2} {5.2}数字的输入输出}{97}{section.5.2} {5.2.1}将浮点数四舍五入到指定精度}{98}{subsection.5.2.1} {6}Exception}{99}{chapter.6} {6.1}\ttfamily try-catch}{99}{section.6.1} {6.2}\ttfamily finally}{100}{section.6.2} {6.3}\ttfamily throws}{101}{section.6.3} {7}IO}{103}{chapter.7} {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的序列化}{109}{section.7.5} {7.6}InputStream与OutputStream}{109}{section.7.6} {7.6.1}FileInputStream}{109}{subsection.7.6.1} {7.6.2}FileOutputStream}{110}{subsection.7.6.2} {7.7}流}{110}{section.7.7} {7.8}Buffer}{112}{section.7.8} {7.9}字符流}{112}{section.7.9} {7.10}缓冲字符输入输出流}{113}{section.7.10} {7.11}文件常用操作}{114}{section.7.11} {7.12}对象序列化}{117}{section.7.12} {8}多线程}{121}{chapter.8} {8.1}线程的常用属性与方法}{121}{section.8.1} {8.2}后台线程}{123}{section.8.2} {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section.8.5} {8.5.1}sleep与wait的差异}{124}{subsection.8.5.1} {8.6}IO阻塞}{126}{section.8.6} {8.7}同步与异步}{126}{section.8.7} {8.8}Timer}{133}{section.8.8} {9}Java网络编程}{135}{chapter.9} {10}反射}{141}{chapter.10} {10.1}Class}{141}{section.10.1} {10.1.1}Field}{145}{subsection.10.1.1} {10.1.2}Method}{145}{subsection.10.1.2} {10.1.3}Constructor}{145}{subsection.10.1.3} {10.2}其他Java相关}{146}{section.10.2} {11}项目}{148}{chapter.11} {11.1}ELTS}{148}{section.11.1} {12}Oracle数据库}{151}{chapter.12} {12.1}术语}{151}{section.12.1} {12.2}登录数据库}{151}{section.12.2} {12.3}创建表格}{152}{section.12.3} {12.4}关于null值}{154}{section.12.4} {12.5}操作符与实例}{154}{section.12.5} {12.5.1}where}{154}{subsection.12.5.1} {12.6}函数}{156}{section.12.6} {12.7}组函数}{158}{section.12.7} {12.7.1}group by}{159}{subsection.12.7.1} {12.7.2}having}{160}{subsection.12.7.2} {12.8}子查询}{161}{section.12.8} {12.9} 授权与回收权限}{161}{section.12.9} {12.10}示例}{162}{section.12.10} {12.10.1}exists}{165}{subsection.12.10.1} {12.11}集合操作}{165}{section.12.11} {12.11.1}union}{166}{subsection.12.11.1} {12.11.2}intersect与minus}{166}{subsection.12.11.2} {12.11.3}join}{166}{subsection.12.11.3} {12.11.3.1}cross join}{166}{subsubsection.12.11.3.1} {12.11.3.2}inner join}{167}{subsubsection.12.11.3.2} {12.11.3.3}outer join}{170}{subsubsection.12.11.3.3} {12.11.3.4}full join}{172}{subsubsection.12.11.3.4} {12.12}inner join与outer join比较}{172}{section.12.12} {12.12.1}非等值连接}{174}{subsection.12.12.1} {12.13}DML语句}{175}{section.12.13} {12.13.1}insert}{175}{subsection.12.13.1} {12.13.2}create}{175}{subsection.12.13.2} {12.13.3}rownum}{175}{subsection.12.13.3} {12.13.4}update}{176}{subsection.12.13.4} {12.13.5}delete}{177}{subsection.12.13.5} {12.13.6}drop}{177}{subsection.12.13.6} {12.13.7}rename}{177}{subsection.12.13.7} {12.14}SQL脚本}{177}{section.12.14} {12.15}Transaction}{177}{section.12.15} {12.16}char与varchar2}{178}{section.12.16} {12.17}number}{179}{section.12.17} {12.18}\ttfamily user\_tables, user\_objects}{179}{section.12.18} {12.19}truncate}{179}{section.12.19} {12.20}alter}{180}{section.12.20} {12.21}constraint}{180}{section.12.21} {12.21.1}primary key, unique}{181}{subsection.12.21.1} {12.21.2}unique}{182}{subsection.12.21.2} {12.21.3}foreign key}{182}{subsection.12.21.3} {12.22}view}{187}{section.12.22} {12.23}index, rowid}{187}{section.12.23} {12.24}sequence}{189}{section.12.24} {12.25}PL/SQL}{189}{section.12.25} {13}JDBC}{191}{chapter.13} {13.1}forName}{191}{section.13.1} {13.2}JDBC}{191}{section.13.2} {13.3}连接Oracle数据库及操作}{192}{section.13.3} {13.4}批处理模式}{195}{section.13.4} {13.5}分页查询}{196}{section.13.5} {13.5.1}MySQL}{198}{subsection.13.5.1} {13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{chapter.14} {14.1}元素}{204}{section.14.1} {14.2}XML的设计}{205}{section.14.2} {14.3}DTD/Schema}{205}{section.14.3} {14.3.1}SAX应用}{206}{subsection.14.3.1} {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}HTML}{215}{section.16.1} {16.2}head区域}{215}{section.16.2} {16.3}body区域}{216}{section.16.3} {16.4}常用标记}{216}{section.16.4} {16.4.1}span, div}{216}{subsection.16.4.1} {16.4.2}a}{216}{subsection.16.4.2} {16.4.3}img}{216}{subsection.16.4.3} {16.4.4}table}{217}{subsection.16.4.4} {16.5}form}{220}{section.16.5} {16.5.1}form的元素}{220}{subsection.16.5.1} {16.6}列表}{221}{section.16.6} {16.7}select与option}{221}{section.16.7} {16.8}frame}{222}{section.16.8} {16.9}CSS}{224}{section.16.9} {16.10}Selector}{228}{section.16.10} {16.11}样式属性}{230}{section.16.11} {16.11.1}border}{230}{subsection.16.11.1} {16.11.2}display}{230}{subsection.16.11.2} {16.11.3}position}{230}{subsection.16.11.3} {16.11.4}z-index}{231}{subsection.16.11.4} {16.11.5}文本属性}{231}{subsection.16.11.5} {16.11.6}边距属性}{231}{subsection.16.11.6} {16.11.7}float}{232}{subsection.16.11.7} {16.11.8}list-style}{232}{subsection.16.11.8} {16.12}JavaScript}{232}{section.16.12} {16.12.1}JavaScript基本语法}{236}{subsection.16.12.1} {16.12.2}内置数据类型}{237}{subsection.16.12.2} {16.12.3}带参数的函数}{237}{subsection.16.12.3} {16.13}常用内置对象}{238}{section.16.13} {16.13.1}String}{238}{subsection.16.13.1} {16.13.2}Array}{239}{subsection.16.13.2} {16.13.3}Math}{239}{subsection.16.13.3} {16.13.4}Date}{240}{subsection.16.13.4} {16.13.5}Error}{240}{subsection.16.13.5} {16.13.6}Regex}{240}{subsection.16.13.6} {16.13.7}Function}{240}{subsection.16.13.7} {16.13.8}Date}{241}{subsection.16.13.8} {16.14}页内显示}{241}{section.16.14} {16.15}DOM}{243}{section.16.15} {16.15.1}查询节点}{243}{subsection.16.15.1} {16.15.2}获取节点信息}{243}{subsection.16.15.2} {16.15.3}修改节点信息}{244}{subsection.16.15.3} {16.15.4}添加新节点}{244}{subsection.16.15.4} {16.15.5}删除节点}{244}{subsection.16.15.5} {16.16}页签效果}{244}{section.16.16} {16.17}封装}{244}{section.16.17} {16.18}表格的动态创建}{245}{section.16.18} {16.19}BOM}{246}{section.16.19} {16.19.1}window}{246}{subsection.16.19.1} {16.19.1.1}open(url)}{246}{subsubsection.16.19.1.1} {16.19.1.2}focus}{246}{subsubsection.16.19.1.2} {16.19.1.3}confirm}{246}{subsubsection.16.19.1.3} {16.19.1.4}prompt}{247}{subsubsection.16.19.1.4} {16.19.1.5}setInterval}{247}{subsubsection.16.19.1.5} {16.19.1.6}clearInterval}{247}{subsubsection.16.19.1.6} {16.19.1.7}setTimeout}{247}{subsubsection.16.19.1.7} {16.19.1.8}clearTimeOut}{247}{subsubsection.16.19.1.8} {16.19.2}location}{247}{subsection.16.19.2} {16.19.3}screen}{248}{subsection.16.19.3} {16.19.4}navigator}{248}{subsection.16.19.4} {16.19.5}event对象}{248}{subsection.16.19.5} {16.19.5.1}事件位置}{250}{subsubsection.16.19.5.1} {16.19.6}history}{250}{subsection.16.19.6} {16.20}Object-Oriented Programming}{250}{section.16.20} {17}Servlet}{259}{chapter.17} {17.1}什么是Servlet}{259}{section.17.1} {17.2}如何写Servlet}{259}{section.17.2} {17.3}安装tomcat与简单使用}{260}{section.17.3} {17.3.1}常见错误}{262}{subsection.17.3.1} {17.3.2}示例}{263}{subsection.17.3.2} {17.4}Servlet引用的jar包}{266}{section.17.4} {17.5}HTTP协议}{266}{section.17.5} {17.6}表单处理}{267}{section.17.6} {17.7}表单
中
文乱码}{267}{section.17.7} {17.8}MySQL}{268}{section.17.8} {17.8.1}创建数据库}{268}{subsection.17.8.1} {17.8.2}克隆数据库}{268}{subsection.17.8.2} {17.8.3}查看数据库编码}{268}{subsection.17.8.3} {17.8.4}创建表格}{269}{subsection.17.8.4} {17.8.5}插入记录}{269}{subsection.17.8.5} {17.8.6}查询、修改、删除记录}{269}{subsection.17.8.6} {17.8.7}使用SQL脚本}{270}{subsection.17.8.7} {17.8.8}分行问题}{270}{subsection.17.8.8} {17.8.9}在Servlet
中
使用JDBC访问数据库}{271}{subsection.17.8.9} {17.8.10}连接数}{273}{subsection.17.8.10} {17.9}重定向}{273}{section.17.9} {17.10}DAO}{274}{section.17.10} {17.11}DAO工厂}{274}{section.17.11} {17.12}类加载器}{277}{section.17.12} {17.13}Servlet及数据库
中
文}{277}{section.17.13} {17.14}让servlet处理多种请求}{278}{section.17.14} {17.14.1}servlet容器如何处理请求资源路径?}{281}{subsection.17.14.1} {17.15}servlet的生命周期}{282}{section.17.15} {18}JSP}{284}{chapter.18} {18.1}JSP文件的写法}{284}{section.18.1} {18.2}JSP的执行步骤}{285}{section.18.2} {18.3}JSP文件的指令}{285}{section.18.3} {18.4}转发}{286}{section.18.4} {18.4.1}转发与重定向的差别}{287}{subsection.18.4.1} {18.5}处理异常}{288}{section.18.5} {18.6}注册登录页面}{288}{section.18.6} {18.7}加密数据库密码列}{288}{section.18.7} {18.8}路径问题}{289}{section.18.8} {18.8.1}绝对路径的使用}{290}{subsection.18.8.1} {18.9}状态管理}{291}{section.18.9} {18.9.1}cookie}{291}{subsection.18.9.1} {18.9.1.1}cookie的编码}{291}{subsubsection.18.9.1.1} {18.9.1.2}cookie的生存时间}{292}{subsubsection.18.9.1.2} {18.9.1.3}cookie的路径问题}{292}{subsubsection.18.9.1.3} {18.9.1.4}cookie的限制}{293}{subsubsection.18.9.1.4} {18.9.2}session}{294}{subsection.18.9.2} {18.9.2.1}获取session}{294}{subsubsection.18.9.2.1} {18.9.2.2}session的方法}{295}{subsubsection.18.9.2.2} {18.9.2.3}session的超时}{296}{subsubsection.18.9.2.3} {18.9.2.4}删除session}{296}{subsubsection.18.9.2.4} {18.9.2.5}session
验证
}{297}{subsubsection.18.9.2.5} {18.10}购物车案例}{300}{section.18.10} {18.11}URL重写}{301}{section.18.11} {18.12}session的优缺点}{302}{section.18.12} {18.13}过滤器}{302}{section.18.13} {18.14}监听器}{303}{section.18.14} {18.15}ServletContext接口}{303}{section.18.15} {18.16}上传文件}{304}{section.18.16} {18.17}Servlet线程安全问题}{308}{section.18.17} {18.18}el表达式}{309}{section.18.18} {18.18.1}第一种方式}{310}{subsection.18.18.1} {18.18.2}第二种方式}{310}{subsection.18.18.2} {18.18.3}获取请求参数的值}{311}{subsection.18.18.3} {18.18.4}简单计算及输出等}{311}{subsection.18.18.4} {18.19}JSP标签}{311}{section.18.19} {18.19.1}JSTL}{312}{subsection.18.19.1} {18.19.2}自定义标签}{312}{subsection.18.19.2} {18.19.3}在JavaEE5及以上版本,如何使用el表达式与标准标签}{316}{subsection.18.19.3} {18.20}MVC}{317}{section.18.20} {18.20.1}在web开发
中
如何使用MVC}{318}{subsection.18.20.1} {18.20.2}MVC的特殊应用}{318}{subsection.18.20.2} {19}Ajax}{319}{chapter.19} {19.1}Ajax对象的属性}{319}{section.19.1} {19.2}编程}{320}{section.19.2} {19.3}Ajax
中
文处理}{321}{section.19.3} {19.3.1}链接地址包含
中
文}{321}{subsection.19.3.1} {19.3.2}链接地址包含
中
文参数值}{321}{subsection.19.3.2} {19.3.3}Ajax
中
的编码问题}{321}{subsection.19.3.3} {19.4}以post方式发送请求}{322}{section.19.4} {19.4.1}post请求时的
中
文编码}{322}{subsection.19.4.1} {19.5}Ajax级联下拉菜单示例}{322}{section.19.5} {19.6}Ajax的优点}{329}{section.19.6} {20}Json}{330}{chapter.20} {20.1}Json的语法}{330}{section.20.1} {20.2}在Ajax应用
中
使用Json}{330}{section.20.2} {20.2.1}Json字符串转换为JavaScript对象}{331}{subsection.20.2.1} {20.3}缓存问题}{334}{section.20.3} {21}jQuery}{335}{chapter.21} {21.1}使用jQuery}{335}{section.21.1} {21.2}jQuery对象与DOM对象的转换}{335}{section.21.2} {21.3}选择器}{336}{section.21.3} {21.4}DOM操作}{337}{section.21.4} {21.4.1}查询与修改}{337}{subsection.21.4.1} {21.4.2}创建}{338}{subsection.21.4.2} {21.4.3}插入删除节点}{338}{subsection.21.4.3} {21.4.4}复制节点}{339}{subsection.21.4.4} {21.4.5}属性操作}{339}{subsection.21.4.5} {21.4.6}样式操作}{339}{subsection.21.4.6} {21.4.7}遍历节点}{340}{subsection.21.4.7} {21.4.8}模拟操作}{341}{subsection.21.4.8} {21.5}事件处理}{344}{section.21.5} {21.5.1}事件}{345}{subsection.21.5.1} {21.5.2}事件冒泡}{346}{subsection.21.5.2} {21.5.3}jQuery事件对象属性}{346}{subsection.21.5.3} {21.6}动画}{347}{section.21.6} {21.7}类数组}{348}{section.21.7} {21.8}jQuery对Ajax开发的支持}{348}{section.21.8} {21.8.1}get, post}{349}{subsection.21.8.1} {21.8.2}.ajax}{350}{subsection.21.8.2} {21.9}Debugging jQuery}{351}{section.21.9} {22}
struts
2}{352}{chapter.22} {22.1}准备strut2开发类库}{352}{section.22.1} {22.2}
struts
配置}{354}{section.22.2} {22.3}安全路径}{354}{section.22.3} {22.4}用户访问}{355}{section.22.4} {22.5}访问数据库}{355}{section.22.5} {22.5.1}数据分页}{355}{subsection.22.5.1} {22.6}
struts
2分页查询、显示}{355}{section.22.6} {22.7}Ognl语言}{357}{section.22.7} {22.7.1}Ognl
中
的运算}{358}{subsection.22.7.1} {22.7.2}Ognl调用普通方法}{358}{subsection.22.7.2} {22.7.3}Ognl调用静态方法}{358}{subsection.22.7.3} {22.7.4}创建List}{358}{subsection.22.7.4} {22.7.5}创建Map}{359}{subsection.22.7.5} {22.7.6}投影}{359}{subsection.22.7.6} {22.7.7}选择性获取元素集合}{359}{subsection.22.7.7} {22.7.8}Ognl操作对象}{359}{subsection.22.7.8} {22.7.9}
Struts
2的Ognl}{360}{subsection.22.7.9} {22.8}
Struts
2标签}{360}{section.22.8} {22.8.1}数据提交}{361}{subsection.22.8.1} {22.8.2}测试对象是否为空}{362}{subsection.22.8.2} {22.8.3}获取checkbox项数据}{362}{subsection.22.8.3} {22.9}JUnit Test}{362}{section.22.9} {22.9.1}JUnit注释}{363}{subsection.22.9.1} {22.9.2}Debug Mode}{363}{subsection.22.9.2} {22.10}使用JavaScript提交表单}{364}{section.22.10} {22.11}使用JavaScript提交action请求}{365}{section.22.11} {22.12}
Struts
2对象创建模式}{366}{section.22.12} {22.13}获取session}{366}{section.22.13} {22.14}属性注入}{367}{section.22.14} {22.15}ActionSupport}{367}{section.22.15} {22.16}默认action}{368}{section.22.16} {22.17}
struts
2执行流程}{368}{section.22.17} {22.18}常用result类型}{370}{section.22.18} {22.18.1}
Struts
2
验证
码}{372}{subsection.22.18.1} {22.19}Json插件}{374}{section.22.19} {22.20}
Struts
2动态action用法}{376}{section.22.20} {22.21}reset}{376}{section.22.21} {22.22}注解action}{377}{section.22.22} {22.23}More tags}{377}{section.22.23} {22.23.1}form, checkbox}{377}{subsection.22.23.1} {22.23.2}checkboxlist}{377}{subsection.22.23.2} {22.23.3}radio}{378}{subsection.22.23.3} {22.23.4}select}{378}{subsection.22.23.4} {22.23.5}使用服务器数据显示列表}{378}{subsection.22.23.5} {22.24}interceptor}{379}{section.22.24} {22.24.1}interceptor-stack}{381}{subsection.22.24.1} {22.24.2}默认拦截器}{382}{subsection.22.24.2} {22.24.3}引用父类拦截器}{383}{subsection.22.24.3} {22.25}
struts
安全
验证
}{383}{section.22.25} {22.26}
struts
2上传}{384}{section.22.26} {22.27}
struts
2国际化}{385}{section.22.27} {23}当当网项目}{386}{chapter.23} {23.1}
struts
2常量}{389}{section.23.1} {23.2}java.util.UUID}{390}{section.23.2} {23.3}获取IP地址}{390}{section.23.3} {23.4}动态嵌入另一页面}{390}{section.23.4} {23.5}jQuery.validate}{392}{section.23.5} {23.6}JSP页面布尔值判断}{395}{section.23.6} {23.7}创建产品与图书的数据库表格}{395}{section.23.7} {23.8}使用SSH重构的问题}{395}{section.23.8} {24}Hibernate}{398}{chapter.24} {24.1}ORM}{398}{section.24.1} {24.2}使用Hibernate}{399}{section.24.2} {24.3}表格创建}{400}{section.24.3} {24.4}获取Session}{401}{section.24.4} {24.5}hibernate事务}{402}{section.24.5} {24.6}查询}{402}{section.24.6} {24.7}主键生成策略(generator)}{403}{section.24.7} {24.8}默认值}{404}{section.24.8} {24.9}hibernate bean对象的生命周期}{404}{section.24.9} {24.9.1}数据同步}{405}{subsection.24.9.1} {24.10}Hibernate类型}{406}{section.24.10} {24.11}Hibernate懒加载}{407}{section.24.11} {24.11.1}懒加载原理}{408}{subsection.24.11.1} {24.11.2}使用懒加载}{408}{subsection.24.11.2} {24.11.3}在
Struts
2
中
应用懒加载机制}{409}{subsection.24.11.3} {24.11.4}使用Hibernate维护单对象session}{412}{subsection.24.11.4} {24.12}ORM}{412}{section.24.12} {24.12.1}many-to-one}{413}{subsection.24.12.1} {24.12.2}one-to-many}{413}{subsection.24.12.2} {24.12.3}many-to-many}{414}{subsection.24.12.3} {24.12.4}双向关联映射}{416}{subsection.24.12.4} {24.12.5}关系表}{417}{subsection.24.12.5} {24.12.6}Hibernate继承关系}{418}{subsection.24.12.6} {24.12.7}Hibernate组件映射}{419}{subsection.24.12.7} {24.13}HQL语句}{420}{section.24.13} {24.14}QBC语句}{422}{section.24.14} {24.15}使用SQL语句}{422}{section.24.15} {24.16}Hibernate缓存}{423}{section.24.16} {24.16.1}一级缓存}{423}{subsection.24.16.1} {24.16.1.1}批处理}{424}{subsubsection.24.16.1.1} {24.16.2}二级缓存}{424}{subsection.24.16.2} {24.16.3}查询缓存}{427}{subsection.24.16.3} {24.17}Hibernate锁机制}{428}{section.24.17} {24.17.1}悲观锁}{428}{subsection.24.17.1} {24.17.2}乐观锁}{429}{subsection.24.17.2} {24.18}Ant及Maven}{429}{section.24.18} {24.19}Hibernate注解}{429}{section.24.19} {25}Spring}{430}{chapter.25} {25.1}概念}{430}{section.25.1} {25.2}Spring开发}{431}{section.25.2} {25.2.1}依赖注入}{431}{subsection.25.2.1} {25.2.2}集合注入}{433}{subsection.25.2.2} {25.3}log4j}{434}{section.25.3} {25.4}Spring容器}{435}{section.25.4} {25.5}Spring容器对Bean对象的管理}{436}{section.25.5} {25.5.1}lazy-init}{436}{subsection.25.5.1} {25.5.2}Bean对象的初始化与销毁}{437}{subsection.25.5.2} {25.6}AOP与代理模式}{437}{section.25.6} {25.6.1}动态代理模式}{438}{subsection.25.6.1} {25.6.2}Spring代理模式}{440}{subsection.25.6.2} {25.6.2.1}第一种情况}{440}{subsubsection.25.6.2.1} {25.6.2.2}第二种情况}{441}{subsubsection.25.6.2.2} {25.6.2.3}第三种情况:使用schema配置}{443}{subsubsection.25.6.2.3} {25.7}单例模式及Bean的作用域}{445}{section.25.7} {25.8}Spring JDBC}{446}{section.25.8} {25.9}Spring与
Struts
2集成}{448}{section.25.9} {25.10}
Struts
2, Spring, Hibernate}{450}{section.25.10} {25.10.1}spring-test: 使用注解方式测试}{455}{subsection.25.10.1} {25.11}Spring管理Hibernate}{456}{section.25.11} {25.12}分层管理Spring配置文件}{462}{section.25.12} {25.13}Spring
中
的Hibernate懒加载}{462}{section.25.13} {25.14}Spring
中
文过滤器}{463}{section.25.14} {25.15}Spring读取属性(.properties)文件}{464}{section.25.15} {25.16}Spring
中
的Hibernate数据库操作}{465}{section.25.16} {25.17}分页查询}{465}{section.25.17} \contentsline {chapter}{Todo list}{478}{lstnumber.-637.8} {A}T-GWAP}{480}{appendix.A} {A.1}PO}{480}{section.A.1} {A.2}DAO}{480}{section.A.2} {A.2.1}使用连接池}{480}{subsection.A.2.1} {A.3}BO}{485}{section.A.3} {A.3.1}ThreadLocal}{486}{subsection.A.3.1} {A.4}FC}{486}{section.A.4} {A.5}View}{486}{section.A.5} {A.6}框架}{486}{section.A.6} {A.6.1}简单工厂}{486}{subsection.A.6.1} {B}问题}{489}{appendix.B} \contentsline {chapter}{Index}{491}{section*.9} {B.0.2},}{491}{subsection.B.0.2}
JAVA项目开发全程实录(含电子书和所有源代码)
《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL Server 2000实现) 1 教学视频:1小时42分 1.1 开发背景 2 1.2 系统分析 2 1.2.1 需求分析 2 1.2.2 可行性分析 2 1.2.3 编写项目计划书 4 1.3 系统设计 6 1.3.1 系统目标 6 1.3.2 系统功能结构 6 1.3.3 业务逻辑编码规则 7 1.3.4 系统流程图 8 1.3.5 构建开发环境 8 1.3.6 系统预览 9 1.3.7 文件夹组织结构 10 1.4 数据库设计 10 1.4.1 数据库分析 10 1.4.2 进销存管理系统的E-R图 11 1.4.3 使用PowerDesigner建模 12 1.4.4 创建数据库 15 1.5 主窗体设计 16 1.5.1 创建主窗体 17 1.5.2 创建导航面板 18 1.6 公共模块设计 21 1.6.1 编写Dao公共类 22 1.6.2 编写Item类 25 1.7 基础信息模块设计 26 1.7.1 基础信息模块概述 26 1.7.2 基础信息模块技术分析 27 1.7.3 供应商添加实现过程 27 1.7.4 供应商修改与删除实现过程 30 1.7.5 单元测试 32 1.8 进货管理模块设计 36 1.8.1 进货管理模块概述 36 1.8.2 进货管理模块技术分析 38 1.8.3 进货单实现过程 38 1.9 查询统计模块设计 42 1.9.1 查询统计模块概述 42 1.9.2 查询统计模块技术分析 43 1.9.3 销售查询实现过程 43 1.10 库存管理模块设计 45 1.10.1 库存管理模块概述 45 1.10.2 库存管理模块技术分析 46 1.10.3 价格调整实现过程 46 1.10.4 单元测试 48 1.11 系统打包发布 49 1.12 开发技巧与难点分析 51 1.13 使用PowerDesigner逆向生成数据库 E-R图 52 1.14 本章总结 54 第2章 企业内部通信系统(Swing+JavaDB 实现) 55 教学视频:1小时40分 2.1 开发背景 56 2.2 系统分析 56 2.2.1 需求分析 56 2.2.2 可行性分析 56 2.2.3 编写项目计划书 58 2.3 系统设计 60 2.3.1 系统目标 60 2.3.2 系统功能结构 60 2.3.3 数据库设计 60 2.3.4 系统预览 62 2.3.5 文件夹组织结构 63 2.4 主窗体设计 64 2.4.1 创建主窗体 64 2.4.2 记录窗体位置 68 2.5 公共模块设计 69 2.5.1 数据库操作类 69 2.5.2 系统工具类 74 2.6 系统托盘模块设计 79 2.6.1 系统托盘模块概述 79 2.6.2 系统托盘模块技术分析 79 2.6.3 系统托盘模块实现过程 80 2.7 系统工具模块设计 82 2.7.1 系统工具模块概述 82 2.7.2 系统工具模块技术分析 82 2.7.3 系统工具模块实现过程 83 2.8 用户管理模块设计 87 2.8.1 用户管理模块概述 87 2.8.2 用户管理模块技术分析 87 2.8.3 用户管理模块实现过程 88 2.8.4 单元测试 93 2.9 通信模块设计 94 2.9.1 通信模块概述 94 2.9.2 通信模块技术分析 95 2.9.3 通信模块实现过程 95 2.10 开发技巧与难点分析 99 2.11 使用JDK 6新增的系统托盘 99 2.12 本章总结 100 第3章 企业人事管理系统 (Swing+Hibernate+Oracle实现) 101 教学视频:2小时53分 3.1 开发背景 102 3.2 系统分析 102 3.3 系统设计 102 3.3.1 系统目标 102 3.3.2 系统功能结构 102 3.3.3 系统预览 104 3.3.4 业务流程图 105 3.3.5 文件夹结构设计 106 3.4 数据库设计 107 3.4.1 数据库分析 107 3.4.2 数据库概念设计 107 3.4.3 数据库逻辑结构设计 109 3.5 主窗体设计 110 3.5.1 导航栏的设计 110 3.5.2 工具栏的设计 112 3.6 公共模块设计 114 3.6.1 编写Hibernate配置文件 114 3.6.2 编写Hibernate持久化类和映射文件 115 3.6.3 编写通过Hibernate操作持久化对象的 常用方法 116 3.6.4 创建用于特殊效果的部门树对话框 117 3.6.5 创建通过部门树选取员工的面板和 对话框 119 3.7 人事管理模块设计 120 3.7.1 人事管理模块功能概述 120 3.7.2 人事管理模块技术分析 122 3.7.3 人事管理模块实现过程 122 3.7.4 单元测试 127 3.8 待遇管理模块设计 128 3.8.1 待遇管理模块功能概述 128 3.8.2 待遇管理模块技术分析 129 3.8.3 待遇管理模块实现过程 129 3.9 系统维护模块设计 133 3.9.1 系统维护模块功能概述 134 3.9.2 系统维护模块技术分析 136 3.9.3 系统维护模块实现过程 136 3.9.4 单元测试 140 3.10 开发技巧与难点分析 140 3.11 Hibernate关联关系的建立方法 141 3.11.1 建立一对一关联 141 3.11.2 建立一对多关联 142 3.12 本章总结 144 第4章 酒店管理系统(Swing+SQL Server 2005实现) 145 教学视频:2小时39分 4.1 概述 146 4.2 系统分析 146 4.3 系统设计 146 4.3.1 系统目标 146 4.3.2 系统功能结构 147 4.3.3 系统预览 147 4.3.4 业务流程图 149 4.3.5 文件夹结构设计 149 4.4 数据库设计 150 4.4.1 数据库分析 150 4.4.2 数据库概念设计 150 4.4.3 数据库逻辑结构设计 151 4.4.4 视图设计 151 4.5 公共模块设计 152 4.5.1 编写数据库连接类 152 4.5.2 封装常用的操作数据库的方法 153 4.5.3 自定义表格组件 154 4.5.4 编写利用
正则表达式
验证
数据 合法性的方法 156 4.6 主窗体设计 156 4.7 用户登录窗口设计 158 4.8 开台签单工作区设计 164 4.8.1 开台签单工作区功能概述 164 4.8.2 开台签单工作区技术分析 165 4.8.3 开台签单工作区实现过程 165 4.8.4 单元测试 170 4.9 自动结账工作区设计 171 4.9.1 自动结账工作区功能概述 171 4.9.2 自动结账工作区技术分析 172 4.9.3 自动结账工作区实现过程 172 4.10 结账报表工作区设计 173 4.10.1 结账报表工作区功能概述 173 4.10.2 结账报表工作区技术分析 175 4.10.3 结账报表工作区实现过程 175 4.10.4 单元测试 179 4.11 后台管理工作区设计 180 4.11.1 后台管理工作区功能概述 180 4.11.2 后台管理工作区技术分析 181 4.11.3 后台管理工作区实现过程 181 4.11.4 单元测试 188 4.12 开发技巧与难点分析 188 4.13 使用Visio逆向生成数据库E-R图 190 4.14 本章总结 192 第5章 图书馆管理系统(Swing+SQL Server 2000实现) 193 教学视频:2小时14分 5.1 开发背景 194 5.2 需求分析 194 5.3 系统设计 194 5.3.1 系统目标 194 5.3.2 系统功能结构 194 5.3.3 系统流程图 195 5.3.4 系统预览 196 5.3.5 构建开发环境 196 5.3.6 文件夹组织结构 197 5.4 数据库设计 197 5.4.1 数据库分析 197 5.4.2 数据库概念设计 197 5.4.3 使用PowerDesigner建模 200 5.5 公共模块设计 201 5.5.1 数据库连接及操作类的编写 201 5.5.2 MenuActions类的编写 203 5.5.3 限制文本框长度类的编写 205 5.5.4 描述组合框索引与内容类的编写 206 5.5.5 在JLable上添加图片类的编写 208 5.6 主窗体设计 208 5.6.1 主窗体概述 208 5.6.2 主窗体技术分析 209 5.6.3 主窗体的实现过程 211 5.7 登录模块设计 214 5.7.1 登录模块概述 214 5.7.2 登录模块技术分析 215 5.7.3 登录模块实现过程 216 5.8 图书信息管理模块设计 219 5.8.1 图书信息管理模块概述 219 5.8.2 图书信息管理模块技术分析 221 5.8.3 图书信息管理模块实现过程 221 5.8.4 单元测试 229 5.9 图书借阅、归还模块设计 230 5.9.1 图书借阅、归还模块概述 230 5.9.2 图书借阅、归还模块技术分析 231 5.9.3 图书借阅、归还模块实现过程 232 5.9.4 单元测试 238 5.10 图书查询模块设计 239 5.10.1 图书查询模块概述 239 5.10.2 图书查询模块技术分析 239 5.10.3 图书查询模块实现过程 240 5.11 开发技巧与难点分析 242 5.11.1 级联删除 242 5.11.2 窗体
中
单选按钮即时显示 243 5.12 格式化的文本框 243 5.12.1 使用JFormattedTextField限制整型 数字输入 244 5.12.2 使用JFormattedTextField限制
日期
输入 244 5.13 本章总结 245 第6章 企业快信(Swing+JavaDB实现) 246 教学视频:1小时35分 6.1 企业快信概述 247 6.2 系统分析 247 6.2.1 需求分析 247 6.2.2 可行性研究 247 6.3 系统设计 248 6.3.1 系统目标 248 6.3.2 系统功能结构 248 6.3.3 业务流程图 248 6.3.4 系统预览 249 6.3.5 构建开发环境 251 6.3.6 文件夹组织结构 252 6.4 数据库设计 253 6.4.1 数据库分析 253 6.4.2 数据库概念设计 253 6.4.3 数据库逻辑结构设计 254 6.4.4 视图设计 255 6.5 主窗体设计 255 6.6 公共模块设计 258 6.6.1 编写数据库连接类 258 6.6.2 封装常用的操作数据库的方法 260 6.7 资源管理模块设计 261 6.7.1 名片夹管理功能概述 261 6.7.2 名片夹管理功能技术分析 262 6.7.3 名片夹管理功能实现过程 262 6.8 发送短信模块设计 270 6.8.1 发送短信模块功能概述 270 6.8.2 发送短信模块技术分析 271 6.8.3 发送短信模块实现过程 272 6.9 发送邮件模块设计 276 6.9.1 发送邮件模块功能概述 276 6.9.2 发送邮件模块技术分析 277 6.9.3 发送邮件模块实现过程 277 6.10 系统设置模块设计 282 6.10.1 系统设置模块功能概述 282 6.10.2 系统设置模块技术分析 283 6.10.3 短信设置实现过程 283 6.10.4 邮箱设置实现过程 285 6.11 开发技巧与难点分析 287 6.12 使用短信猫和Java Mail组件 288 6.12.1 使用短信猫 288 6.12.2 使用Java Mail组件 290 6.13 本章总结 295 第7章 欣想电子商城(Spring+Hibernate +SQL Server实现) 296 教学视频:1小时53分 7.1 开发背景 297 7.2 系统分析 297 7.2.1 需求分析 297 7.2.2 可行性分析 297 7.3 系统设计 298 7.3.1 系统目标 298 7.3.2 系统功能结构 298 7.3.3 购物流程图 299 7.3.4 系统预览 300 7.3.5 构建开发环境 301 7.3.6 文件夹组织结构 304 7.4 数据库设计 304 7.4.1 数据库分析 305 7.4.2 数据库概念设计 305 7.4.3 PowerDesigner数据库建模 306 7.4.4 数据库创建 307 7.5 网站首页设计 308 7.5.1 首页布局 308 7.5.2 创建首页控制器 311 7.5.3 配置控制器 312 7.6 公共模块设计 314 7.6.1 编写Dao公共类 314 7.6.2 配置数据库连接和事务管理器 316 7.6.3 配置Spring控制器的请求映射 317 7.7 会员管理模块设计 319 7.7.1 会员管理模块概述 319 7.7.2 会员管理模块技术分析 320 7.7.3 会员注册的实现过程 321 7.7.4 会员登录的实现过程 324 7.8 购物模块设计 327 7.8.1 购物模块概述 327 7.8.2 购物模块技术分析 328 7.8.3 购物车的实现过程 328 7.8.4 收银台的实现过程 332 7.8.5 单元测试 335 7.9 商品管理模块设计 336 7.9.1 商品管理模块概述 336 7.9.2 商品管理模块技术分析 337 7.9.3 商品列表的实现过程 338 7.9.4 商品添加的实现过程 340 7.9.5 单元测试 343 7.10 发布与运行 344 7.11 开发技巧与难点分析 346 7.11.1 为Spring的数据源配置正确的URL 346 7.11.2 为Tiles指定错误页面 347 7.12 使用MyEclipse生成Hibernate 实体类和映射文件 347 7.13 本章总结 351 第8章 企业门户网站(JSP+JavaBean +SQL Server 2000实现) 352 教学视频:1小时9分 8.1 开发背景 353 8.2 需求分析 353 8.3 系统设计 353 8.3.1 系统目标 353 8.3.2 系统功能结构 354 8.3.3 业务流程图 355 8.3.4 系统预览 355 8.3.5 构建开发环境 356 8.3.6 文件夹组织结构 358 8.4 数据库设计 359 8.4.1 数据库需求分析 359 8.4.2 数据库概念设计 359 8.4.3 数据库逻辑结构设计 360 8.5 公共模块设计 361 8.5.1 定义connsqlserver类 361 8.5.2 创建Web应用过滤器 363 8.5.3 构建转码类 365 8.6 网站首页设计 365 8.6.1 首页概述 365 8.6.2 首页技术分析 365 8.6.3 首页的实现过程 367 8.7 商品介绍模块设计 369 8.7.1 商品介绍模块概述 369 8.7.2 商品介绍模块技术分析 369 8.7.3 商品介绍模块实现过程 370 8.8 后台登录模块设计 371 8.8.1 后台登录模块概述 371 8.8.2 后台登录模块技术分析 372 8.8.3 后台登录模块实现过程 373 8.8.4 单元测试 375 8.9 商品管理模块设计 376 8.9.1 商品管理模块概述 376 8.9.2 商品管理模块技术分析 377 8.9.3 商品管理模块实现过程 378 8.9.4 单元测试 388 8.10 新闻管理模块设计 389 8.10.1 新闻管理模块概述 389 8.10.2 新闻管理模块技术分析 389 8.10.3 新闻管理模块实现过程 391 8.11 开发技巧与难点分析 397 8.11.1 页面弹出窗口控制 397 8.11.2 FileUpload组件获取表单
中
的值 399 8.11.3 配置全局Tomcat连接池 399 8.12 Proxool连接池 400 8.12.1 Proxool安装 400 8.12.2 Proxool使用 400 8.13 本章总结 402 第9章 BBS系统(
Struts
+MySQL实现) 403 教学视频:1小时46分 9.1 开发背景 404 9.2 需求分析 404 9.3 系统设计 404 9.3.1 系统目标 404 9.3.2 系统功能结构 405 9.3.3 业务流程图 405 9.3.4 系统预览 406 9.3.5 构建开发环境 407 9.3.6 文件夹组织结构 408 9.4 数据库设计 409 9.4.1 数据库分析 409 9.4.2 数据库概念设计 409 9.4.3 PowerDesigner数据库建模 410 9.4.4 创建数据库 411 9.5 论坛首页设计 412 9.5.1 创建首页视图组件 412 9.5.2 创建首页配置文件 416 9.5.3 创建首页控制器 416 9.5.4 创建首页业务逻辑类 417 9.6 公共模块设计 419 9.6.1 数据库连接 419 9.6.2 配置消息资源文件 422 9.6.3 创建转码类 423 9.7 用户登录模块设计 424 9.7.1 用户登录概述 424 9.7.2 用户登录技术分析 424 9.7.3 用户登录实现过程 425 9.7.4 单元测试 429 9.8 用户注册模块设计 430 9.8.1 用户注册概述 430 9.8.2 用户注册技术分析 430 9.8.3 用户注册实现过程 430 9.9 用户发布主题模块设计 436 9.9.1 发布主题概述 436 9.9.2 发布主题技术分析 437 9.9.3 发布主题实现过程 437 9.9.4 单元测试 443 9.10 后台栏目管理模块设计 445 9.10.1 栏目管理概述 445 9.10.2 栏目管理技术分析 446 9.10.3 栏目管理实现过程 446 9.11 开发技巧与难点分析 449 9.12
Struts
框架与日志 450 9.13 本章总结 452 第10章 手机网络游戏(J2ME+Servlet 实现) 453 教学视频:1小时15分 10.1 开发背景 454 10.2 系统分析 454 10.2.1 需求分析 454 10.2.2 可行性分析 454 10.3 系统设计 454 10.3.1 系统目标 454 10.3.2 系统功能结构 455 10.3.3 构建开发环境(根据语言的实际 情况写) 455 10.3.4 系统预览 456 10.3.5 文件夹组织结构 457 10.4 主程序设计 458 10.5 公共模块设计 462 10.5.1 创建Player公共类 462 10.5.2 创建Queue公共类 463 10.5.3 创建Umpire公共类 465 10.5.4 创建Desk公共类 466 10.6 游戏模块设计 469 10.6.1 游戏模块概述 469 10.6.2 游戏模块技术分析 470 10.6.3 棋盘绘制模块实现过程 470 10.6.4 按键处理模块实现过程 478 10.6.5 游戏信息处理模块实现过程 481 10.6.6 客户端信息处理模块概述 483 10.7 服务器模块设计 484 10.7.1 服务器模块概述 484 10.7.2 服务器模块技术分析 485 10.7.3 服务器模块实现过程 485 10.7.4 单元测试 490 10.8 发布与运行 491 10.8.1 服务器端的发布与运行 491 10.8.2 客户端的运行 493 10.9 开发技巧与难点分析 493 10.10 使用EclipseMe工具编写 手机程序 494 10.10.1 EclipseMe的安装 494 10.10.2 配置EclipseMe插件 495 10.10.3 创建J2ME项目 496 10.11 本章总结 497
Struts
2
正则表达式
校验总结
Struts
2
正则表达式
校验总结
Java EE
67,513
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章