java 日期时间处理的工具类实例源码



java 日期时间处理的工具类实例源码。

1.package com.util;

2.

3.import java.text.ParseException;

4.import java.text.ParsePosition;

5.import java.text.SimpleDateFormat;

6.import java.util.Calendar;

7.import java.util.Date;

8.import java.util.GregorianCalendar;

9.

10.import org.apache.commons.lang.StringUtils;

11.import org.apache.log4j.Logger;

12.

13.

14./**

15. * 日期处理工具类

16. * @author dylan_xu

17. * @date Mar 11, 2012

18. * @modified by

19. * @modified date

20. * @since JDK1.6

21. * @see com.util.DateUtil

22. */

23.

24.public class DateUtil {

25. // ~ Static fields/initializers

26. // =============================================

27.

28. private static Logger logger = Logger.getLogger(DateUtil.class);

29. private static String defaultDatePattern = null;

30. private static String timePattern = “HH:mm”;

31. private static Calendar cale = Calendar.getInstance();

32. public static final String TS_FORMAT = DateUtil.getDatePattern() + ” HH:mm:ss.S”;

33. /** 日期格式yyyy-MM字符串常量 */

34. private static final String MONTH_FORMAT = “yyyy-MM”;

35. /** 日期格式yyyy-MM-dd字符串常量 */

36. private static final String DATE_FORMAT = “yyyy-MM-dd”;

37. /** 日期格式HH:mm:ss字符串常量 */

38. private static final String HOUR_FORMAT = “HH:mm:ss”;

39. /** 日期格式yyyy-MM-dd HH:mm:ss字符串常量 */

40. private static final String DATETIME_FORMAT = “yyyy-MM-dd HH:mm:ss”;

41. /** 某天开始时分秒字符串常量 00:00:00 */

42. private static final String DAY_BEGIN_STRING_HHMMSS = ” 00:00:00″;

43. /** 某天结束时分秒字符串常量 23:59:59 */

44. public static final String DAY_END_STRING_HHMMSS = ” 23:59:59″;

45. private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT);

46. private static SimpleDateFormat sdf_hour_format = new SimpleDateFormat(HOUR_FORMAT);

47. private static SimpleDateFormat sdf_datetime_format = new SimpleDateFormat(DATETIME_FORMAT);

48.

49.

50. // ~ Methods

51. // ================================================================

52.

53. public DateUtil() {

54. }

55.

56. /**

57. * 获得服务器当前日期及时间,以格式为:yyyy-MM-dd HH:mm:ss的日期字符串形式返回

58. * @author dylan_xu

59. * @date Mar 11, 2012

60. * @return

61. */

62. public static String getDateTime() {

63. try {

64. return sdf_datetime_format.format(cale.getTime());

65. } catch (Exception e) {

66. logger.debug(“DateUtil.getDateTime():” + e.getMessage());

67. return “”;

68. }

69. }

70.

71. /**

72. * 获得服务器当前日期,以格式为:yyyy-MM-dd的日期字符串形式返回

73. * @author dylan_xu

74. * @date Mar 11, 2012

75. * @return

76. */

77. public static String getDate() {

78. try {

79. return sdf_date_format.format(cale.getTime());

80. } catch (Exception e) {

81. logger.debug(“DateUtil.getDate():” + e.getMessage());

82. return “”;

83. }

84. }

85.

86. /**

87. * 获得服务器当前时间,以格式为:HH:mm:ss的日期字符串形式返回

88. * @author dylan_xu

89. * @date Mar 11, 2012

90. * @return

91. */

92. public static String getTime() {

93. String temp = ” “;

94. try {

95. temp += sdf_hour_format.format(cale.getTime());

96. return temp;

97. } catch (Exception e) {

98. logger.debug(“DateUtil.getTime():” + e.getMessage());

99. return “”;

100. }

101. }

102.

103. /**

104. * 统计时开始日期的默认值

105. * @author dylan_xu

106. * @date Mar 11, 2012

107. * @return

108. */

109. public static String getStartDate() {

110. try {

111. return getYear() + “-01-01″;

112. } catch (Exception e) {

113. logger.debug(“DateUtil.getStartDate():” + e.getMessage());

114. return “”;

115. }

116. }

117.

118. /**

119. * 统计时结束日期的默认值

120. * @author dylan_xu

121. * @date Mar 11, 2012

122. * @return

123. */

