Java的SSH网站
1、框架
strusts2 + Hibernate + spring
2、图片
图1-1 网站结构
图1-2 java代码结构
3、源代码
3.1 UserAction.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.xhu.action; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import org.apache.struts2.interceptor.SessionAware; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.opensymphony.xwork2.ActionSupport; import com.xhu.DTO.PwdDto; import com.xhu.model.Place; import com.xhu.model.User; import com.xhu.model.UserType; import com.xhu.model.PageResultSet; import com.xhu.service.PlaceManager; import com.xhu.service.UserManager; import com.xhu.util.MD5; @Component("userAction") @Scope("prototype") public class UserAction extends ActionSupport implements SessionAware { /** * */ private static final long serialVersionUID = 2566144909692829328L; /** * */ private UserManager userManager; private User user; private String province; private String city; private String county; private PlaceManager placeManager; private final String NOCHOOSE = "--请选择--"; private static final int pageSize = 10; private int currentPage; // 接受传递的页码参数 private PageResultSet<User> pageResultSet; private String keyWord; // 分页查询时的关键字 private Map<String, Object> session; private String prePage; // 登录前要访问的页面 // 返回的字符串提示信息 private String returnStr; private String userPwd;// 密码 private String jsonStr;// 接受从视图传过来的json字符串 private long userId; // 用户的流水号 private int myPageSize = 5; // 从视图中传过来的pageSize, 默认值为5 /** * 修改用户密码 * * @return */ public String changePwd() { PwdDto pwdDto = null; int result = -1; try { JSONObject js = JSONObject.fromObject(jsonStr); pwdDto = (PwdDto) JSONObject.toBean((JSONObject) js, PwdDto.class); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (pwdDto != null) { try { result = this.userManager.doChangePwd(pwdDto.getUserId(), pwdDto.getOldPwd(), pwdDto.getNewPwd()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } Map<String, String> myMap = new HashMap<String, String>(); myMap.put("changePwdResult", "" + result); JSONObject js = JSONObject.fromObject(myMap); this.returnStr = js.toString(); return SUCCESS; } /** * 显示新增用户 * * @return */ public String ajaxNewFixed() { try { this.pageResultSet = this.userManager.newAddFixed(myPageSize, this.currentPage); Map<String, Object> myMap = new HashMap<String, Object>(); myMap.put("currentPage", "" + this.pageResultSet.getPageInfo().getCurrentPage()); myMap.put("totalPage", "" + this.pageResultSet.getPageInfo().getTotalPage()); myMap.put("list", this.pageResultSet.getList()); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(new String[] { "cars" }); JSONObject js = JSONObject.fromObject(myMap, jsonConfig); returnStr = js.toString(); // System.out.println("Info: userAction - ajaxFenyeQuery - returnStr:" // + returnStr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } /** * 显示用户信息 * * @return */ public String show() { try { this.user = this.userManager.getUserById(userId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } public String personnalInfo() { String strUserId = (String) session.get("userId"); long myUserId = Long.parseLong(strUserId); try { this.user = this.userManager.getUserById(myUserId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } public String getPrePage() { return prePage; } public void setPrePage(String prePage) { this.prePage = prePage; } public String getJsonStr() { return jsonStr; } public void setJsonStr(String jsonStr) { this.jsonStr = jsonStr; } private boolean json2User() { boolean b = false; // json 反序列化 try { JSONObject js = JSONObject.fromObject(jsonStr); user = (User) JSONObject.toBean((JSONObject) js, User.class); b = true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return b; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } public String getReturnStr() { return returnStr; } public void setReturnStr(String returnStr) { this.returnStr = returnStr; } public UserAction() { System.out.println("userAction create...."); } public UserManager getUserManager() { return userManager; } @Resource public void setUserManager(UserManager userManager) { this.userManager = userManager; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } /** * 如果已经登录,则转入到添加用户界面 否则,转入到登录界面 * * @return */ public String limit() { return SUCCESS; } /** * 添加用户信息 * * @return */ public String add() { user.getUserTypeNo().setNo(2); int result = userManager.add(user); if (result == 1) { return SUCCESS; } else { return ERROR; } } public String ajaxAdd() { // --------提示信息 json2User(); UserType userType = new UserType(); userType.setName("普通用户"); userType.setNo(2); user.setUserTypeNo(userType); int result = -1; try { result = userManager.add(user); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Map<String, String> myMap = new HashMap<String, String>(); if (result == 1) { // 添加用户成功 myMap.put("addUserFlag", "1"); } else { // 添加用户不成功! myMap.put("addUserFlag", "-1"); } JSONObject js = JSONObject.fromObject(myMap); this.returnStr = js.toString(); return SUCCESS; } // 验证用户名是否唯一 public String ajaxVUserAccount() { User u = null; try { u = this.userManager.getUserById(userId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Map<String, String> myMap = new HashMap<String, String>(); if (u == null) { // 用户名验证通过 myMap.put("vUserAccountFlag", "1"); } else { // 用户名验证不通过 myMap.put("vUserAccountFlag", "-1"); } JSONObject js = JSONObject.fromObject(myMap); this.returnStr = js.toString(); return SUCCESS; } // 修改用户信息 public String ajaxUpdate() { // ----提示信息 json2User(); Map<String, String> myMap = new HashMap<String, String>(); int result = -1; try { result = this.userManager.update(user.getId(), user); result = 1; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } myMap.put("updateUserFlag", "" + result); JSONObject js = JSONObject.fromObject(myMap); this.returnStr = js.toString(); return SUCCESS; } // 根据用户账号删除用户 public String ajaxDelete() { Map<String, String> myMap = new HashMap<String, String>(); int result = -1; try { result = this.userManager.delete(userId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } myMap.put("deleteUserFlag", "" + result); JSONObject js = JSONObject.fromObject(myMap); this.returnStr = js.toString(); return SUCCESS; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCounty() { return county; } public void setCounty(String county) { this.county = county; } public PlaceManager getPlaceManager() { return placeManager; } @Resource public void setPlaceManager(PlaceManager placeManager) { this.placeManager = placeManager; } /** * 界面上的地点与数据库的存储之间的转换 * * @return int 地点编号 */ public Place dealPlace() { Place place = null; if (province.equals(this.NOCHOOSE)) { // 没有选择 place = null; } else { if (city.equals(this.NOCHOOSE)) { // 选择了province place = this.placeManager.getProvince(province); } else { if (county.equals(this.NOCHOOSE)) { // 选择了province和city place = this.placeManager.getCity(province, city); } else { place = this.placeManager.getCounty(province, city, county); // 选择了province, city,county } } } return place; } /** * 对于用户的修改的处理 * * @return */ public String updatecl() { UserType userType = this.userManager.getUserTypeByName(user .getUserTypeNo().getName()); user.setUserTypeNo(userType); int result = this.userManager.updateByUserAccount(user.getAccount(), user); if (result == 1) { return SUCCESS; } else if (result == 0) { return "nouser"; } else { return ERROR; } } /** * 转入update显示页面 * * @return */ public String update() { try { this.user = this.userManager.getUserById(userId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public PageResultSet<User> getPageResultSet() { return pageResultSet; } public void setPageResultSet(PageResultSet<User> pageResultSet) { this.pageResultSet = pageResultSet; } public String getKeyWord() { return keyWord; } public void setKeyWord(String keyWord) { this.keyWord = keyWord; } public String fenyeUser() { this.pageResultSet = this.userManager.queryByPage(5, this.currentPage); return SUCCESS; } // ajax分页查询 public String ajaxQuery() { try { this.pageResultSet = this.userManager.mhQuery(keyWord, pageSize, this.currentPage); System.out.println(this.pageResultSet); Map<String, Object> myMap = new HashMap<String, Object>(); myMap.put("currentPage", "" + this.pageResultSet.getPageInfo().getCurrentPage()); myMap.put("totalPage", "" + this.pageResultSet.getPageInfo().getTotalPage()); myMap.put("list", this.pageResultSet.getList()); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(new String[] { "cars" }); JSONObject js = JSONObject.fromObject(myMap, jsonConfig); returnStr = js.toString(); // System.out.println("Info: userAction - ajaxFenyeQuery - returnStr:" // + returnStr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } /** * 对于登录表单进行处理 * * @return */ public String loginFixed() { this.returnStr = ""; User u = this.userManager.getUserByAccount(user.getAccount()); if (u != null) { // 用户存在 user.setPwd(MD5.getMD5(user.getPwd().getBytes())); if (u.getPwd().equals(user.getPwd())) { if (u.getUserTypeNo().getName().equals("管理员")) { this.returnStr = "不是固定用户"; return "fail"; } else { session.put("userId", "" + u.getId()); session.put("userAccount", u.getAccount()); session.put("userTypeName", u.getUserTypeNo().getName()); prePage = (String) session.get("prePage"); session.remove("prePage"); if (prePage == null) { return "index"; } return SUCCESS; } } else { // 密码不正确 this.returnStr = "密码不正确"; return "fail"; } } else { // 用户不存在 this.returnStr = "用户不存在"; return "fail"; } } /** * 对于登录表单进行处理 * * @return */ public String loginAdmin() { this.returnStr = ""; User u = this.userManager.getUserByAccount(user.getAccount()); if (u != null) { // 用户存在 user.setPwd(MD5.getMD5(user.getPwd().getBytes())); if (u.getPwd().equals(user.getPwd())) { // System.out.println(">>loginCL>prePage:" + prePage); if (!u.getUserTypeNo().getName().equals("管理员")) { this.returnStr = "不是管理员用户"; return "fail"; } else { // 用户登录成功 session.put("userId", "" + u.getId()); session.put("userAccount", u.getAccount()); session.put("userTypeName", u.getUserTypeNo().getName()); prePage = (String) session.get("prePage"); session.remove("prePage"); if (prePage == null) { return "index"; } return SUCCESS; } } else { // 密码不正确 this.returnStr = "密码不正确"; return "fail"; } } else { // 用户不存在 this.returnStr = "用户不存在"; return "fail"; } } /** * 用户退出 * * @return */ public String logout() { try { session.clear(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } /** * adjax方式用户退出 * * @return */ public String ajaxLogout() { Map<String, String> myMap = new HashMap<String, String>(); try { session.remove("userAccount"); session.remove("userTypeName"); myMap.put("logoutFlag", "1"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); myMap.put("logoutFlag", "-1"); } JSONObject js = JSONObject.fromObject(myMap); returnStr = js.toString(); System.out.println("userAccount-ajaxQuitUser-returnStr:" + returnStr); return SUCCESS; } public void setSession(Map<String, Object> session) { // TODO Auto-generated method stub this.session = session; } public long getUserId() { return userId; } public void setUserId(long userId) { this.userId = userId; } @Override public String toString() { return "UserAction [currentPage=" + currentPage + ", jsonStr=" + jsonStr + ", keyWord=" + keyWord + ", prePage=" + prePage + ", returnStr=" + returnStr + ", user=" + user + ", userId=" + userId + "]"; } public int getMyPageSize() { return myPageSize; } public void setMyPageSize(int myPageSize) { this.myPageSize = myPageSize; } }
3.2 UserManagerImpl.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.xhu.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.xhu.dao.UserDao; import com.xhu.model.PageInfo; import com.xhu.model.PageResultSet; import com.xhu.model.User; import com.xhu.model.UserDetailInfo; import com.xhu.model.UserType; import com.xhu.service.UserManager; import com.xhu.util.MD5; @Component("userManager") public class UserManagerImpl implements UserManager { private UserDao userDao; public UserDao getUserDao() { return userDao; } @Resource public void setUserDao(UserDao userDao) { this.userDao = userDao; } /** * 根据用户的账号,判断用户是否存在 * * @param User * user 用户的账号 * @return boolean 如果存在,则返回true, 否则返回false * @author zhujinrong */ public boolean exists(String userAccount) { return userDao.checkUserExistsWithName(userAccount); } public int add(User user) { user.setPwd(MD5.getMD5(user.getPwd().getBytes())); return this.userDao.save(user); } public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo) { this.userDao.userDetailSaveOrUpdate(userDetailInfo); } public int delete(long userId) { return this.userDao.delete(userId); } /** * 修改用户信息 * * @param user * 用户信息 * @return void * @author zhujinrong */ public int update(long userId, User user) { return this.userDao.update(userId, user); } /** * 返回所有用户的信息 * * @param void * @return List<User> 用户列表 * @author zhujinrong */ public List<User> getAllUsers() { // TODO Auto-generated method stub return userDao.getAllusers(); } /** * 根据用户流水号,返回用户信息 * * @param int id 用户流水号 * @return User 返回用户信息 * @author zhujinrong */ public User getUserById(long id) throws Exception { // TODO Auto-generated method stub return (User) userDao.getUserById(id); } /** * 根据用户的账号,返回用户的信息 * * @param String * account 用户账号 * @return User 用户 * @author zhujinrong */ public User getUserByAccount(String account) { // TODO Auto-generated method stub return (User) userDao.getUserByAccount(account); } public UserDetailInfo getUserDetailInfo(long userId) { // TODO Auto-generated method stub return this.userDao.getUserDetailInfo(userId); } public int updateUserDetail(long userId, UserDetailInfo userDetailInfo) { // TODO Auto-generated method stub return this.userDao.updateUserDetail(userId, userDetailInfo); } public int updateByUserAccount(String userAccount, User user) { return this.userDao.updateByUserAccount(userAccount, user); } public UserType getUserTypeByName(String userTypeName) { // TODO Auto-generated method stub return this.userDao.getUserTypeByName(userTypeName); } // 分页获取记录值 public PageResultSet<User> queryByPage(int pageSize, int page) { String hql = "from User"; // 查询HQL语句 String hql2 = "select count(*) " + hql; int totalRow = this.userDao.queryRowCount(hql2); // 计算总记录个数 // System.out.println("totalRow:" + totalRow); PageInfo pageinfo = new PageInfo(totalRow, pageSize, page); // 获取该页的记录 List<User> list = this.userDao.queryByPage(hql, pageinfo .getBeginIndex(), pageinfo.getPageSize()); PageResultSet<User> pageResultSet = new PageResultSet<User>(); pageResultSet.setList(list); pageResultSet.setPageInfo(pageinfo); return pageResultSet; } public PageResultSet<User> mhQuery(String keyWord, int pageSize, int page) { // TODO Auto-generated method stub int totalRow = this.userDao.mhQueryCount(keyWord); // 计算总记录个数 // System.out.println("totalRow:" + totalRow); PageInfo pageinfo = new PageInfo(totalRow, pageSize, page); // 获取该页的记录 List<User> list = null; if (totalRow > 0) { list = this.userDao.mhQuery(keyWord, pageinfo.getBeginIndex(), pageinfo.getPageSize()); } PageResultSet<User> pageResultSet = new PageResultSet<User>(); pageResultSet.setList(list); pageResultSet.setPageInfo(pageinfo); return pageResultSet; } public PageResultSet<User> newAddFixed(int pageSize, int page) { // TODO Auto-generated method stub // TODO Auto-generated method stub int totalRow = this.userDao.newAddFixedCount(); // 计算总记录个数 // System.out.println("totalRow:" + totalRow); PageInfo pageInfo = new PageInfo(totalRow, pageSize, page); // 获取该页的记录 List<User> list = null; if (totalRow > 0) { list = this.userDao.newAddFixed(pageInfo.getBeginIndex(), pageInfo .getPageSize()); } PageResultSet<User> pageResultSet = new PageResultSet<User>(); pageResultSet.setList(list); pageResultSet.setPageInfo(pageInfo); return pageResultSet; } public int doChangePwd(long userId, String oldPwd, String newPwd) throws Exception { // TODO Auto-generated method stub newPwd = MD5.getMD5(newPwd.getBytes()); oldPwd = MD5.getMD5(oldPwd.getBytes()); return this.userDao.changePwd(userId, oldPwd, newPwd); } }
3.3 UserManager.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.xhu.service; import java.util.List; import com.xhu.model.PageResultSet; import com.xhu.model.User; import com.xhu.model.UserDetailInfo; import com.xhu.model.UserType; public interface UserManager { public boolean exists(String userAccount); /** * 添加用户信息 * * @param user * @return int -1: 发生异常; 1: 添加用户成功 */ public int add(User user); /** * 添加用户相信信息 * * @param userDetailInfo * @return void * @author zhujinrong */ public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo); /** * 根据用户流水号,获取用户的详细信息 * * @param userId * @return * @author zhujinrong */ public UserDetailInfo getUserDetailInfo(long userId); /** * 根据用户流水号,修改用户详细信息 * * @param userId * 用户流水号 * @param userDetailInfo * 用户详细信息 * @return -1:发生异常; 0:用户不存在; 1:修改用户详细信息成功 */ public int updateUserDetail(long userId, UserDetailInfo userDetailInfo); /** * 根据用户账号,删除用户信息 * * @param userAccount * @return int -1: 出现异常,删除不成功 0:用户不存在 1:删除成功! */ public int delete(long userId); /** * 根据用户流水号,修改用户信息 * * @param userId * 用户流水号 * @param user * 用户信息 * @return -1 发生异常; 0 用户不存在; 1 修改成功 */ public int update(long userId, User user); public List<User> getAllUsers(); public User getUserById(long id) throws Exception; public User getUserByAccount(String account); /** * 根据用户流水号,修改用户信息 * * @param userAccount * string 用户账号 * @param user * 要修改的用户信息 * @return -1:发生异常; 0: 用户不存在; 1:修改用户信息成功 */ public int updateByUserAccount(String userAccount, User user); /** * 根据用户类型的名称,返回用户类型对象 * * @param userTypeName * String 用户类型名称 * @return UserType 用户类型对象 */ public UserType getUserTypeByName(String userTypeName); // 分页获取记录值 public PageResultSet<User> queryByPage(int pageSize, int page); /** * 根据要查询的信息,进行模糊查询 * * @param info * 要查询的关键字 * @param pageSize * 页大小 * @param page * 要查询的页 * @return PageResultSet 页面信息和相关的数据 */ public PageResultSet<User> mhQuery(String keyWord, int pageSize, int page); /** * 新增固定用户 * * @param keyWord * @param pageSize * @param page * @return */ public PageResultSet<User> newAddFixed(int pageSize, int page); /** * 根据userId, 将用户的密码改为newPwd * * @param userId * @param oldPwd * @param newPwd * @return 1:密码修改成功 0:用户原始密码输入不正确, 修改密码不成功 -1:出错了 * @throws Exception */ public int doChangePwd(long userId, String oldPwd, String newPwd) throws Exception; }
3.4 UserDaoImpl.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.xhu.dao.impl; import java.util.List; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Component; import com.xhu.dao.UserDao; import com.xhu.model.User; import com.xhu.model.UserDetailInfo; import com.xhu.model.UserType; import com.xhu.util.MD5; @Component("userDao") public class UserDaoImpl implements UserDao { private HibernateTemplate hibernateTemplate; public int save(User user) { // TODO Auto-generated method stub int result = -1; try { hibernateTemplate.save(user); result = 1; } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } public void userDetailSaveOrUpdate(UserDetailInfo userDetailInfo) { this.hibernateTemplate.saveOrUpdate(userDetailInfo); } @SuppressWarnings("finally") public int delete(long userId) { int result = -1; try { User user = this.hibernateTemplate.load(User.class, userId); if (user == null) { result = 0; } this.hibernateTemplate.delete(user); result = 1; } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("e.getMessage:" + e.getMessage().toString()); System.out.println("e.hashCode" + e.hashCode()); } finally { return result; } } public int update(long userId, User user) { int result = -1; User pu = null; try { pu = this.getUserById(userId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // System.out.println("userDaoImpl->update:pu:" + pu); // System.out.println("userDaoImpl->update:user:" + user); if (pu == null) { result = 0; return result; } if (user.getBussinessIntro() != null) { pu.setBussinessIntro(user.getBussinessIntro()); } if (user.getCellphone() != null) { pu.setCellphone(user.getCellphone()); } if (user.getUserTypeNo() != null) { pu.setUserTypeNo(user.getUserTypeNo()); } if (user.getAddress() != null) { pu.setAddress(user.getAddress()); } if (user.getPwd() != null && !user.getPwd().trim().equals("")) { user.setPwd(MD5.getMD5(user.getPwd().getBytes())); pu.setPwd(user.getPwd()); } if (user.getRealName() != null) { pu.setRealName(user.getRealName()); } if (user.getSex() != null) { pu.setSex(user.getSex()); } try { this.hibernateTemplate.update(pu); result = 1; } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } /** * 根据用户的账号判断用户是否存在 * * @param account * 用户的账号 * @return boolean 根据用户的账号判断用户是否存在,如果存在则返回true, 否则返回false * @author zhujinrong */ @SuppressWarnings("unchecked") public boolean checkUserExistsWithName(String account) { boolean b = false; List<User> users = hibernateTemplate .find("from User u where u.account='" + account + "'"); if (users != null && users.size() > 0) { b = true; } return b; } public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } @Resource public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } /** * @author zhujinrong * @param * @return List 返回用户信息列表 */ @SuppressWarnings("unchecked") public List<User> getAllusers() { // TODO Auto-generated method stub List<User> users = (List<User>) this.hibernateTemplate .find("from User"); System.out.println("users.size=" + users.size()); return users; } /** * @author zhujinrong 根据用户的流水号,查找用户信息并返回 * @param id * 用户的流水号 * @return User 用户 */ public User getUserById(long id) throws Exception { // TODO Auto-generated method stub User user = this.hibernateTemplate.get(User.class, id); return user; } /** * @author zhujinrong 根据用户账号,查找用户并返回 * @param account * 用户账号 * @return User 用户 */ public User getUserByAccount(String account) { // TODO Auto-generated method stub Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); session.beginTransaction(); Query query = (Query) session.createQuery( "from User u where u.account = :account").setString("account", account); User user = (User) query.uniqueResult(); session.getTransaction().commit(); return user; } public UserDetailInfo getUserDetailInfo(long userId) { // TODO Auto-generated method stub Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); session.beginTransaction(); Query query = (Query) session.createQuery( "from UserDetailInfo udf where udf.user.id = :userId").setLong( "userId", userId); UserDetailInfo userDetailInfo = (UserDetailInfo) query.uniqueResult(); session.getTransaction().commit(); return userDetailInfo; } public int updateUserDetail(long userId, UserDetailInfo userDetailInfo) { // TODO Auto-generated method stub int result = -1; UserDetailInfo pudf = this.getUserDetailInfo(userId); if (pudf == null) { result = 0; return result; } if (userDetailInfo.getBmzw() != null) { pudf.setBmzw(userDetailInfo.getBmzw()); } if (userDetailInfo.getCompanyName() != null) { pudf.setCompanyName(userDetailInfo.getCompanyName()); } if (userDetailInfo.getContactAddress() != null) { pudf.setContactAddress(userDetailInfo.getContactAddress()); } if (userDetailInfo.getFax() != null) { pudf.setFax(userDetailInfo.getFax()); } if (userDetailInfo.getGardenName() != null) { pudf.setGardenName(userDetailInfo.getGardenName()); } if (userDetailInfo.getLandLine() != null) { pudf.setLandLine(userDetailInfo.getLandLine()); } if (userDetailInfo.getMsn() != null) { pudf.setMsn(userDetailInfo.getMsn()); } if (userDetailInfo.getPostCode() != null) { pudf.setPostCode(userDetailInfo.getPostCode()); } if (userDetailInfo.getQq() != null) { pudf.setQq(userDetailInfo.getQq()); } try { this.hibernateTemplate.update(pudf); result = 1; } catch (DataAccessException e) { // TODO Auto-generated catch block result = -1; e.printStackTrace(); } return result; } public int updateByUserAccount(String userAccount, User user) { // TODO Auto-generated method stub int result = -1; User pu = this.getUserByAccount(userAccount); if (pu == null) { result = 0; return result; } System.out.println("userDaoImpl->update:pu:" + pu); System.out.println("userDaoImpl->update:user:" + user); if (pu == null) { result = 0; return result; } if (user.getBussinessIntro() != null) { pu.setBussinessIntro(user.getBussinessIntro()); } if (user.getCellphone() != null) { pu.setCellphone(user.getCellphone()); } if (user.getUserTypeNo() != null) { pu.setUserTypeNo(user.getUserTypeNo()); } if (user.getAddress() != null) { pu.setAddress(user.getAddress()); } if (user.getPwd() != null) { pu.setPwd(user.getPwd()); } if (user.getRealName() != null) { pu.setRealName(user.getRealName()); } if (user.getSex() != null) { pu.setSex(user.getSex()); } try { this.hibernateTemplate.update(pu); result = 1; } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } public UserType getUserTypeByName(String userTypeName) { // TODO Auto-generated method stub Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); session.beginTransaction(); Query query = (Query) session.createQuery( "from UserType userType where userType.name=:userTypeName") .setString("userTypeName", userTypeName); UserType userType = (UserType) query.uniqueResult(); session.getTransaction().commit(); return userType; } /* * 分页查询显示 * * @param hql查询的的hql语句 * * @param beginIndex 查询记录的起始索引位置 * * @param pageSize 一次查询记录个数 * * @return List<Teacher> */ @SuppressWarnings("unchecked") public List<User> queryByPage(String hql, int beginIndex, int pageSize) { Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); org.hibernate.Transaction transaction = null; try { transaction = session.beginTransaction(); Query query = session.createQuery(hql); query.setFirstResult(beginIndex); query.setMaxResults(pageSize); List<User> list = query.list(); transaction.commit(); return list; } catch (Exception e) { if (null != transaction) { transaction.rollback(); e.printStackTrace(); } } return null; } // 查询指定HQL的结果记录总数 public int queryRowCount(final String hql) { Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); // System.out.println("queryRowCount->hql:" + hql); long result = -1; try { session.beginTransaction(); Query query = session.createQuery(hql); result = (Long) query.uniqueResult(); // 计算个数 // System.out.println("result=" + result); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } return (int) result; } @SuppressWarnings("unchecked") public List<User> mhQuery(String keyWord, int beginIndex, int pageSize) { // TODO Auto-generated method stub List<User> list = null; keyWord = "%" + keyWord + "%"; try { Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); session.beginTransaction(); Query query = session.createQuery( "from User user where user.account like :keyWord " + "or user.realName like :keyWord " + "or user.cellphone like :keyWord").setString( "keyWord", keyWord).setString("keyWord", keyWord) .setString("keyWord", keyWord); query.setFirstResult(beginIndex); query.setMaxResults(pageSize); list = query.list(); session.getTransaction().commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } public int mhQueryCount(String keyWord) { // TODO Auto-generated method stub Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); // System.out.println("queryRowCount->hql:" + hql); long result = -1; keyWord = "%" + keyWord + "%"; System.out.println("Info: UserDaoImpl-mhQueryCount-keyWord:" + keyWord); try { session.beginTransaction(); Query query = session.createQuery( "select count(*) from User user where user.account like :keyWord " + "or user.realName like :keyWord " + "or user.cellphone like :keyWord").setString( "keyWord", keyWord).setString("keyWord", keyWord) .setString("keyWord", keyWord); result = (Long) query.uniqueResult(); // 计算个数 System.out.println("result=" + result); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } return (int) result; } @SuppressWarnings("unchecked") public List<User> newAddFixed(int beginIndex, int pageSize) { // TODO Auto-generated method stub List<User> list = null; try { Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); session.beginTransaction(); Query query = session .createQuery( "from User user where user.userTypeNo.name =:userTypeName order by user.addTime desc") .setString("userTypeName", "固定用户"); query.setFirstResult(beginIndex); query.setMaxResults(pageSize); list = (List<User>) query.list(); session.getTransaction().commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } public int newAddFixedCount() { Session session = this.hibernateTemplate.getSessionFactory() .getCurrentSession(); // System.out.println("queryRowCount->hql:" + hql); long result = -1; try { session.beginTransaction(); Query query = session .createQuery( "select count(*) from User user where user.userTypeNo.name=:userTypeName") .setString("userTypeName", "固定用户"); result = (Long) query.uniqueResult(); // 计算个数 System.out.println("result=" + result); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } return (int) result; } public int changePwd(long userId, String oldPwd, String newPwd) throws Exception { // TODO Auto-generated method stub int result = -1; User user = this.hibernateTemplate.load(User.class, userId); if (user.getPwd().equals(oldPwd)) { user.setPwd(newPwd); this.hibernateTemplate.update(user); result = 1; } else { result = 0; } return result; } }
3.5 UserDao.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc.url=jdbc\:sqlserver\://localhost\:1433;databaseName\=wlphuoD1 jdbc.username=sa jdbc.password=123456
(3) log4j.properties
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ 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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ 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"> 欢迎您 <a href="fixed/userf-personnalInfo" style="text-decoration: none; color: blue;"> <span id="loginUserAccount"><%=userAccount %></span></a> <% 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="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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ 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"> <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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ 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文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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>
作者:BestNow
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。