Java的SSH网站

1、框架

  strusts2 + Hibernate + spring

2、图片

  

    图1-1 网站结构

  

    图1-2 java代码结构

3、源代码

3.1 UserAction.java

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

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

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

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

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="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>

时间: 2024-10-13 19:28:16

Java的SSH网站的相关文章

基于Java Web SSH框架的网上书店

获取项目源文件,技术交流与指导联系Q:1225467431 摘   要 随着互联网技术的发展,网上购物越来越流行,而网上书店更是逐渐受到越来越多的人关注,不用涉及交通.不用到书店翻阅.即可看到全国各地的书籍价格.更加全面地搜索自己喜欢的书籍.需要的书籍.通过网络销售系统的平台,商家将拥有更大的市场,能更加及时快速地得到用户对于商品的反响,可以随时调整销售策略,提高商家的市场竞争力.对于消费者也提供了方便,消费者可以不受时间和地域的限制进行购物,并且可以获取更多信息.. 本文阐述了如何构建基于B/

java程序员网站

blog or webProject https://github.com/ http://www.open-open.com/2_23.htm http://www.07net01.com/linux/HBase_Hadoopxuexibiji_62422_1359608614.html hbase/hadoop学习笔记 java程序员网站

【fastweixin框架教程3】JAVA进行HTTPS网站访问,PKIX path building failed解决方法

上几篇文章我们谈到fastweixin使用问题和修改. 今天的问题就是使用JAVA访问HTTPS网站时候经常出现javax.net.ssl.SSLHandshakeException javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderEx

从0开始 独立完成企业级Java电商网站开发

第1章 课程介绍(提供4900+问题与答案库)(提供4900+问题与答案库,你遇到的坑,别人已经出坑了)本章详细介绍Java服务端课程内容,项目演示课程安排,高大上的架构从一台服务器演变到高性能.高并发.高可用架构的过程,大型架构演进思想以及代码演进细节.(特别说明:本课程是项目实战中级课程,不会讲语法层面的内容,实战前需具备Java,SSM,Linux等基础)...1-1 课程导学1-2 课程学习与解决问题指南(最重要的一节课)1-3 大型Java项目架构演进解析 第2章 开发环境安装与配置讲

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

声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支付管理 集成工具使用idea,一个springboot项目,使用maven进行依赖管理,持久层使用mybatis(接口+mapper xml),没有前端页面,仅服务端开发,最后返回封装好的数据,以json方式呈现,可以使用postman工具,google浏览器的Restlet Client插件等进行

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

Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台.几乎

JAVA SSH 网站 二手交易商城 毕业设计 从0开发

原文地址:https://www.cnblogs.com/smartin/p/12178935.html

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

无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说,但Java开发的系统,我还是能您给插上几句话: JVMJEE容器中运行的JVM参数配置参数的正确使用直接关系到整个系统的性能和处理能力,JVM的调优主要是对内存管理方面的调优,优化的方向分为以下4点:1.HeapSize             堆的大小,也可以说Java虚拟机使用内存的策略,这点是

java如何在网站中接入qq登录功能

其实接入qq登录还是很简单的,但是你既然要做qq登录肯定你得网站要能够在外网访问的到, 因为qq在对你得网站授权之间会进行人工检查,检查你得图标摆放位置合不合理,网站是否违法等内容. 当你的网站能够在外网访问的时候 我们在qq开发者网站中申请网站的授权 用你的qq登录这个网站 http://connect.qq.com/ 在管理中心创建你的应用 创建应用的时候需要你填写一些网站的基本信息 如访问网址.登录成功后回调地址(也就是你处理登录请求的action) 腾讯会在request中封装qq验证后