124. public static String getEndDate() {

125. try {

126. return getDate();

127. } catch (Exception e) {

128. logger.debug(“DateUtil.getEndDate():” + e.getMessage());

129. return “”;

130. }

131. }

132.

133. /**

134. * 获得服务器当前日期的年份

135. * @author dylan_xu

136. * @date Mar 11, 2012

137. * @return

138. */

139. public static String getYear() {

140. try {

141. return String.valueOf(cale.get(Calendar.YEAR));

142. } catch (Exception e) {

143. logger.debug(“DateUtil.getYear():” + e.getMessage());

144. return “”;

145. }

146. }

147.

148. /**

149. * 获得服务器当前日期的月份

150. * @author dylan_xu

151. * @date Mar 11, 2012

152. * @return

153. */

154. public static String getMonth() {

155. try {

156. java.text.DecimalFormat df = new java.text.DecimalFormat();

157. df.applyPattern(“00;00″);

158. return df.format((cale.get(Calendar.MONTH) + 1));

159. } catch (Exception e) {

160. logger.debug(“DateUtil.getMonth():” + e.getMessage());

161. return “”;

162. }

163. }

164.

165. /**

166. * 获得服务器在当前月中天数

167. * @author dylan_xu

168. * @date Mar 11, 2012

169. * @return

170. */

171. public static String getDay() {

172. try {

173. return String.valueOf(cale.get(Calendar.DAY_OF_MONTH));

174. } catch (Exception e) {

175. logger.debug(“DateUtil.getDay():” + e.getMessage());

176. return “”;

177. }

178. }

179.

180. /**

181. * 比较两个日期相差的天数

182. * @author dylan_xu

183. * @date Mar 11, 2012

184. * @param date1

185. * @param date2

186. * @return

187. */

188. public static int getMargin(String date1, String date2) {

189. int margin;

190. try {

191. ParsePosition pos = new ParsePosition(0);

192. ParsePosition pos1 = new ParsePosition(0);

193. Date dt1 = sdf_date_format.parse(date1, pos);

194. Date dt2 = sdf_date_format.parse(date2, pos1);

195. long l = dt1.getTime() – dt2.getTime();

196. margin = (int) (l / (24 * 60 * 60 * 1000));

197. return margin;

198. } catch (Exception e) {

199. logger.debug(“DateUtil.getMargin():” + e.toString());

200. return 0;

201. }

202. }

203.

204. /**

205. * 比较两个日期相差的天数

206. * @author dylan_xu

207. * @date Mar 11, 2012

208. * @param date1

209. * @param date2

210. * @return

211. */

212. public static double getDoubleMargin(String date1, String date2) {

213. double margin;

214. try {

215. ParsePosition pos = new ParsePosition(0);

216. ParsePosition pos1 = new ParsePosition(0);

217. Date dt1 = sdf_datetime_format.parse(date1, pos);

218. Date dt2 = sdf_datetime_format.parse(date2, pos1);

219. long l = dt1.getTime() – dt2.getTime();

220. margin = (l / (24 * 60 * 60 * 1000.00));

221. return margin;

222. } catch (Exception e) {

223. logger.debug(“DateUtil.getMargin():” + e.toString());

224. return 0;

225. }

226. }

227.

228. /**

229. * 比较两个日期相差的月数

230. * @author dylan_xu

231. * @date Mar 11, 2012

232. * @param date1

233. * @param date2

234. * @return

235. */

236. public static int getMonthMargin(String date1, String date2) {

237. int margin;

238. try {

239. margin = (Integer.parseInt(date2.substring(0, 4)) – Integer.parseInt(date1.substring(0, 4))) * 12;

240. margin += (Integer.parseInt(date2.substring(4, 7).replaceAll(“-0″,

241. “-”)) – Integer.parseInt(date1.substring(4, 7).replaceAll(“-0″, “-”)));

242. return margin;

243. } catch (Exception e) {

244. logger.debug(“DateUtil.getMargin():” + e.toString());

245. return 0;

246. }

247. }

248.

249. /**

250. * 返回日期加X天后的日期

251. * @author dylan_xu

252. * @date Mar 11, 2012

253. * @param date

254. * @param i

255. * @return

256. */

257. public static String addDay(String date, int i) {

258. try {

259. GregorianCalendar gCal = new GregorianCalendar(

260. Integer.parseInt(date.substring(0, 4)),

261. Integer.parseInt(date.substring(5, 7)) – 1,

262. Integer.parseInt(date.substring(8, 10)));

263. gCal.add(GregorianCalendar.DATE, i);

264. return sdf_date_format.format(gCal.getTime());

265. } catch (Exception e) {

266. logger.debug(“DateUtil.addDay():” + e.toString());

267. return getDate();

268. }

269. }

