1、框架

  strusts2 + Hibernate + spring

2、图片

  

    图1-1 网站结构

  

    图1-2 java代码结构

3、源代码

3.1 UserAction.java

  1. package com.xhu.action;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. import javax.annotation.Resource;
  7.  
  8. import net.sf.json.JSONObject;
  9. import net.sf.json.JsonConfig;
  10.  
  11. import org.apache.struts2.interceptor.SessionAware;
  12.  
  13. import org.springframework.context.annotation.Scope;
  14. import org.springframework.stereotype.Component;
  15.  
  16. import com.opensymphony.xwork2.ActionSupport;
  17.  
  18. import com.xhu.DTO.PwdDto;
  19. import com.xhu.model.Place;
  20. import com.xhu.model.User;
  21. import com.xhu.model.UserType;
  22. import com.xhu.model.PageResultSet;
  23. import com.xhu.service.PlaceManager;
  24. import com.xhu.service.UserManager;
  25. import com.xhu.util.MD5;
  26.  
  27. @Component("userAction")
  28. @Scope("prototype")
  29. public class UserAction extends ActionSupport implements SessionAware {
  30. /**
  31. *
  32. */
  33. private static final long serialVersionUID = 2566144909692829328L;
  34. /**
  35. *
  36. */
  37. private UserManager userManager;
  38. private User user;
  39. private String province;
  40. private String city;
  41. private String county;
  42. private PlaceManager placeManager;
  43. private final String NOCHOOSE = "--请选择--";
  44. private static final int pageSize = 10;
  45.  
  46. private int currentPage; // 接受传递的页码参数
  47. private PageResultSet<User> pageResultSet;
  48. private String keyWord; // 分页查询时的关键字
  49.  
  50. private Map<String, Object> session;
  51.  
  52. private String prePage; // 登录前要访问的页面
  53.  
  54. // 返回的字符串提示信息
  55. private String returnStr;
  56. private String userPwd;// 密码
  57.  
  58. private String jsonStr;// 接受从视图传过来的json字符串
  59. private long userId; // 用户的流水号
  60.  
  61. private int myPageSize = 5; // 从视图中传过来的pageSize, 默认值为5
  62.  
  63. /**
  64. * 修改用户密码
  65. *
  66. * @return
  67. */
  68. public String changePwd() {
  69. PwdDto pwdDto = null;
  70. int result = -1;
  71. try {
  72. JSONObject js = JSONObject.fromObject(jsonStr);
  73. pwdDto = (PwdDto) JSONObject.toBean((JSONObject) js, PwdDto.class);
  74. } catch (Exception e) {
  75. // TODO Auto-generated catch block
  76. e.printStackTrace();
  77. }
  78. if (pwdDto != null) {
  79. try {
  80. result = this.userManager.doChangePwd(pwdDto.getUserId(),
  81. pwdDto.getOldPwd(), pwdDto.getNewPwd());
  82. } catch (Exception e) {
  83. // TODO Auto-generated catch block
  84. e.printStackTrace();
  85. }
  86. }
  87. Map<String, String> myMap = new HashMap<String, String>();
  88. myMap.put("changePwdResult", "" + result);
  89. JSONObject js = JSONObject.fromObject(myMap);
  90. this.returnStr = js.toString();
  91. return SUCCESS;
  92. }
  93.  
  94. /**
  95. * 显示新增用户
  96. *
  97. * @return
  98. */
  99. public String ajaxNewFixed() {
  100. try {
  101. this.pageResultSet = this.userManager.newAddFixed(myPageSize,
  102. this.currentPage);
  103. Map<String, Object> myMap = new HashMap<String, Object>();
  104. myMap.put("currentPage", ""
  105. + this.pageResultSet.getPageInfo().getCurrentPage());
  106. myMap.put("totalPage", ""
  107. + this.pageResultSet.getPageInfo().getTotalPage());
  108. myMap.put("list", this.pageResultSet.getList());
  109. JsonConfig jsonConfig = new JsonConfig();
  110. jsonConfig.setExcludes(new String[] { "cars" });
  111. JSONObject js = JSONObject.fromObject(myMap, jsonConfig);
  112. returnStr = js.toString();
  113. // System.out.println("Info: userAction - ajaxFenyeQuery - returnStr:"
  114. // + returnStr);
  115. } catch (Exception e) {
  116. // TODO Auto-generated catch block
  117. e.printStackTrace();
  118. }
  119. return SUCCESS;
  120. }
  121.  
  122. /**
  123. * 显示用户信息
  124. *
  125. * @return
  126. */
  127. public String show() {
  128. try {
  129. this.user = this.userManager.getUserById(userId);
  130. } catch (Exception e) {
  131. // TODO Auto-generated catch block
  132. e.printStackTrace();
  133. }
  134. return SUCCESS;
  135. }
  136.  
  137. public String personnalInfo() {
  138.  
  139. String strUserId = (String) session.get("userId");
  140. long myUserId = Long.parseLong(strUserId);
  141. try {
  142. this.user = this.userManager.getUserById(myUserId);
  143. } catch (Exception e) {
  144. // TODO Auto-generated catch block
  145. e.printStackTrace();
  146. }
  147.  
  148. return SUCCESS;
  149. }
  150.  
  151. public String getPrePage() {
  152. return prePage;
  153. }
  154.  
  155. public void setPrePage(String prePage) {
  156. this.prePage = prePage;
  157. }
  158.  
  159. public String getJsonStr() {
  160. return jsonStr;
  161. }
  162.  
  163. public void setJsonStr(String jsonStr) {
  164. this.jsonStr = jsonStr;
  165. }
  166.  
  167. private boolean json2User() {
  168. boolean b = false;
  169. // json 反序列化
  170. try {
  171. JSONObject js = JSONObject.fromObject(jsonStr);
  172. user = (User) JSONObject.toBean((JSONObject) js, User.class);
  173. b = true;
  174. } catch (Exception e) {
  175. // TODO Auto-generated catch block
  176. e.printStackTrace();
  177. }
  178. return b;
  179. }
  180.  
  181. public String getUserPwd() {
  182. return userPwd;
  183. }
  184.  
  185. public void setUserPwd(String userPwd) {
  186. this.userPwd = userPwd;
  187. }
  188.  
  189. public String getReturnStr() {
  190. return returnStr;
  191. }
  192.  
  193. public void setReturnStr(String returnStr) {
  194. this.returnStr = returnStr;
  195. }
  196.  
  197. public UserAction() {
  198. System.out.println("userAction create....");
  199. }
  200.  
  201. public UserManager getUserManager() {
  202. return userManager;
  203. }
  204.  
  205. @Resource
  206. public void setUserManager(UserManager userManager) {
  207. this.userManager = userManager;
  208. }
  209.  
  210. public User getUser() {
  211. return user;
  212. }
  213.  
  214. public void setUser(User user) {
  215. this.user = user;
  216. }
  217.  
  218. /**
  219. * 如果已经登录,则转入到添加用户界面 否则,转入到登录界面
  220. *
  221. * @return
  222. */
  223. public String limit() {
  224. return SUCCESS;
  225. }
  226.  
  227. /**
  228. * 添加用户信息
  229. *
  230. * @return
  231. */
  232. public String add() {
  233. user.getUserTypeNo().setNo(2);
  234. int result = userManager.add(user);
  235. if (result == 1) {
  236. return SUCCESS;
  237. } else {
  238. return ERROR;
  239. }
  240. }
  241.  
  242. public String ajaxAdd() {
  243. // --------提示信息
  244. json2User();
  245. UserType userType = new UserType();
  246. userType.setName("普通用户");
  247. userType.setNo(2);
  248. user.setUserTypeNo(userType);
  249.  
  250. int result = -1;
  251. try {
  252. result = userManager.add(user);
  253. } catch (Exception e) {
  254. // TODO Auto-generated catch block
  255. e.printStackTrace();
  256. }
  257.  
  258. Map<String, String> myMap = new HashMap<String, String>();
  259. if (result == 1) {
  260. // 添加用户成功
  261. myMap.put("addUserFlag", "1");
  262. } else {
  263. // 添加用户不成功!
  264. myMap.put("addUserFlag", "-1");
  265. }
  266. JSONObject js = JSONObject.fromObject(myMap);
  267. this.returnStr = js.toString();
  268. return SUCCESS;
  269. }
  270.  
  271. // 验证用户名是否唯一
  272. public String ajaxVUserAccount() {
  273.  
  274. User u = null;
  275. try {
  276. u = this.userManager.getUserById(userId);
  277. } catch (Exception e) {
  278. // TODO Auto-generated catch block
  279. e.printStackTrace();
  280. }
  281. Map<String, String> myMap = new HashMap<String, String>();
  282.  
  283. if (u == null) {
  284. // 用户名验证通过
  285. myMap.put("vUserAccountFlag", "1");
  286. } else {
  287. // 用户名验证不通过
  288. myMap.put("vUserAccountFlag", "-1");
  289. }
  290. JSONObject js = JSONObject.fromObject(myMap);
  291. this.returnStr = js.toString();
  292.  
  293. return SUCCESS;
  294. }
  295.  
  296. // 修改用户信息
  297. public String ajaxUpdate() {
  298. // ----提示信息
  299. json2User();
  300.  
  301. Map<String, String> myMap = new HashMap<String, String>();
  302. int result = -1;
  303. try {
  304. result = this.userManager.update(user.getId(), user);
  305. result = 1;
  306. } catch (Exception e) {
  307. // TODO Auto-generated catch block
  308. e.printStackTrace();
  309. }
  310. myMap.put("updateUserFlag", "" + result);
  311. JSONObject js = JSONObject.fromObject(myMap);
  312. this.returnStr = js.toString();
  313. return SUCCESS;
  314. }
  315.  
  316. // 根据用户账号删除用户
  317. public String ajaxDelete() {
  318. Map<String, String> myMap = new HashMap<String, String>();
  319. int result = -1;
  320. try {
  321. result = this.userManager.delete(userId);
  322. } catch (Exception e) {
  323. // TODO Auto-generated catch block
  324. e.printStackTrace();
  325. }
  326. myMap.put("deleteUserFlag", "" + result);
  327. JSONObject js = JSONObject.fromObject(myMap);
  328. this.returnStr = js.toString();
  329. return SUCCESS;
  330. }
  331.  
  332. public String getProvince() {
  333. return province;
  334. }
  335.  
  336. public void setProvince(String province) {
  337. this.province = province;
  338. }
  339.  
  340. public String getCity() {
  341. return city;
  342. }
  343.  
  344. public void setCity(String city) {
  345. this.city = city;
  346. }
  347.  
  348. public String getCounty() {
  349. return county;
  350. }
  351.  
  352. public void setCounty(String county) {
  353. this.county = county;
  354. }
  355.  
  356. public PlaceManager getPlaceManager() {
  357. return placeManager;
  358. }
  359.  
  360. @Resource
  361. public void setPlaceManager(PlaceManager placeManager) {
  362. this.placeManager = placeManager;
  363. }
  364.  
  365. /**
  366. * 界面上的地点与数据库的存储之间的转换
  367. *
  368. * @return int 地点编号
  369. */
  370. public Place dealPlace() {
  371. Place place = null;
  372. if (province.equals(this.NOCHOOSE)) {
  373. // 没有选择
  374. place = null;
  375. } else {
  376. if (city.equals(this.NOCHOOSE)) {
  377. // 选择了province
  378. place = this.placeManager.getProvince(province);
  379. } else {
  380. if (county.equals(this.NOCHOOSE)) {
  381. // 选择了province和city
  382. place = this.placeManager.getCity(province, city);
  383. } else {
  384. place = this.placeManager.getCounty(province, city, county);
  385. // 选择了province, city,county
  386. }
  387. }
  388. }
  389. return place;
  390. }
  391.  
  392. /**
  393. * 对于用户的修改的处理
  394. *
  395. * @return
  396. */
  397. public String updatecl() {
  398. UserType userType = this.userManager.getUserTypeByName(user
  399. .getUserTypeNo().getName());
  400. user.setUserTypeNo(userType);
  401. int result = this.userManager.updateByUserAccount(user.getAccount(),
  402. user);
  403. if (result == 1) {
  404. return SUCCESS;
  405. } else if (result == 0) {
  406. return "nouser";
  407. } else {
  408. return ERROR;
  409. }
  410. }
  411.  
  412. /**
  413. * 转入update显示页面
  414. *
  415. * @return
  416. */
  417. public String update() {
  418. try {
  419. this.user = this.userManager.getUserById(userId);
  420. } catch (Exception e) {
  421. // TODO Auto-generated catch block
  422. e.printStackTrace();
  423. }
  424. return SUCCESS;
  425. }
  426.  
  427. public int getCurrentPage() {
  428. return currentPage;
  429. }
  430.  
  431. public void setCurrentPage(int currentPage) {
  432. this.currentPage = currentPage;
  433. }
  434.  
  435. public PageResultSet<User> getPageResultSet() {
  436. return pageResultSet;
  437. }
  438.  
  439. public void setPageResultSet(PageResultSet<User> pageResultSet) {
  440. this.pageResultSet = pageResultSet;
  441. }
  442.  
  443. public String getKeyWord() {
  444. return keyWord;
  445. }
  446.  
  447. public void setKeyWord(String keyWord) {
  448. this.keyWord = keyWord;
  449. }
  450.  
  451. public String fenyeUser() {
  452. this.pageResultSet = this.userManager.queryByPage(5, this.currentPage);
  453. return SUCCESS;
  454. }
  455.  
  456. // ajax分页查询
  457. public String ajaxQuery() {
  458. try {
  459. this.pageResultSet = this.userManager.mhQuery(keyWord, pageSize,
  460. this.currentPage);
  461. System.out.println(this.pageResultSet);
  462. Map<String, Object> myMap = new HashMap<String, Object>();
  463. myMap.put("currentPage", ""
  464. + this.pageResultSet.getPageInfo().getCurrentPage());
  465. myMap.put("totalPage", ""
  466. + this.pageResultSet.getPageInfo().getTotalPage());
  467. myMap.put("list", this.pageResultSet.getList());
  468. JsonConfig jsonConfig = new JsonConfig();
  469. jsonConfig.setExcludes(new String[] { "cars" });
  470. JSONObject js = JSONObject.fromObject(myMap, jsonConfig);
  471. returnStr = js.toString();
  472. // System.out.println("Info: userAction - ajaxFenyeQuery - returnStr:"
  473. // + returnStr);
  474. } catch (Exception e) {
  475. // TODO Auto-generated catch block
  476. e.printStackTrace();
  477. }
  478. return SUCCESS;
  479. }
  480.  
  481. /**
  482. * 对于登录表单进行处理
  483. *
  484. * @return
  485. */
  486. public String loginFixed() {
  487. this.returnStr = "";
  488. User u = this.userManager.getUserByAccount(user.getAccount());
  489. if (u != null) {
  490. // 用户存在
  491. user.setPwd(MD5.getMD5(user.getPwd().getBytes()));
  492. if (u.getPwd().equals(user.getPwd())) {
  493. if (u.getUserTypeNo().getName().equals("管理员")) {
  494. this.returnStr = "不是固定用户";
  495. return "fail";
  496. } else {
  497. session.put("userId", "" + u.getId());
  498. session.put("userAccount", u.getAccount());
  499. session.put("userTypeName", u.getUserTypeNo().getName());
  500. prePage = (String) session.get("prePage");
  501. session.remove("prePage");
  502. if (prePage == null) {
  503. return "index";
  504. }
  505. return SUCCESS;
  506. }
  507. } else {
  508. // 密码不正确
  509. this.returnStr = "密码不正确";
  510. return "fail";
  511. }
  512. } else {
  513. // 用户不存在
  514. this.returnStr = "用户不存在";
  515. return "fail";
  516. }
  517.  
  518. }
  519.  
  520. /**
  521. * 对于登录表单进行处理
  522. *
  523. * @return
  524. */
  525. public String loginAdmin() {
  526. this.returnStr = "";
  527. User u = this.userManager.getUserByAccount(user.getAccount());
  528. if (u != null) {
  529. // 用户存在
  530. user.setPwd(MD5.getMD5(user.getPwd().getBytes()));
  531. if (u.getPwd().equals(user.getPwd())) {
  532. // System.out.println(">>loginCL>prePage:" + prePage);
  533. if (!u.getUserTypeNo().getName().equals("管理员")) {
  534. this.returnStr = "不是管理员用户";
  535. return "fail";
  536. } else {
  537. // 用户登录成功
  538. session.put("userId", "" + u.getId());
  539. session.put("userAccount", u.getAccount());
  540. session.put("userTypeName", u.getUserTypeNo().getName());
  541. prePage = (String) session.get("prePage");
  542. session.remove("prePage");
  543. if (prePage == null) {
  544. return "index";
  545. }
  546. return SUCCESS;
  547. }
  548. } else {
  549. // 密码不正确
  550. this.returnStr = "密码不正确";
  551. return "fail";
  552. }
  553. } else {
  554. // 用户不存在
  555. this.returnStr = "用户不存在";
  556. return "fail";
  557. }
  558.  
  559. }
  560.  
  561. /**
  562. * 用户退出
  563. *
  564. * @return
  565. */
  566. public String logout() {
  567. try {
  568. session.clear();
  569. } catch (Exception e) {
  570. // TODO Auto-generated catch block
  571. e.printStackTrace();
  572. }
  573. return SUCCESS;
  574.  
  575. }
  576.  
  577. /**
  578. * adjax方式用户退出
  579. *
  580. * @return
  581. */
  582. public String ajaxLogout() {
  583.  
  584. Map<String, String> myMap = new HashMap<String, String>();
  585. try {
  586. session.remove("userAccount");
  587. session.remove("userTypeName");
  588. myMap.put("logoutFlag", "1");
  589. } catch (Exception e) {
  590. // TODO Auto-generated catch block
  591. e.printStackTrace();
  592. myMap.put("logoutFlag", "-1");
  593. }
  594. JSONObject js = JSONObject.fromObject(myMap);
  595. returnStr = js.toString();
  596. System.out.println("userAccount-ajaxQuitUser-returnStr:" + returnStr);
  597. return SUCCESS;
  598. }
  599.  
  600. public void setSession(Map<String, Object> session) {
  601. // TODO Auto-generated method stub
  602. this.session = session;
  603. }
  604.  
  605. public long getUserId() {
  606. return userId;
  607. }
  608.  
  609. public void setUserId(long userId) {
  610. this.userId = userId;
  611. }
  612.  
  613. @Override
  614. public String toString() {
  615. return "UserAction [currentPage=" + currentPage + ", jsonStr="
  616. + jsonStr + ", keyWord=" + keyWord + ", prePage=" + prePage
  617. + ", returnStr=" + returnStr + ", user=" + user + ", userId="
  618. + userId + "]";
  619. }
  620.  
  621. public int getMyPageSize() {
  622. return myPageSize;
  623. }
  624.  
  625. public void setMyPageSize(int myPageSize) {
  626. this.myPageSize = myPageSize;
  627. }
  628.  
  629. }