270.

271. /**

272. * 返回日期加X月后的日期

273. * @author dylan_xu

274. * @date Mar 11, 2012

275. * @param date

276. * @param i

277. * @return

278. */

279. public static String addMonth(String date, int i) {

280. try {

281. GregorianCalendar gCal = new GregorianCalendar(

282. Integer.parseInt(date.substring(0, 4)),

283. Integer.parseInt(date.substring(5, 7)) – 1,

284. Integer.parseInt(date.substring(8, 10)));

285. gCal.add(GregorianCalendar.MONTH, i);

286. return sdf_date_format.format(gCal.getTime());

287. } catch (Exception e) {

288. logger.debug(“DateUtil.addMonth():” + e.toString());

289. return getDate();

290. }

291. }

292.

293. /**

294. * 返回日期加X年后的日期

295. * @author dylan_xu

296. * @date Mar 11, 2012

297. * @param date

298. * @param i

299. * @return

300. */

301. public static String addYear(String date, int i) {

302. try {

303. GregorianCalendar gCal = new GregorianCalendar(

304. Integer.parseInt(date.substring(0, 4)),

305. Integer.parseInt(date.substring(5, 7)) – 1,

306. Integer.parseInt(date.substring(8, 10)));

307. gCal.add(GregorianCalendar.YEAR, i);

308. return sdf_date_format.format(gCal.getTime());

309. } catch (Exception e) {

310. logger.debug(“DateUtil.addYear():” + e.toString());

311. return “”;

312. }

313. }

314.

315. /**

316. * 返回某年某月中的最大天

317. * @author dylan_xu

318. * @date Mar 11, 2012

319. * @param year

320. * @param month

321. * @return

322. */

323. public static int getMaxDay(int iyear, int imonth) {

324. int day = 0;

325. try {

326. if (imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7

327. || imonth == 8 || imonth == 10 || imonth == 12) {

328. day = 31;

329. } else if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) {

330. day = 30;

331. } else if ((0 == (iyear % 4)) && (0 != (iyear % 100)) || (0 == (iyear % 400))) {

332. day = 29;

333. } else {

334. day = 28;

335. }

336. return day;

337. } catch (Exception e) {

338. logger.debug(“DateUtil.getMonthDay():” + e.toString());

339. return 1;

340. }

341. }

342.

343. /**

344. * 格式化日期

345. * @author dylan_xu

346. * @date Mar 11, 2012

347. * @param orgDate

348. * @param Type

349. * @param Span

350. * @return

351. */

352. @SuppressWarnings(“static-access”)

353. public String rollDate(String orgDate, int Type, int Span) {

354. try {

355. String temp = “”;

356. int iyear, imonth, iday;

357. int iPos = 0;

358. char seperater = ‘-’;

359. if (orgDate == null || orgDate.length() < 6) {

360. return “”;

361. }

362.

363. iPos = orgDate.indexOf(seperater);

364. if (iPos > 0) {

365. iyear = Integer.parseInt(orgDate.substring(0, iPos));

366. temp = orgDate.substring(iPos + 1);

367. } else {

368. iyear = Integer.parseInt(orgDate.substring(0, 4));

369. temp = orgDate.substring(4);

370. }

371.

372. iPos = temp.indexOf(seperater);

373. if (iPos > 0) {

374. imonth = Integer.parseInt(temp.substring(0, iPos));

375. temp = temp.substring(iPos + 1);

376. } else {

377. imonth = Integer.parseInt(temp.substring(0, 2));

378. temp = temp.substring(2);

379. }

380.

381. imonth–;

382. if (imonth < 0 || imonth > 11) {

383. imonth = 0;

384. }

385.

386. iday = Integer.parseInt(temp);

387. if (iday < 1 || iday > 31)

388. iday = 1;

389.

390. Calendar orgcale = Calendar.getInstance();

391. orgcale.set(iyear, imonth, iday);

392. temp = this.rollDate(orgcale, Type, Span);

393. return temp;

394. } catch (Exception e) {

395. return “”;

396. }

397. }

398.

399. public static String rollDate(Calendar cal, int Type, int Span) {

400. try {

401. String temp = “”;

402. Calendar rolcale;

403. rolcale = cal;

404. rolcale.add(Type, Span);

405. temp = sdf_date_format.format(rolcale.getTime());

406. return temp;

407. } catch (Exception e) {

408. return “”;

409. }

410. }

411.

412. /**

413. * 返回默认的日期格式

414. * @author dylan_xu

415. * @date Mar 11, 2012

416. * @return

417. */

418. public static synchronized String getDatePattern() {

419. defaultDatePattern = “yyyy-MM-dd”;

420. return defaultDatePattern;

421. }

422.

423. /**

424. * 将指定日期按默认格式进行格式代化成字符串后输出如:yyyy-MM-dd

425. * @author dylan_xu

426. * @date Mar 11, 2012

427. * @param aDate

428. * @return

429. */

430. public static final String getDate(Date aDate) {

431. SimpleDateFormat df = null;

432. String returnValue = “”;

433. if (aDate != null) {

434. df = new SimpleDateFormat(getDatePattern());

435. returnValue = df.format(aDate);

436. }

437. return (returnValue);

438. }

439.

440. /**

441. * 取得给定日期的时间字符串,格式为当前默认时间格式

442. * @author dylan_xu

443. * @date Mar 11, 2012

444. * @param theTime

445. * @return

446. */

447. public static String getTimeNow(Date theTime) {

448. return getDateTime(timePattern, theTime);

449. }

450.

451. /**

452. * 取得当前时间的Calendar日历对象

453. * @author dylan_xu

454. * @date Mar 11, 2012

455. * @return

456. * @throws ParseException

457. */

458. public Calendar getToday() throws ParseException {

459. Date today = new Date();

460. SimpleDateFormat df = new SimpleDateFormat(getDatePattern());

461. String todayAsString = df.format(today);

462. Calendar cal = new GregorianCalendar();

463. cal.setTime(convertStringToDate(todayAsString));

464. return cal;

465. }

466.

467. /**

468. * 将日期类转换成指定格式的字符串形式

469. * @author dylan_xu

470. * @date Mar 11, 2012

471. * @param aMask

472. * @param aDate

473. * @return

474. */

475. public static final String getDateTime(String aMask, Date aDate) {

476. SimpleDateFormat df = null;

477. String returnValue = “”;

478.

479. if (aDate == null) {

480. logger.error(“aDate is null!”);

481. } else {

482. df = new SimpleDateFormat(aMask);

483. returnValue = df.format(aDate);

484. }

485. return (returnValue);

486. }

487.


488. /**

489. * 将指定的日期转换成默认格式的字符串形式

490. * @author dylan_xu

491. * @date Mar 11, 2012

492. * @param aDate

493. * @return

494. */

495. public static final String convertDateToString(Date aDate) {

496. return getDateTime(getDatePattern(), aDate);

497. }

498.

499. /**

500. * 将日期字符串按指定格式转换成日期类型

501. * @author dylan_xu

502. * @date Mar 11, 2012

503. * @param aMask 指定的日期格式,如:yyyy-MM-dd

504. * @param strDate 待转换的日期字符串

505. * @return

506. * @throws ParseException

507. */

508. public static final Date convertStringToDate(String aMask, String strDate)

509. throws ParseException {

510. SimpleDateFormat df = null;

511. Date date = null;

512. df = new SimpleDateFormat(aMask);

513.

514. if (logger.isDebugEnabled()) {

515. logger.debug(“converting ‘” + strDate + “‘ to date with mask ‘” + aMask + “‘”);

516. }

517. try {

518. date = df.parse(strDate);

519. } catch (ParseException pe) {

520. logger.error(“ParseException: ” + pe);

521. throw pe;

522. }

523. return (date);

524. }

525.

526. /**

527. * 将日期字符串按默认格式转换成日期类型

528. * @author dylan_xu

529. * @date Mar 11, 2012

530. * @param strDate

531. * @return

532. * @throws ParseException

533. */

534. public static Date convertStringToDate(String strDate)

535. throws ParseException {

536. Date aDate = null;

537.

538. try {

539. if (logger.isDebugEnabled()) {

540. logger.debug(“converting date with pattern: ” + getDatePattern());

541. }

542. aDate = convertStringToDate(getDatePattern(), strDate);

543. } catch (ParseException pe) {

544. logger.error(“Could not convert ‘” + strDate + “‘ to a date, throwing exception”);

545. throw new ParseException(pe.getMessage(), pe.getErrorOffset());

546. }

547. return aDate;

548. }