3.2 UserManagerImpl.java

  1. package com.xhu.service.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.annotation.Resource;
  6. import org.springframework.stereotype.Component;
  7.  
  8. import com.xhu.dao.UserDao;
  9. import com.xhu.model.PageInfo;
  10. import com.xhu.model.PageResultSet;
  11. import com.xhu.model.User;
  12. import com.xhu.model.UserDetailInfo;
  13. import com.xhu.model.UserType;
  14. import com.xhu.service.UserManager;
  15. import com.xhu.util.MD5;
  16.  
  17. @Component("userManager")
  18. public class UserManagerImpl implements UserManager {
  19. private UserDao userDao;
  20.  
  21. public UserDao getUserDao() {
  22. return userDao;
  23. }
  24.  
  25. @Resource
  26. public void setUserDao(UserDao userDao) {
  27. this.userDao = userDao;
  28. }
  29.  
  30. /**
  31. * 根据用户的账号,判断用户是否存在
  32. *
  33. * @param User
  34. * user 用户的账号
  35. * @return boolean 如果存在,则返回true, 否则返回false
  36. * @author zhujinrong
  37. */
  38. public boolean exists(String userAccount) {
  39. return userDao.checkUserExistsWithName(userAccount);
  40. }
  41.  
  42. public int add(User user) {
  43. user.setPwd(MD5.getMD5(user.getPwd().getBytes()));
  44. return this.userDao.save(user);
  45. }
  46.  
  47. public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo) {
  48. this.userDao.userDetailSaveOrUpdate(userDetailInfo);
  49. }
  50.  
  51. public int delete(long userId) {
  52. return this.userDao.delete(userId);
  53. }
  54.  
  55. /**
  56. * 修改用户信息
  57. *
  58. * @param user
  59. * 用户信息
  60. * @return void
  61. * @author zhujinrong
  62. */
  63. public int update(long userId, User user) {
  64. return this.userDao.update(userId, user);
  65. }
  66.  
  67. /**
  68. * 返回所有用户的信息
  69. *
  70. * @param void
  71. * @return List<User> 用户列表
  72. * @author zhujinrong
  73. */
  74. public List<User> getAllUsers() {
  75. // TODO Auto-generated method stub
  76. return userDao.getAllusers();
  77. }
  78.  
  79. /**
  80. * 根据用户流水号,返回用户信息
  81. *
  82. * @param int id 用户流水号
  83. * @return User 返回用户信息
  84. * @author zhujinrong
  85. */
  86. public User getUserById(long id) throws Exception {
  87. // TODO Auto-generated method stub
  88. return (User) userDao.getUserById(id);
  89. }
  90.  
  91. /**
  92. * 根据用户的账号,返回用户的信息
  93. *
  94. * @param String
  95. * account 用户账号
  96. * @return User 用户
  97. * @author zhujinrong
  98. */
  99. public User getUserByAccount(String account) {
  100. // TODO Auto-generated method stub
  101. return (User) userDao.getUserByAccount(account);
  102. }
  103.  
  104. public UserDetailInfo getUserDetailInfo(long userId) {
  105. // TODO Auto-generated method stub
  106. return this.userDao.getUserDetailInfo(userId);
  107. }
  108.  
  109. public int updateUserDetail(long userId, UserDetailInfo userDetailInfo) {
  110. // TODO Auto-generated method stub
  111. return this.userDao.updateUserDetail(userId, userDetailInfo);
  112. }
  113.  
  114. public int updateByUserAccount(String userAccount, User user) {
  115. return this.userDao.updateByUserAccount(userAccount, user);
  116. }
  117.  
  118. public UserType getUserTypeByName(String userTypeName) {
  119. // TODO Auto-generated method stub
  120. return this.userDao.getUserTypeByName(userTypeName);
  121. }
  122.  
  123. // 分页获取记录值
  124. public PageResultSet<User> queryByPage(int pageSize, int page) {
  125. String hql = "from User"; // 查询HQL语句
  126. String hql2 = "select count(*) " + hql;
  127. int totalRow = this.userDao.queryRowCount(hql2); // 计算总记录个数
  128. // System.out.println("totalRow:" + totalRow);
  129. PageInfo pageinfo = new PageInfo(totalRow, pageSize, page);
  130. // 获取该页的记录
  131. List<User> list = this.userDao.queryByPage(hql, pageinfo
  132. .getBeginIndex(), pageinfo.getPageSize());
  133. PageResultSet<User> pageResultSet = new PageResultSet<User>();
  134. pageResultSet.setList(list);
  135. pageResultSet.setPageInfo(pageinfo);
  136. return pageResultSet;
  137. }
  138.  
  139. public PageResultSet<User> mhQuery(String keyWord, int pageSize, int page) {
  140. // TODO Auto-generated method stub
  141. int totalRow = this.userDao.mhQueryCount(keyWord); // 计算总记录个数
  142. // System.out.println("totalRow:" + totalRow);
  143. PageInfo pageinfo = new PageInfo(totalRow, pageSize, page);
  144. // 获取该页的记录
  145. List<User> list = null;
  146. if (totalRow > 0) {
  147. list = this.userDao.mhQuery(keyWord, pageinfo.getBeginIndex(),
  148. pageinfo.getPageSize());
  149. }
  150. PageResultSet<User> pageResultSet = new PageResultSet<User>();
  151. pageResultSet.setList(list);
  152. pageResultSet.setPageInfo(pageinfo);
  153. return pageResultSet;
  154. }
  155.  
  156. public PageResultSet<User> newAddFixed(int pageSize, int page) {
  157. // TODO Auto-generated method stub
  158. // TODO Auto-generated method stub
  159. int totalRow = this.userDao.newAddFixedCount(); // 计算总记录个数
  160. // System.out.println("totalRow:" + totalRow);
  161. PageInfo pageInfo = new PageInfo(totalRow, pageSize, page);
  162. // 获取该页的记录
  163. List<User> list = null;
  164. if (totalRow > 0) {
  165. list = this.userDao.newAddFixed(pageInfo.getBeginIndex(), pageInfo
  166. .getPageSize());
  167. }
  168. PageResultSet<User> pageResultSet = new PageResultSet<User>();
  169. pageResultSet.setList(list);
  170. pageResultSet.setPageInfo(pageInfo);
  171. return pageResultSet;
  172. }
  173.  
  174. public int doChangePwd(long userId, String oldPwd, String newPwd)
  175. throws Exception {
  176. // TODO Auto-generated method stub
  177. newPwd = MD5.getMD5(newPwd.getBytes());
  178. oldPwd = MD5.getMD5(oldPwd.getBytes());
  179. return this.userDao.changePwd(userId, oldPwd, newPwd);
  180. }
  181.  
  182. }

3.3 UserManager.java

  1. package com.xhu.service;
  2.  
  3. import java.util.List;
  4.  
  5. import com.xhu.model.PageResultSet;
  6. import com.xhu.model.User;
  7. import com.xhu.model.UserDetailInfo;
  8. import com.xhu.model.UserType;
  9.  
  10. public interface UserManager {
  11.  
  12. public boolean exists(String userAccount);
  13.  
  14. /**
  15. * 添加用户信息
  16. *
  17. * @param user
  18. * @return int -1: 发生异常; 1: 添加用户成功
  19. */
  20. public int add(User user);
  21.  
  22. /**
  23. * 添加用户相信信息
  24. *
  25. * @param userDetailInfo
  26. * @return void
  27. * @author zhujinrong
  28. */
  29. public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo);
  30.  
  31. /**
  32. * 根据用户流水号,获取用户的详细信息
  33. *
  34. * @param userId
  35. * @return
  36. * @author zhujinrong
  37. */
  38. public UserDetailInfo getUserDetailInfo(long userId);
  39.  
  40. /**
  41. * 根据用户流水号,修改用户详细信息
  42. *
  43. * @param userId
  44. * 用户流水号
  45. * @param userDetailInfo
  46. * 用户详细信息
  47. * @return -1:发生异常; 0:用户不存在; 1:修改用户详细信息成功
  48. */
  49. public int updateUserDetail(long userId, UserDetailInfo userDetailInfo);
  50.  
  51. /**
  52. * 根据用户账号,删除用户信息
  53. *
  54. * @param userAccount
  55. * @return int -1: 出现异常,删除不成功 0:用户不存在 1:删除成功!
  56. */
  57. public int delete(long userId);
  58.  
  59. /**
  60. * 根据用户流水号,修改用户信息
  61. *
  62. * @param userId
  63. * 用户流水号
  64. * @param user
  65. * 用户信息
  66. * @return -1 发生异常; 0 用户不存在; 1 修改成功
  67. */
  68. public int update(long userId, User user);
  69.  
  70. public List<User> getAllUsers();
  71.  
  72. public User getUserById(long id) throws Exception;
  73.  
  74. public User getUserByAccount(String account);
  75.  
  76. /**
  77. * 根据用户流水号,修改用户信息
  78. *
  79. * @param userAccount
  80. * string 用户账号
  81. * @param user
  82. * 要修改的用户信息
  83. * @return -1:发生异常; 0: 用户不存在; 1:修改用户信息成功
  84. */
  85. public int updateByUserAccount(String userAccount, User user);
  86.  
  87. /**
  88. * 根据用户类型的名称,返回用户类型对象
  89. *
  90. * @param userTypeName
  91. * String 用户类型名称
  92. * @return UserType 用户类型对象
  93. */
  94. public UserType getUserTypeByName(String userTypeName);
  95.  
  96. // 分页获取记录值
  97. public PageResultSet<User> queryByPage(int pageSize, int page);
  98.  
  99. /**
  100. * 根据要查询的信息,进行模糊查询
  101. *
  102. * @param info
  103. * 要查询的关键字
  104. * @param pageSize
  105. * 页大小
  106. * @param page
  107. * 要查询的页
  108. * @return PageResultSet 页面信息和相关的数据
  109. */
  110. public PageResultSet<User> mhQuery(String keyWord, int pageSize, int page);
  111.  
  112. /**
  113. * 新增固定用户
  114. *
  115. * @param keyWord
  116. * @param pageSize
  117. * @param page
  118. * @return
  119. */
  120. public PageResultSet<User> newAddFixed(int pageSize, int page);
  121.  
  122. /**
  123. * 根据userId, 将用户的密码改为newPwd
  124. *
  125. * @param userId
  126. * @param oldPwd
  127. * @param newPwd
  128. * @return 1:密码修改成功 0:用户原始密码输入不正确, 修改密码不成功 -1:出错了
  129. * @throws Exception
  130. */
  131. public int doChangePwd(long userId, String oldPwd, String newPwd)
  132. throws Exception;
  133.  
  134. }