549.

550. /**

551. * 返回一个JAVA简单类型的日期字符串

552. * @author dylan_xu

553. * @date Mar 11, 2012

554. * @return

555. */

556. public static String getSimpleDateFormat() {

557. SimpleDateFormat formatter = new SimpleDateFormat();

558. String NDateTime = formatter.format(new Date());

559. return NDateTime;

560. }

561.

562. /**

563. * 将指定字符串格式的日期与当前时间比较

564. * @author DYLAN

565. * @date Feb 17, 2012

566. * @param strDate 需要比较时间

567. * @return

568. * <p>

569. * int code

570. * <ul>

571. * <li>-1 当前时间 < 比较时间 </li>

572. * <li> 0 当前时间 = 比较时间 </li>

573. * <li>>=1当前时间 > 比较时间 </li>

574. * </ul>

575. * </p>

576. */

577. public static int compareToCurTime (String strDate) {

578. if (StringUtils.isBlank(strDate)) {

579. return -1;

580. }

581. Date curTime = cale.getTime();

582. String strCurTime = null;

583. try {

584. strCurTime = sdf_datetime_format.format(curTime);

585. } catch (Exception e) {

586. if (logger.isDebugEnabled()) {

587. logger.debug(“[Could not format '" + strDate + "' to a date, throwing exception:" + e.getLocalizedMessage() + "]“);

588. }

589. }

590. if (StringUtils.isNotBlank(strCurTime)) {

591. return strCurTime.compareTo(strDate);

592. }

593. return -1;

594. }

595.

596. /**

597. * 为查询日期添加最小时间

598. *

599. * @param 目标类型Date

600. * @param 转换参数Date

601. * @return

602. */

603. @SuppressWarnings(“deprecation”)

604. public static Date addStartTime(Date param) {

605. Date date = param;

606. try {

607. date.setHours(0);

608. date.setMinutes(0);

609. date.setSeconds(0);

610. return date;

611. } catch (Exception ex) {

612. return date;

613. }

614. }

615.

616. /**

617. * 为查询日期添加最大时间

618. *

619. * @param 目标类型Date

620. * @param 转换参数Date

621. * @return

622. */

623. @SuppressWarnings(“deprecation”)

624. public static Date addEndTime(Date param) {

625. Date date = param;

626. try {

627. date.setHours(23);

628. date.setMinutes(59);

629. date.setSeconds(0);

630. return date;

631. } catch (Exception ex) {

632. return date;

633. }

634. }

635.

636. /**

637. * 返回系统现在年份中指定月份的天数

638. *

639. * @param 月份month

640. * @return 指定月的总天数

641. */

642. @SuppressWarnings(“deprecation”)

643. public static String getMonthLastDay(int month) {

644. Date date = new Date();

645. int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },

646. { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

647. int year = date.getYear() + 1900;

648. if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

649. return day[1][month] + “”;

650. } else {

651. return day[0][month] + “”;

652. }

653. }

654.

655. /**

656. * 返回指定年份中指定月份的天数

657. *

658. * @param 年份year

659. * @param 月份month

660. * @return 指定月的总天数

661. */

662. public static String getMonthLastDay(int year, int month) {

663. int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },

664. { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

665. if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

666. return day[1][month] + “”;

667. } else {

668. return day[0][month] + “”;

669. }

670. }

671.

672. /**

673. * 判断是平年还是闰年

674. * @author dylan_xu

675. * @date Mar 11, 2012

676. * @param year

677. * @return

678. */

679. public static boolean isLeapyear(int year) {

680. if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) {

681. return true;

682. } else {

683. return false;

684. }

685. }

686.

687. /**

688. * 取得当前时间的日戳

689. * @author dylan_xu

690. * @date Mar 11, 2012

691. * @return

692. */

693. @SuppressWarnings(“deprecation”)

694. public static String getTimestamp() {

695. Date date = cale.getTime();

696. String timestamp = “” + (date.getYear() + 1900) + date.getMonth()

697. + date.getDate() + date.getMinutes() + date.getSeconds()

698. + date.getTime();

699. return timestamp;

700. }

701.

702. /**

703. * 取得指定时间的日戳

704. *

705. * @return

706. */

707. @SuppressWarnings(“deprecation”)

708. public static String getTimestamp(Date date) {

709. String timestamp = “” + (date.getYear() + 1900) + date.getMonth()

710. + date.getDate() + date.getMinutes() + date.getSeconds()

711. + date.getTime();

712. return timestamp;

713. }