3.4 UserDaoImpl.java

  1. package com.xhu.dao.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.annotation.Resource;
  6.  
  7. import org.hibernate.HibernateException;
  8. import org.hibernate.Query;
  9. import org.hibernate.Session;
  10. import org.springframework.dao.DataAccessException;
  11. import org.springframework.orm.hibernate3.HibernateTemplate;
  12. import org.springframework.stereotype.Component;
  13. import com.xhu.dao.UserDao;
  14. import com.xhu.model.User;
  15. import com.xhu.model.UserDetailInfo;
  16. import com.xhu.model.UserType;
  17. import com.xhu.util.MD5;
  18.  
  19. @Component("userDao")
  20. public class UserDaoImpl implements UserDao {
  21. private HibernateTemplate hibernateTemplate;
  22.  
  23. public int save(User user) {
  24. // TODO Auto-generated method stub
  25. int result = -1;
  26. try {
  27. hibernateTemplate.save(user);
  28. result = 1;
  29. } catch (DataAccessException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. }
  33. return result;
  34. }
  35.  
  36. public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo) {
  37. this.hibernateTemplate.saveOrUpdate(userDetailInfo);
  38. }
  39.  
  40. @SuppressWarnings("finally")
  41. public int delete(long userId) {
  42. int result = -1;
  43. try {
  44. User user = this.hibernateTemplate.load(User.class, userId);
  45. if (user == null) {
  46. result = 0;
  47. }
  48. this.hibernateTemplate.delete(user);
  49. result = 1;
  50. } catch (DataAccessException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. System.out.println("e.getMessage:" + e.getMessage().toString());
  54. System.out.println("e.hashCode" + e.hashCode());
  55. } finally {
  56. return result;
  57. }
  58. }
  59.  
  60. public int update(long userId, User user) {
  61. int result = -1;
  62. User pu = null;
  63. try {
  64. pu = this.getUserById(userId);
  65. } catch (Exception e) {
  66. // TODO Auto-generated catch block
  67. e.printStackTrace();
  68. }
  69. // System.out.println("userDaoImpl->update:pu:" + pu);
  70. // System.out.println("userDaoImpl->update:user:" + user);
  71.  
  72. if (pu == null) {
  73. result = 0;
  74. return result;
  75. }
  76.  
  77. if (user.getBussinessIntro() != null) {
  78. pu.setBussinessIntro(user.getBussinessIntro());
  79. }
  80.  
  81. if (user.getCellphone() != null) {
  82. pu.setCellphone(user.getCellphone());
  83. }
  84.  
  85. if (user.getUserTypeNo() != null) {
  86. pu.setUserTypeNo(user.getUserTypeNo());
  87. }
  88.  
  89. if (user.getAddress() != null) {
  90. pu.setAddress(user.getAddress());
  91. }
  92.  
  93. if (user.getPwd() != null && !user.getPwd().trim().equals("")) {
  94. user.setPwd(MD5.getMD5(user.getPwd().getBytes()));
  95. pu.setPwd(user.getPwd());
  96. }
  97.  
  98. if (user.getRealName() != null) {
  99. pu.setRealName(user.getRealName());
  100. }
  101.  
  102. if (user.getSex() != null) {
  103. pu.setSex(user.getSex());
  104. }
  105.  
  106. try {
  107. this.hibernateTemplate.update(pu);
  108. result = 1;
  109. } catch (DataAccessException e) {
  110. // TODO Auto-generated catch block
  111. e.printStackTrace();
  112. }
  113. return result;
  114. }
  115.  
  116. /**
  117. * 根据用户的账号判断用户是否存在
  118. *
  119. * @param account
  120. * 用户的账号
  121. * @return boolean 根据用户的账号判断用户是否存在,如果存在则返回true, 否则返回false
  122. * @author zhujinrong
  123. */
  124. @SuppressWarnings("unchecked")
  125. public boolean checkUserExistsWithName(String account) {
  126. boolean b = false;
  127. List<User> users = hibernateTemplate
  128. .find("from User u where u.account='" + account + "'");
  129. if (users != null && users.size() > 0) {
  130. b = true;
  131. }
  132. return b;
  133. }
  134.  
  135. public HibernateTemplate getHibernateTemplate() {
  136. return hibernateTemplate;
  137. }
  138.  
  139. @Resource
  140. public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  141. this.hibernateTemplate = hibernateTemplate;
  142. }
  143.  
  144. /**
  145. * @author zhujinrong
  146. * @param
  147. * @return List 返回用户信息列表
  148. */
  149. @SuppressWarnings("unchecked")
  150. public List<User> getAllusers() {
  151. // TODO Auto-generated method stub
  152. List<User> users = (List<User>) this.hibernateTemplate
  153. .find("from User");
  154. System.out.println("users.size=" + users.size());
  155. return users;
  156.  
  157. }
  158.  
  159. /**
  160. * @author zhujinrong 根据用户的流水号,查找用户信息并返回
  161. * @param id
  162. * 用户的流水号
  163. * @return User 用户
  164. */
  165. public User getUserById(long id) throws Exception {
  166. // TODO Auto-generated method stub
  167. User user = this.hibernateTemplate.get(User.class, id);
  168. return user;
  169. }
  170.  
  171. /**
  172. * @author zhujinrong 根据用户账号,查找用户并返回
  173. * @param account
  174. * 用户账号
  175. * @return User 用户
  176. */
  177. public User getUserByAccount(String account) {
  178. // TODO Auto-generated method stub
  179.  
  180. Session session = this.hibernateTemplate.getSessionFactory()
  181. .getCurrentSession();
  182. session.beginTransaction();
  183. Query query = (Query) session.createQuery(
  184. "from User u where u.account = :account").setString("account",
  185. account);
  186. User user = (User) query.uniqueResult();
  187. session.getTransaction().commit();
  188. return user;
  189. }
  190.  
  191. public UserDetailInfo getUserDetailInfo(long userId) {
  192. // TODO Auto-generated method stub
  193. Session session = this.hibernateTemplate.getSessionFactory()
  194. .getCurrentSession();
  195. session.beginTransaction();
  196. Query query = (Query) session.createQuery(
  197. "from UserDetailInfo udf where udf.user.id = :userId").setLong(
  198. "userId", userId);
  199. UserDetailInfo userDetailInfo = (UserDetailInfo) query.uniqueResult();
  200. session.getTransaction().commit();
  201. return userDetailInfo;
  202. }
  203.  
  204. public int updateUserDetail(long userId, UserDetailInfo userDetailInfo) {
  205. // TODO Auto-generated method stub
  206. int result = -1;
  207. UserDetailInfo pudf = this.getUserDetailInfo(userId);
  208. if (pudf == null) {
  209. result = 0;
  210. return result;
  211. }
  212. if (userDetailInfo.getBmzw() != null) {
  213. pudf.setBmzw(userDetailInfo.getBmzw());
  214. }
  215.  
  216. if (userDetailInfo.getCompanyName() != null) {
  217. pudf.setCompanyName(userDetailInfo.getCompanyName());
  218. }
  219.  
  220. if (userDetailInfo.getContactAddress() != null) {
  221. pudf.setContactAddress(userDetailInfo.getContactAddress());
  222. }
  223.  
  224. if (userDetailInfo.getFax() != null) {
  225. pudf.setFax(userDetailInfo.getFax());
  226. }
  227.  
  228. if (userDetailInfo.getGardenName() != null) {
  229. pudf.setGardenName(userDetailInfo.getGardenName());
  230. }
  231.  
  232. if (userDetailInfo.getLandLine() != null) {
  233. pudf.setLandLine(userDetailInfo.getLandLine());
  234. }
  235.  
  236. if (userDetailInfo.getMsn() != null) {
  237. pudf.setMsn(userDetailInfo.getMsn());
  238. }
  239.  
  240. if (userDetailInfo.getPostCode() != null) {
  241. pudf.setPostCode(userDetailInfo.getPostCode());
  242. }
  243.  
  244. if (userDetailInfo.getQq() != null) {
  245. pudf.setQq(userDetailInfo.getQq());
  246. }
  247.  
  248. try {
  249. this.hibernateTemplate.update(pudf);
  250. result = 1;
  251. } catch (DataAccessException e) {
  252. // TODO Auto-generated catch block
  253. result = -1;
  254. e.printStackTrace();
  255. }
  256. return result;
  257. }
  258.  
  259. public int updateByUserAccount(String userAccount, User user) {
  260. // TODO Auto-generated method stub
  261. int result = -1;
  262. User pu = this.getUserByAccount(userAccount);
  263. if (pu == null) {
  264. result = 0;
  265. return result;
  266. }
  267. System.out.println("userDaoImpl->update:pu:" + pu);
  268. System.out.println("userDaoImpl->update:user:" + user);
  269.  
  270. if (pu == null) {
  271. result = 0;
  272. return result;
  273. }
  274.  
  275. if (user.getBussinessIntro() != null) {
  276. pu.setBussinessIntro(user.getBussinessIntro());
  277. }
  278.  
  279. if (user.getCellphone() != null) {
  280. pu.setCellphone(user.getCellphone());
  281. }
  282.  
  283. if (user.getUserTypeNo() != null) {
  284. pu.setUserTypeNo(user.getUserTypeNo());
  285. }
  286.  
  287. if (user.getAddress() != null) {
  288. pu.setAddress(user.getAddress());
  289. }
  290.  
  291. if (user.getPwd() != null) {
  292. pu.setPwd(user.getPwd());
  293. }
  294.  
  295. if (user.getRealName() != null) {
  296. pu.setRealName(user.getRealName());
  297. }
  298.  
  299. if (user.getSex() != null) {
  300. pu.setSex(user.getSex());
  301. }
  302.  
  303. try {
  304. this.hibernateTemplate.update(pu);
  305. result = 1;
  306. } catch (DataAccessException e) {
  307. // TODO Auto-generated catch block
  308. e.printStackTrace();
  309. }
  310. return result;
  311.  
  312. }
  313.  
  314. public UserType getUserTypeByName(String userTypeName) {
  315. // TODO Auto-generated method stub
  316. Session session = this.hibernateTemplate.getSessionFactory()
  317. .getCurrentSession();
  318. session.beginTransaction();
  319. Query query = (Query) session.createQuery(
  320. "from UserType userType where userType.name=:userTypeName")
  321. .setString("userTypeName", userTypeName);
  322. UserType userType = (UserType) query.uniqueResult();
  323. session.getTransaction().commit();
  324. return userType;
  325. }
  326.  
  327. /*
  328. * 分页查询显示
  329. *
  330. * @param hql查询的的hql语句
  331. *
  332. * @param beginIndex 查询记录的起始索引位置
  333. *
  334. * @param pageSize 一次查询记录个数
  335. *
  336. * @return List<Teacher>
  337. */
  338. @SuppressWarnings("unchecked")
  339. public List<User> queryByPage(String hql, int beginIndex, int pageSize) {
  340. Session session = this.hibernateTemplate.getSessionFactory()
  341. .getCurrentSession();
  342. org.hibernate.Transaction transaction = null;
  343. try {
  344. transaction = session.beginTransaction();
  345. Query query = session.createQuery(hql);
  346. query.setFirstResult(beginIndex);
  347. query.setMaxResults(pageSize);
  348. List<User> list = query.list();
  349. transaction.commit();
  350. return list;
  351. } catch (Exception e) {
  352. if (null != transaction) {
  353. transaction.rollback();
  354. e.printStackTrace();
  355. }
  356. }
  357. return null;
  358. }
  359.  
  360. // 查询指定HQL的结果记录总数
  361. public int queryRowCount(final String hql) {
  362. Session session = this.hibernateTemplate.getSessionFactory()
  363. .getCurrentSession();
  364. // System.out.println("queryRowCount->hql:" + hql);
  365. long result = -1;
  366. try {
  367. session.beginTransaction();
  368. Query query = session.createQuery(hql);
  369. result = (Long) query.uniqueResult(); // 计算个数
  370. // System.out.println("result=" + result);
  371. session.getTransaction().commit();
  372. } catch (Exception e) {
  373. e.printStackTrace();
  374. }
  375. return (int) result;
  376. }
  377.  
  378. @SuppressWarnings("unchecked")
  379. public List<User> mhQuery(String keyWord, int beginIndex, int pageSize) {
  380. // TODO Auto-generated method stub
  381. List<User> list = null;
  382. keyWord = "%" + keyWord + "%";
  383. try {
  384. Session session = this.hibernateTemplate.getSessionFactory()
  385. .getCurrentSession();
  386. session.beginTransaction();
  387. Query query = session.createQuery(
  388. "from User user where user.account like :keyWord "
  389. + "or user.realName like :keyWord "
  390. + "or user.cellphone like :keyWord").setString(
  391. "keyWord", keyWord).setString("keyWord", keyWord)
  392. .setString("keyWord", keyWord);
  393.  
  394. query.setFirstResult(beginIndex);
  395. query.setMaxResults(pageSize);
  396. list = query.list();
  397. session.getTransaction().commit();
  398. } catch (HibernateException e) {
  399. // TODO Auto-generated catch block
  400. e.printStackTrace();
  401. }
  402. return list;
  403. }
  404.  
  405. public int mhQueryCount(String keyWord) {
  406. // TODO Auto-generated method stub
  407.  
  408. Session session = this.hibernateTemplate.getSessionFactory()
  409. .getCurrentSession();
  410. // System.out.println("queryRowCount->hql:" + hql);
  411. long result = -1;
  412. keyWord = "%" + keyWord + "%";
  413. System.out.println("Info: UserDaoImpl-mhQueryCount-keyWord:" + keyWord);
  414. try {
  415. session.beginTransaction();
  416. Query query = session.createQuery(
  417. "select count(*) from User user where user.account like :keyWord "
  418. + "or user.realName like :keyWord "
  419. + "or user.cellphone like :keyWord").setString(
  420. "keyWord", keyWord).setString("keyWord", keyWord)
  421. .setString("keyWord", keyWord);
  422. result = (Long) query.uniqueResult(); // 计算个数
  423. System.out.println("result=" + result);
  424. session.getTransaction().commit();
  425. } catch (Exception e) {
  426. e.printStackTrace();
  427. }
  428. return (int) result;
  429. }
  430.  
  431. @SuppressWarnings("unchecked")
  432. public List<User> newAddFixed(int beginIndex, int pageSize) {
  433. // TODO Auto-generated method stub
  434.  
  435. List<User> list = null;
  436. try {
  437. Session session = this.hibernateTemplate.getSessionFactory()
  438. .getCurrentSession();
  439. session.beginTransaction();
  440. Query query = session
  441. .createQuery(
  442. "from User user where user.userTypeNo.name =:userTypeName order by user.addTime desc")
  443. .setString("userTypeName", "固定用户");
  444.  
  445. query.setFirstResult(beginIndex);
  446. query.setMaxResults(pageSize);
  447. list = (List<User>) query.list();
  448. session.getTransaction().commit();
  449. } catch (HibernateException e) {
  450. // TODO Auto-generated catch block
  451. e.printStackTrace();
  452. }
  453. return list;
  454. }
  455.  
  456. public int newAddFixedCount() {
  457. Session session = this.hibernateTemplate.getSessionFactory()
  458. .getCurrentSession();
  459. // System.out.println("queryRowCount->hql:" + hql);
  460. long result = -1;
  461. try {
  462. session.beginTransaction();
  463. Query query = session
  464. .createQuery(
  465. "select count(*) from User user where user.userTypeNo.name=:userTypeName")
  466. .setString("userTypeName", "固定用户");
  467. result = (Long) query.uniqueResult(); // 计算个数
  468. System.out.println("result=" + result);
  469. session.getTransaction().commit();
  470. } catch (Exception e) {
  471. e.printStackTrace();
  472. }
  473. return (int) result;
  474. }
  475.  
  476. public int changePwd(long userId, String oldPwd, String newPwd)
  477. throws Exception {
  478. // TODO Auto-generated method stub
  479. int result = -1;
  480. User user = this.hibernateTemplate.load(User.class, userId);
  481. if (user.getPwd().equals(oldPwd)) {
  482. user.setPwd(newPwd);
  483. this.hibernateTemplate.update(user);
  484. result = 1;
  485. } else {
  486. result = 0;
  487. }
  488.  
  489. return result;
  490. }
  491. }

3.5 UserDao.java

package com.xhu.dao;

import java.util.List;

import com.xhu.model.User;
import com.xhu.model.UserDetailInfo;
import com.xhu.model.UserType; public interface UserDao { /**
* 添加用户信息
*
* @param user
* @return int -1: 发生异常 1 添加用户成功
*/
public int save(User user); /**
* 删除用户信息
*
* @param user
* @return 1: 删除用户成功 0: 用户不存在 -1: exception
*/
public int delete(long userId); /**
* 根据用户流水号,修改用户信息
*
* @param userId
* @param user
* @return -1:发生异常; 0: 用户不存在; 1:修改用户信息成功
*/
public int update(long userId, User user); /**
* 根据用户流水号,修改用户信息
*
* @param userAccount
* string 用户账号
* @param user
* 要修改的用户信息
* @return -1:发生异常; 0: 用户不存在; 1:修改用户信息成功
*/
public int updateByUserAccount(String userAccount, User user); public boolean checkUserExistsWithName(String account); public List<User> getAllusers(); public User getUserById(long id) throws Exception; public User getUserByAccount(String Account); public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo); /**
* 根据用户流水号,获取用户的详细信息
*
* @param long userId 用户流水号
* @return UserDetailInfo 用户详细信息
*/
public UserDetailInfo getUserDetailInfo(long userId); /**
* 修改用户详细信息
*
* @param userId
* 用户流水号
* @param userDetailInfo
* 用户详细信息
* @return -1: 发生异常, 修改用户信息不成功; 0: 用户不存在, 修改用户详细信息不成功, 1:修改用户成功
* @author zhujinrong
*/
public int updateUserDetail(long userId, UserDetailInfo userDetailInfo); /**
* 根据用户类型的名称,返回用户类型对象
*
* @param userTypeName
* String 用户类型名称
* @return UserType 用户类型对象
*/
public UserType getUserTypeByName(String userTypeName); // 分页查询显示
public List<User> queryByPage(String hql, int beginIndex, int pageSize); // 查询的结果记录总数
public int queryRowCount(final String hql); // 模糊查询的分页显示
public List<User> mhQuery(String keyWord, int beginIndex, int pageSize); // 返回模糊查询的记录总数
public int mhQueryCount(String keyWord); /**
* 新增固定用户信息
*
* @param beginIndex
* @param pageSize
* @return
*/
public List<User> newAddFixed(int beginIndex, int pageSize); /**
* 新增固定用户的条数
*
* @return
*/
public int newAddFixedCount(); /**
* 根据userId, 将用户密码:oldPwd, 改为newPwd
*
* @param userId
* @param oldPwd
* @param newPwd
* @return 1: 密码修改成功 0: 原始密码错误 -1:出错了
*/
public int changePwd(long userId, String oldPwd, String newPwd)
throws Exception;
}