714.

715. public static void main(String[] args) {

716. System.out.println(getYear() + “|” + getMonth() + “|” + getDate());

717. }

718.}

 

 

 

 

 

附上100%完整的系统项目源码:

 

 

 

JSP图书馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97e.html

 

 

 

 

 

 

 

JSP酒店宾馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97m.html

 

 

 

 

 

 

 

JSP学生信息管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97r.html

 

 

 

 

 

 

 

 

 

 

 

JSP房屋出售租赁管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a98c.html

 

 

 

 

 

 

 

J2EE酒店在线预订系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97v.html

 

 

 

 

 

 

 

SSH/J2EE人力资源管理系统:http://blog.sina.com.cn/s/blog_4b5bc01101019ztu.html

 

 

 

 

 

 

 

ssh2图书管理系统(图书馆管理系统): http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html

 

 

 

 

 

 

 

毕业设计-JSP图书馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a979.html

 

 

 

 

 

 

 

毕业设计-JSP酒店宾馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97z.html

 

 

 

 

 

 

 

毕业设计-JSP学生信息管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a987.html

 

 

 

 

 

 

 

毕业设计-JSP房屋出售租赁管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a98a.html

 

 

 

 

 

 

 

毕业设计-s2sh/j2ee图书管理系统 :http://blog.sina.com.cn/s/blog_4b5bc0110101ain5.html

 

 

 

 

 

 

 

ssh2图书管理系统(图书馆管理系统):http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html

 

 

 

 

 

 

 

毕业设计-jsp信息发布系统(信息供求网站系统):http://blog.sina.com.cn/s/blog_4b5bc0110101aiou.html

 

 

 

 

 

 

 

struts2+servlet+jsp信息发布系统:http://blog.sina.com.cn/s/blog_4b5bc0110101aiop.html

 

 

 

 

 

 

 

毕业设计-jsp电子商城 网上商城系统:http://blog.sina.com.cn/s/blog_4b5bc0110101aiof.html

 

 

 

 

 

 

 

jsp电子商城 网上商城系统(struts+servlet+jsp):http://blog.sina.com.cn/s/blog_4b5bc0110101aio9.html

 

 

 

 

 

 

 

毕业设计-图书管理系统 jsp图书馆系统Struts2+Spring+Ibatis+extjs(ssi):

 

 

 

http://blog.sina.com.cn/s/blog_4b5bc0110101ainu.html

 

 

 

 

 

 

 

Struts2+Spring+Ibatis+extjs(ssi)图书管理系统 jsp图书馆系统:

 

 

 

http://blog.sina.com.cn/s/blog_4b5bc0110101ainh.html

 

 

 

 

 

 

 

ssh2图书管理系统(图书馆管理系统):http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html

 

 

 

 

 

 

 

毕业设计-s2sh/j2ee图书管理系统 struts2+spring+hibernate:

 

 

 

http://blog.sina.com.cn/s/blog_4b5bc0110101ain5.html

 

 

 

 

 

 

 

jsp酒店在线预订系统 酒店客房预定系统:http://blog.sina.com.cn/s/blog_4b5bc0110101atb8.html

 

 

 

 

 

 

 

毕业设计 jsp酒店在线预订系统 酒店客房预定系统:http://blog.sina.com.cn/s/blog_4b5bc0110101atbb.html

 

 

 

 

 

 

 

人力资源管理系统 S2SH/J2EE/JAVA:http://blog.sina.com.cn/s/blog_4b5bc0110101azoz.html

 

 

 

 

 

 

 

毕业设计-人力资源管理系统 S2SH/J2EE/JSP:http://blog.sina.com.cn/s/blog_4b5bc0110101azp0.html

 

 

 

 

 

 

 

ssh网上商城 电子商城struts hibernate :http://blog.sina.com.cn/s/blog_4b5bc0110101b5gr.html

 

 

 

 

 

 

 

毕业设计 ssh网上商城 电子商城struts hibernate:http://blog.sina.com.cn/s/blog_4b5bc0110101b5h2.html

 

 

 

 

 

 

 

毕业设计 ssh电子相册管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101bkbl.html

 

 

 

 

 

 

 

实用技术:

 

 

 

J2EE/JSP应用技术70实例(源码)(实用): http://blog.sina.com.cn/s/blog_4b5bc0110101acms.html

 

http://bjtdeyx.iteye.com/blog/1551946