3.6 model层

(1) User.java

package com.xhu.model;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType; /**
* @author zhujinrong
*
*/
@Entity
@Table(name = "t_user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3429846500229553447L;
private long id;
private String account;
private String realName;
private String pwd;
private String cellphone;
private UserType userTypeNo;
private String address;
private String bussinessIntro;
private String sex;
private Date addTime = new Date();// 添加固定用户时间 private Set<Car> cars = new HashSet<Car>(); @Id
@GeneratedValue
public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getAccount() {
return account;
} public void setAccount(String account) {
this.account = account;
} public String getRealName() {
return realName;
} public void setRealName(String realName) {
this.realName = realName;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public String getCellphone() {
return cellphone;
} public void setCellphone(String cellphone) {
this.cellphone = cellphone;
} @Temporal(TemporalType.TIMESTAMP)
@Column(updatable = false)
public Date getAddTime() {
return addTime;
} public void setAddTime(Date addTime) {
this.addTime = addTime;
} @ManyToOne
@JoinColumn(name = "userTypeNo")
public UserType getUserTypeNo() {
return userTypeNo;
} public void setUserTypeNo(UserType userTypeNo) {
this.userTypeNo = userTypeNo;
} public String getBussinessIntro() {
return bussinessIntro;
} public void setBussinessIntro(String bussinessIntro) {
this.bussinessIntro = bussinessIntro;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
StringBuffer s = new StringBuffer();
s.append("[id:" + id);
s.append(", account:" + account);
s.append(", realName: " + this.realName);
s.append(", sex: " + this.sex);
s.append(", userTypeNo:" + userTypeNo);
s.append(", cellphone:" + this.cellphone);
s.append(", address: " + this.address);
s.append(", addTime: " + this.addTime);
s.append(", bussinessIntro: " + this.bussinessIntro + "]");
return s.toString();
} @OneToMany(mappedBy = "publisher", fetch = FetchType.LAZY)
public Set<Car> getCars() {
return cars;
} public void setCars(Set<Car> cars) {
this.cars = cars;
} }

(2) UserDetail.java

package com.xhu.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name = "t_userDetailInfo")
public class UserDetailInfo implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9173252706639856987L;
private long id; // 用户详细信息表的流水号
private User user;// 所属用户的详细信息
private String companyName;// 公司名称
private String gardenName;// 所属园区
private String contactAddress; // 联系地址
private String postCode;// 邮政编码
private String bmzw;// 部门职务
private String landLine; // 固定电话
private String fax;// 传真号
private String qq;// qq号
private String msn;// msn号 @Id
@GeneratedValue
public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} @ManyToOne
@JoinColumn(name = "userId")
public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public String getCompanyName() {
return companyName;
} public void setCompanyName(String companyName) {
this.companyName = companyName;
} public String getGardenName() {
return gardenName;
} public void setGardenName(String gardenName) {
this.gardenName = gardenName;
} public String getContactAddress() {
return contactAddress;
} public void setContactAddress(String contactAddress) {
this.contactAddress = contactAddress;
} public String getPostCode() {
return postCode;
} public void setPostCode(String postCode) {
this.postCode = postCode;
} public String getBmzw() {
return bmzw;
} public void setBmzw(String bmzw) {
this.bmzw = bmzw;
} public String getLandLine() {
return landLine;
} public void setLandLine(String landLine) {
this.landLine = landLine;
} public String getFax() {
return fax;
} public void setFax(String fax) {
this.fax = fax;
} public String getQq() {
return qq;
} public void setQq(String qq) {
this.qq = qq;
} public String getMsn() {
return msn;
} public void setMsn(String msn) {
this.msn = msn;
} @Override
public String toString() {
StringBuffer s = new StringBuffer();
s.append("[流水号: " + this.id);
s.append(", 用户: " + this.user);
s.append(", 公司名称:" + this.companyName);
s.append(", 所属园区:" + this.gardenName);
s.append(", 联系地址: " + this.contactAddress);
s.append(", 部门职位:" + this.bmzw);
s.append(", 固定电话: " + this.landLine);
s.append(", 邮政编码: " + this.postCode);
s.append(", qq:" + this.qq);
s.append(", msn: " + this.msn);
s.append(", 传真:" + this.fax + "]");
return s.toString();
}
}

(3) UserType.java

package com.xhu.model;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name = "t_userType")
public class UserType implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6519396509517785002L;
private int no;
private String name; @Id
public int getNo() {
return no;
} public void setNo(int no) {
this.no = no;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
StringBuffer s = new StringBuffer();
s.append("[no: " + this.no);
s.append(", name:" + this.name + "]");
return s.toString();
}
}

3.7 UserLoginInterceptor.java

package com.xhu.interceptor;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; public class UserLoginInterceptor implements Interceptor { /**
*
*/
private static final long serialVersionUID = -1098857744351094612L; public void destroy() {
// TODO Auto-generated method stub
System.out.println("...userLoginInterceptor destory />");
} public void init() {
// TODO Auto-generated method stub
System.out.println("< userLoginInterceptor init....");
} public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println(">>intercept.....");
ActionContext context = invocation.getInvocationContext(); // 获取session Map<String, Object> session = (Map<String, Object>) context
.getSession(); String userAccount = (String) session.get("userAccount"); // 用户还未登陆 if (userAccount == null) { // 获取HttpServletRequest对象 HttpServletRequest req = ServletActionContext.getRequest(); // 获取此请求的地址,请求地址包含application name,进行subString操作,去除application name String path = req.getRequestURI(); // 获得请求中的参数 String queryString = req.getQueryString(); // 预防空指针 if (queryString == null) { queryString = ""; } // 拼凑得到登陆之前的地址 String realPath = path + "?" + queryString; // 存入session,方便调用 session.put("prePage", realPath);
System.out.println("-----------请求地址realPath:" + realPath); if (realPath.startsWith("/wlphuo/admin/")) {
return "loginAdmin";
} else {
return "loginFixed";
} } // 用户已经登陆,放行
return invocation.invoke(); } }

3.8 配置文件

(1) beans.xml

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <context:annotation-config/>
<context:component-scan base-package="com.xhu"/>
<aop:aspectj-autoproxy />
<!--
-->
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=testdb2"/>
<property name="username" value="sa"/>
<property name="password" value="sa"/>
</bean>
--> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:jdbc.properties"/>
</bean> <!-- datasource -->
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/> </bean> <!-- sessionFactory, hibernateconfig-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">
<list>
<value>com.xhu.model</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
</props>
</property>
</bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="txManager"/> <aop:config>
<aop:pointcut id="bussinessService"
expression="execution(public * com.xhu.service.*.*(..))" />
<aop:advisor pointcut-ref="bussinessService"
advice-ref="txAdvice" />
</aop:config> <tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="exists" read-only="true" />
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="do*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice> </beans>

(2) jdbc.properties

jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc\:sqlserver\://localhost\:1433;databaseName\=wlphuoD1
jdbc.username=sa
jdbc.password=123456

(3) log4j.properties

log4j.rootLogger=WARN,stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

(4) struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="GBK"/>
<constant name="struts.devMode" value="true" /> <package name="fixed" extends="json-default">
<interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="userLogin" class="com.xhu.interceptor.UserLoginInterceptor" /> <!-- 定义一个包含权限控制的拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="userLogin" />
</interceptor-stack>
</interceptors> <!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" /> <!-- 定义全局处理结果 -->
<global-results>
<!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
<result name="loginFixed">/login-fixed.jsp</result>
<result name="loginAdmin">/login-admin.jsp</result>
</global-results>
<action name="userf-*" class="userAction" method="{1}">
<result>/user/userf-{1}.jsp</result>
</action>
<!-- car受限页面 -->
<action name="carlimitf-*" class="carAction" method="limit">
<result>/car/carf-{1}.jsp</result>
</action> <!-- car处理页面 -->
<action name="carcl-*" class="carAction" method="{1}">
<result>/car/car-{1}.jsp</result>
</action> <!-- invoice受限页面 -->
<action name="invoicelimitf-*" class="invoiceAction" method="limit">
<result>/invoice/invoicef-{1}.jsp</result>
</action> <!-- invoice处理页面 -->
<action name="invoicecl-*" class="invoiceAction" method="{1}">
<result>/invoice/invoice-{1}.jsp</result>
</action> <!-- invoice表单提交页面 -->
<action name="invoicetj-*" class="invoiceAction" method="{1}">
<result >/invoice/invoice-{1}success.jsp?returnStr=${returnStr}</result>
<result name="fail">/invoice/invoice-add.jsp?returnStr=${returnStr}</result>
</action> <!-- 用户处理返回json -->
<action name="user" class="userAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action> <!-- 车辆处理返回json -->
<action name="car" class="carAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action>
<!-- 发货单处理返回json -->
<action name="invoice" class="invoiceAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action>
</package> <package name="admin" extends="json-default">
<interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="userLogin" class="com.xhu.interceptor.UserLoginInterceptor" /> <!-- 定义一个包含权限控制的拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="userLogin" />
</interceptor-stack>
</interceptors> <!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" /> <!-- 定义全局处理结果 -->
<global-results>
<!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
<result name="loginFixed">/login-fixed.jsp</result>
<result name="loginAdmin">/login-admin.jsp</result>
</global-results> <!-- user限制访问页面 -->
<action name="userlimit-*" class="userAction" method="limit">
<result>/user/user-{1}.jsp</result>
</action>
<action name="carlog-query" class="carLogAction" method="limit">
<result>/car/carlog-query.jsp</result>
</action> <action name="carlogcl-query" class="carLogAction" method="mhQuery">
<result>/car/carlog-query.jsp?</result>
</action> <!-- user处理页面 -->
<action name="usercl-*" class="userAction" method="{1}">
<result>/user/user-{1}.jsp</result>
</action> <!-- car限制访问页面 -->
<action name="carlimit-*" class="carAction" method="limit">
<result>/car/car-{1}.jsp</result>
</action> <!-- car处理页面 -->
<action name="carcl-*" class="carAction" method="{1}">
<result>/car/car-{1}.jsp</result>
</action> <!-- invoice受限页面 -->
<action name="invoicelimit-*" class="invoiceAction" method="limit">
<result>/invoice/invoice-{1}.jsp</result>
</action> <!-- invoice处理页面 -->
<action name="invoicecl-*" class="invoiceAction" method="{1}">
<result>/invoice/invoice-{1}.jsp</result>
</action> <!-- invoice表单提交页面 -->
<action name="invoicetj-*" class="invoiceAction" method="{1}">
<result >/invoice/invoice-{1}success.jsp?returnStr=${returnStr}</result>
<result name="fail">/invoice/invoice-add.jsp?returnStr=${returnStr}</result>
</action> <!-- 用户处理返回json -->
<action name="user" class="userAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action> <!-- 车辆处理返回json -->
<action name="car" class="carAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action>
<!-- 发货单处理返回json -->
<action name="invoice" class="invoiceAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action>
</package> <package name="guest" extends="json-default">
<action name="login-fixed" class="userAction" method="loginFixed">
<result type="redirectAction">${prePage}</result>
<result name="index">/index.jsp</result>
<result name="fail">/login-fixed.jsp?returnStr=${returnStr}</result>
</action> <action name="login-admin" class="userAction" method="loginAdmin">
<result type="redirectAction">${prePage}</result>
<result name="index">/index.jsp</result>
<result name="fail">/login-admin.jsp?returnStr=${returnStr}</result>
</action>
<action name="logout-fixed" class="userAction" method="logout">
<result>/index.jsp</result>
</action>
<action name="logout-admin" class="userAction" method="logout">
<result>/login-admin.jsp</result>
</action> <!-- 车辆处理返回json -->
<action name="car" class="carAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action> <!-- 用户处理返回json -->
<action name="user" class="userAction">
<result type="json">
<param name="root">returnStr</param>
</result>
</action> </package>
</struts>

(5) web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- Bootstrap the root application context as usual using ContextLoaderListener -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
<!-- defalut:/WEB-INF/applicationContext.xml -->
</listener> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param> <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<!--<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sf</param-value>
</init-param>
--></filter> <filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>

3.9 jsp页面

(1) index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>物流配货网</title>
<base href="<%=basePath %>"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"/>
<meta http-equiv="description" content="This is my page"/>
<jsp:include page="/header.jsp"></jsp:include><!-- 包含所需要的公共头文件 -->
<script src="js/index.js" type="text/javascript"></script>
<style type="text/css">
.table{
border-collapse:collapse;
border: 0px;
} .td{
height:24px;
border-bottom:1px dotted #B6CEFB;
/*border:1px solid #B6CEFB;*/
} .th
{
height:24px;
/*border:1px solid #B6CEFB;*/
} .shell{}
#div1
{
height:432px;
overflow:hidden;
}
</style> </head>
<body>
<jsp:include page="head.jsp"></jsp:include>
<div id="content" style="border: 1px solid #DDDDDD;">
<jsp:include page="/left-index.jsp"></jsp:include>
<div id="center" style="border-left: 1px solid #DDDDDD; width: 768px;">
<div >
<table width="100%">
<tr>
<td align="left" height="18px"><b>车辆信息</b></td>
<td align="right"><a href="car/carf-find.jsp"><b>更多>></b> </a></td>
</tr>
</table>
<table width="100%" bgcolor="#DOE3FC">
<tr>
<th height="24px">起始地点</th>
<th>到达地点</th>
<th>车牌号码</th>
<th>车辆类型</th>
<th>车辆长度</th>
<th>车辆载重</th>
<th>操作</th>
</tr>
</table>
<div class="shell">
<div id="div1">
<table id="tb_cars" width="100%" class="table"> </table>
</div>
</div>
</div> </div>
</div>
<jsp:include page="tail.jsp"></jsp:include>
</body>
<script>
var c,_=Function;
with(o=document.getElementById("div1")){ innerHTML+=innerHTML; onmouseover=_("c=1"); onmouseout=_("c=0");}
(F=_("if(#%27||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%27?10:1500);".replace(/#/g,"o.scrollTop")))();
</script>
</html>

(2) head.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String userAccount=(String)session.getAttribute("userAccount");
String userTypeName = (String)session.getAttribute("userTypeName");
if (userAccount == null){
userAccount = "";
} if(userTypeName == null){
userTypeName="";
}
%>
<table border="0" width="1024px"> <tr>
<td align="left">
<a href="index.jsp" style="text-decoration: none; color: blue;">物流配货网首页</a>
</td>
<td align="right">
欢迎您 &nbsp; &nbsp;
<a href="fixed/userf-personnalInfo" style="text-decoration: none; color: blue;">
<span id="loginUserAccount"><%=userAccount %></span></a>&nbsp;&nbsp;
<%
if (userAccount.equals("")){
%>
<a href="login-fixed.jsp">登录</a> <%
} else {
%>
<a href="guest/logout-fixed">退出</a>
<%
}
%>
<input type="hidden" id="userTypeName" value="<%=userTypeName %>" />
</td>
</tr>
</table>
<div id="topimage">
<img alt="物流配货网" src="data:images/wlphuo.gif" align="left">
</div>
<%
if (userTypeName.equals("管理员")){
%>
<jsp:include page="menu-admin.jsp"></jsp:include> <%
}
else {
%>
<jsp:include page="menu.jsp"></jsp:include>
<%
}
%>

(3) left-index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<div id="left" style="width: 251px;">
<div style="border: 1px solid #CFDEF6; margin: 6px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="background-image: url(oimages/mainnews_bg.gif); background-repeat: repeat-x;">
<tr>
<td align="left" height="28px">
<span style="color: blue;">联系我们</span>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>
<br />
<br />
<br />
<font style="font-size: 18px; color: green;"> 全国客服热线: 8888-888888</font>
<br />
<br />
<br />
<br />
</td>
</tr>
</table>
</div>
<div style="border: 1px solid #CFDEF6; margin:6px;">
<!-- 使用工具表格 -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="background-image: url(oimages/mainnews_bg.gif); background-repeat: repeat-x;">
<tr>
<td height="24px">
&nbsp;<span class="btf">实用工具</span>
</td>
</tr>
</table>
<!--本站动态开始-->
<table width="100%" border="0" cellspacing="1" cellpadding="4">
<tr>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.123cha.com/idcard/" target="_blank">身份证验号</a></div>
</td>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.ip138.com:8080/search.asp" target="_blank">手机号验号</a></div>
</td>
</tr>
<tr>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://www.jdcsww.com/tools/other/selmile.asp" target="_blank">里程数查询</a></div>
</td>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://www.youjia114.com/" target="_blank">全国油价查询</a></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.doc88.com/p-66318487172.html" target="_blank">货运车资料</a></div>
</td>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://weather.news.sina.com.cn/" target="_blank">天气预报</a></div>
</td>
</tr>
<tr>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://qq.ip138.com/train/index.htm" target="_blank">列车时刻表</a></div>
</td>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://www.ip138.com/" target="_blank">ip地址查询</a></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.bjjtgl.gov.cn/publish/portal0/tab65/" target="_blank">路况信息</a></div>
</td>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://map.baidu.com/" target="_blank">电子地图</a></div>
</td>
</tr>
<tr>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://www.one101.com/htm/qita/ditu-china.htm" target="_blank">公路交通图</a></div>
</td>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://www.for68.com/new/2006/1/su4518113645111160026107-0.htm" target="_blank">
航空货运单</a></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.jctrans.com/tool/zxrl.htm" target="_blank">电子日历</a></div>
</td>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.crane88.com/nrfind.asp" target="_blank">国道查询</a></div>
</td>
</tr>
<tr>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://jiqiao.jxedt.com/info/3709.htm" target="_blank">各类交通标志</a></div>
</td>
<td bgcolor="#DOE3FC">
<div align="center">
<a href="http://hi.baidu.com/lmx%C1%D6%C3%CE%CF%A6/blog/item/b4f54eefe44275e9cf1b3e14.html"
target="_blank">地方汽车牌照</a></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://weizhang.592163.com/" target="_blank">违章记录查询</a></div>
</td>
<td bgcolor="#FFFBEF">
<div align="center">
<a href="http://www.jincao.com/fa/law18.htm" target="_blank">交通法规</a></div>
</td>
</tr>
</table>
</div>
<!-- 使用工具表格 -->
</div> <!-- left -->

(4) tail.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <div style="clear:both"></div>
<div id="tailBar"></div>
<div id="tail"><a href="#">关于我们</a> | <a href="#">服务条款</a> | <a href="#">法律声明</a> | <a href="#">联系我们</a> | <a href="#">友情链接</a><br />
物流配货网版权所有2014-2014 网址: www.logistics.com 备案号: 鲁ICP备08098373号<br />
客服热线:0888-88888888 全国免费电话: 888-888-8888 </div>

3.10 .classpath文件

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-json-plugin-2.2.3.jar" sourcepath="C:/Users/zhujinrong/.m2/repository/org/apache/struts/struts2-json-plugin/2.2.3/struts2-json-plugin-2.2.3-sources.jar"/>
<classpathentry kind="lib" path="E:/code-hibernate/wlphuoD1/WebRoot/WEB-INF/lib/json-lib.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aopalliance-1.0.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm-3.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm-commons-3.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm-tree-3.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aspectj-1.7.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aspectjweaver-1.5.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cglib-nodep-2.1_3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-beanutils.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-dbcp.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-fileupload-1.2.2.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-io-2.0.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-lang-2.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-lang3-3.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-logging.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-pool.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/ejb3-persistence.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/ezmorph-1.0.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/freemarker-2.3.19.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/hibernate-annotations.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/hibernate-commons-annotations.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/hibernate3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/javassist-3.11.0.GA.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/json-lib.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jta-1.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/log4j.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/ognl-3.0.5.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/slf4j-api-1.5.8.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aop-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aop-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aop-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aspects-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aspects-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-aspects-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-beans-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-beans-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-beans-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-support-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-support-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-context-support-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-core-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-core-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-core-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-expression-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-expression-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-expression-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-tomcat-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-tomcat-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-instrument-tomcat-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jms-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jms-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-jms-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-orm-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-orm-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-orm-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-oxm-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-oxm-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-oxm-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-struts-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-struts-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-struts-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-test-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-test-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-test-3.2.0.RELEASE.jar" sourcepath="C:/Users/zhujinrong/.m2/repository/org/springframework/spring-test/3.2.0.RELEASE/spring-test-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-tx-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-tx-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-tx-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-web-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-web-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-web-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-portlet-3.2.0.RELEASE-javadoc.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-portlet-3.2.0.RELEASE-sources.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/spring-webmvc-portlet-3.2.0.RELEASE.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-core-2.3.7.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-spring-plugin-2.3.7.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xwork-core-2.3.7.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cos.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/flexjson-2.0.jar"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_3_EM"/>
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.hibernate.MYECLIPSE_HIBERNATE3_3_CORE"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sqljdbc4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/slf4j-log4j12-1.5.8.jar"/>
<classpathentry kind="lib" path="E:/03jar/sqljdbc4.jar"/>
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
</classpath>

Java的SSH网站的更多相关文章

  1. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  2. 我是怎么开发一个小型java在线学习网站的

    2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...

  3. 文献综述八:基于JAVA的商品网站的研究

    一.基本信息 标题:基于JAVA的商品网站的研究 时间:2015 出版源:信息技术 文件分类:对java语言的研究 二.研究背景 本文主要介绍了系统的分析,设计和开发的全部过程. 三.具体内容 文献的 ...

  4. 项目二:企业级java电商网站开发(服务端)

    声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支 ...

  5. java使用ssh连接Linux并执行命令

     方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency>         <groupId>com.jcraft</groupId ...

  6. Java 实现 ssh命令 登录主机执行shell命令

    Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS ...

  7. 使用Java开发高性能网站需要关注的那些事儿

    无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说, ...

  8. Java开发高性能网站需要关注的事

    转自:http://www.javabloger.com/java-development-concern-those-things/ 近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内 ...

  9. 使用Java开发高性能网站需要关注的那些事儿2

      近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享,大到facebook,百度,小到刚起步的网站.facebook,百度之类的大型网站采用的技术和超凡的处理能力的确给人 ...

随机推荐

  1. Django之验证码的生成和使用

    1.基于PIL生成一个带验证码的图片和验证码,生成验证码图片需要Monaco.ttf字体,可按自己要求更改check_code中的字体和字体文件位置,如下图 #!/usr/bin/env python ...

  2. 洛谷P2192HXY玩卡片

    题目大意 给你n个数,只包括5和0. 从中取一些数,要求组成的数是90的倍数. 如: 4 5 0 5 0 结果是0 题解 90=9*10,如果一个是90的倍数一定末尾有0,那么这个 数一定是10的倍数 ...

  3. Spring boot admin 使用

    1. maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</group ...

  4. happynear_caffe编译时,缺少头文件caffe.pb.h的问题

    由于一些问题,需要编译caffe 的windows版本,用的是happynear的caffe版本,在caffe.pb.h遇到了问题 如何生成 caffe.pb.h 将protobuf 里的 proto ...

  5. 登录MySQL非默认3306端口号的语句

    这里登陆的是mysql3308端口号的数据库 mysql -P3308 -p用户名 -u密码

  6. Renesas APIs ***

    一个线程,强行结束另外一个线程,并将其挂起: static void SuspendTask(TX_THREAD *thread) { UINT status = ; UINT state; stat ...

  7. STM32F4XX启动文件分析

    STM32F4XX启动文件分析 - STM32F4XX启动文件下载地址 导读:STM32F4XX启动文件的作用 初始化设置SP,即栈指针 初始化设置PC指针指向复位中断处理函数,即PC = Reset ...

  8. Java-Runoob:Java 日期时间

    ylbtech-Java-Runoob:Java 日期时间 1.返回顶部 1. Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实 ...

  9. Servlet3.0的简单使用

    Servlet3.0(WEB3.0)算是比较新的Servlet技术了,对应的JavaEE版本是6,虽然目前最新的版本是3.1,对应版本JavaEE7.我们目前使用的做多的还是Servlet2.5的东西 ...

  10. 【UVALive】3029 City Game(悬线法)

    题目 传送门:QWQ 分析 以前见到过差不多的这题. xhk说是单调栈水题,但我又不会单调栈,于是当时就放下了. 这么久过去了我还是不会用单调栈做这题,用的是悬线法. 非常好写 代码 #include ...