要求用Spring + Struts2 + Spring JDBC Template+ajaxanywhere+jquery实现登录、部门管理(部门编号、部门名称,前端使用jquery ajax,要求增删改后列表局部刷新),实现用户管理功能(增加修改删除查询用户,用户信息包含用户名、密码、用户编号、真实姓名、所属部门、是否有效标识即可(前端使用ajaxanywhere,要求添加删除修改后列表局部刷新)
项目已经上传,点击下载所有代码
代码结构
applicationContext.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
default-lazy-init="true">
<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="driverClassName" value="${jdbc.driverClassName}" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="userAction" class="com.dirk.action.UserAction">
<property name="userService" ref="UserService"></property>
<property name="departmentService" ref="departmentService"></property>
</bean>
<bean id="departmentAction" class = "com.dirk.action.DepartmentAction">
<property name="departmentService" ref="departmentService"></property>
</bean>
<bean id="userService" class="com.dirk.service.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="departmentService" class="com.dirk.service.DepartmentServiceImpl">
<property name="departmentDao" ref="departmentDao"></property>
</bean>
<bean id="userDao" class="com.dirk.dao.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="departmentDao" class="com.dirk.dao.DepartmentDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>
db.properties
jdbc.username=root
jdbc.password=root
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/dirk
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="mypackage" extends="struts-default" namespace="/">
<action name="login" class="com.dirk.action.UserAction" method="login">
<result name="success">/WEB-INF/jsp/department/userManage.jsp</result>
<result name="error">/WEB-INF/jsp/login/login.jsp</result>
</action>
<action name="addUser" class="com.dirk.action.UserAction"
method="addUser">
<result name="success">/WEB-INF/jsp/department/userManage.jsp</result>
</action>
<action name="updateUser" class="com.dirk.action.UserAction"
method="updateUser">
<result name="success">/WEB-INF/jsp/department/userManage.jsp</result>
</action>
<action name="deleteUser" class="com.dirk.action.UserAction"
method="deleteUser">
<result name="success">/WEB-INF/jsp/department/userManage.jsp</result>
</action>
<action name="searchUser" class="com.dirk.action.UserAction"
method="searchUser">
<result name="success">/WEB-INF/jsp/department/userManage.jsp</result>
</action>
<action name="department" class="com.dirk.action.DepartmentAction"
method="listDepartment">
<result name="success">/WEB-INF/jsp/department/department.jsp</result>
</action>
<action name="addDepartment" class="com.dirk.action.DepartmentAction"
method="addDepartment">
<result name="success">/WEB-INF/jsp/department/department.jsp</result>
</action>
<action name="updateDepartment" class="com.dirk.action.DepartmentAction"
method="updateDepartment">
<result name="success">/WEB-INF/jsp/department/department.jsp</result>
</action>
<action name="deleteDepartment" class="com.dirk.action.DepartmentAction"
method="deleteDepartment">
<result name="success">/WEB-INF/jsp/department/department.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>firstDay</display-name>
<!-- 配置首页 -->
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login/login.jsp</welcome-file>
</welcome-file-list>
<!-- 配置过滤器 -->
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>AjaxAnywhere</filter-name>
<filter-class>org.ajaxanywhere.AAFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AjaxAnywhere</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>*.action</url-pattern>
</filter-mapping>
<!-- spring的监听器配置开始 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- spring的监听器配置结束 -->
</web-app>
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login page</title>
</head>
<body>
<form name="loginform" action="login.action" method="post">
用户:<input type="text" name="user.userName" /> 密码:<input
type="password" name="user.password" /> <input type="submit"
value="登录" /><br>
</form>
${message}
</body>
</html>
UserAction.java
package com.dirk.action;
import java.util.List;
import com.dirk.entity.Department;
import com.dirk.entity.User;
import com.dirk.service.DepartmentService;
import com.dirk.service.UserService;
import com.opensymphony.xwork2.Action;
@SuppressWarnings("serial")
public class UserAction extends BaseAction {
private UserService userService;
private DepartmentService departmentService;
private User user;
private String message;
private List<User> queryList;
private List<Department> departments;
public String login() {
System.out.println(user);
User user1 = userService.findUserByName(user);
if (null == user1) {
setMessage("用户名不存在!");
return Action.ERROR;
}
if (!user.getPassword().equals(user1.getPassword())) {
setMessage("密码错误!");
return Action.ERROR;
} else {
setQueryList(userService.findAll());
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
}
public String addUser() {
userService.addUser(user);
setQueryList(userService.findAll());
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String updateUser() {
userService.update(user);
setQueryList(userService.findAll());
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String deleteUser() {
userService.delete(user);
setQueryList(userService.findAll());
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String searchUser() {
String userName = getRequest().getParameter("userName");
String department = getRequest().getParameter("department");
boolean sign = Boolean.parseBoolean(getRequest().getParameter("sign"));
if ("".equals(userName) && "".equals(department)) {
if (sign) {
setQueryList(userService.findAll());
} else {
setQueryList(userService.getAll());
}
} else {
setQueryList(userService.findByConstraint(userName, department, sign));
}
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public DepartmentService getDepartmentService() {
return departmentService;
}
public void setDepartmentService(DepartmentService departmentService) {
this.departmentService = departmentService;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<User> getQueryList() {
return queryList;
}
public void setQueryList(List<User> queryList) {
this.queryList = queryList;
}
public List<Department> getDepartments() {
return departments;
}
public void setDepartments(List<Department> departments) {
this.departments = departments;
}
}
UserDaoImpl.java
package com.dirk.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import com.dirk.entity.User;
public class UserDaoImpl implements UserDao {
private JdbcTemplate jdbcTemplate;
@SuppressWarnings("unchecked")
@Override
public User findUserByName(User user) {
String selectSql = "select * from user where username= ?";
List<User> users = jdbcTemplate.query(selectSql, new Object[] { user.getUserName() }, new UserRowMap());
return null != users && users.size() != 0 ? users.get(0) : null;
}
@SuppressWarnings("unchecked")
@Override
public User findById(int id) {
String selectSql = "select * from user where id= ?";
List<User> users = jdbcTemplate.query(selectSql, new Object[] { id }, new UserRowMap());
return null != users && users.size() != 0 ? users.get(0) : null;
}
@SuppressWarnings("unchecked")
@Override
public List<User> findAll() {
String selectSql = "select * from user where sign = true";
List<User> users = jdbcTemplate.query(selectSql, new UserRowMap());
return users;
}
@Override
public void addUser(User user) {
String insertSql = "insert into user (`id`,`username`, `password`, `realName`, `department`, `sign`)"
+ "values (?,?,?,?,?,true)";
jdbcTemplate.update(insertSql, new Object[] { user.getId(), user.getUserName(), user.getPassword(),
user.getRealName(), user.getDepartment() });
}
@Override
public void update(User user) {
String updateSql = "update user set `id`=?, `username`=?, `password`=?, `realName`=?, `department`=?, `sign`=true WHERE (`id`=?)";
jdbcTemplate.update(updateSql, new Object[] { user.getId(), user.getUserName(), user.getPassword(),
user.getRealName(), user.getDepartment(), user.getId() });
}
@Override
public void delete(User user) {
String updateSql = "update user set `id`=?, `username`=?, `password`=?, `realName`=?, `department`=?, `sign`=false WHERE (`id`=?)";
jdbcTemplate.update(updateSql, new Object[] { user.getId(), user.getUserName(), user.getPassword(),
user.getRealName(), user.getDepartment(), user.getId() });
}
@SuppressWarnings("unchecked")
@Override
public List<User> findByConstraint(String userName, String department, boolean sign) {
if ("".equals(userName)) {
userName = null;
}
if ("".equals(department)) {
department = null;
}
String selectSql = "select * from user where username = ifnull(?,username) and department = ifnull(?,department) and sign = ?";
List<User> users = jdbcTemplate.query(selectSql, new Object[] { userName, department, sign }, new UserRowMap());
return users;
}
@SuppressWarnings("unchecked")
@Override
public List<User> getAll() {
String selectSql = "select * from user where sign = false";
List<User> users = jdbcTemplate.query(selectSql, new UserRowMap());
return users;
}
@SuppressWarnings("rawtypes")
class UserRowMap implements RowMapper {
@Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUserName(rs.getString("userName"));
user.setPassword(rs.getString("password"));
user.setRealName(rs.getString("realName"));
user.setDepartment(rs.getString("department"));
user.setSign(rs.getBoolean("sign"));
return user;
}
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
User.java
package com.dirk.entity;
import java.io.Serializable;
@SuppressWarnings("serial")
public class User implements Serializable{
private int id;
private String userName;
private String password;
private String realName;
private String department;
private boolean sign;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public boolean isSign() {
return sign;
}
public void setSign(boolean sign) {
this.sign = sign;
}
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", realName=" + realName + ", department=" + department + ", sign=" + sign + "]";
}
}
UserServiceImpl.java
package com.dirk.service;
import java.util.List;
import com.dirk.dao.UserDao;
import com.dirk.entity.User;
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Override
public User findUserByName(User user) {
return userDao.findUserByName(user);
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
@Override
public void addUser(User user) {
int id = user.getId();
User user1 = userDao.findById(id);
if (user1 == null) {
userDao.addUser(user);
}
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public void delete(User user) {
userDao.delete(user);
}
@Override
public List<User> findByConstraint(String userName, String department, boolean sign) {
return userDao.findByConstraint(userName, department, sign);
}
@Override
public List<User> getAll() {
return userDao.getAll();
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
BaseAction.java
package com.dirk.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class BaseAction extends ActionSupport{
public HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
public ServletContext getContext() {
return ServletActionContext.getServletContext();
}
public HttpSession getSession() {
return getRequest().getSession();
}
}
DepartmentAction.java
package com.dirk.action;
import java.util.List;
import com.dirk.entity.Department;
import com.dirk.service.DepartmentService;
import com.opensymphony.xwork2.Action;
@SuppressWarnings("serial")
public class DepartmentAction extends BaseAction {
private DepartmentService departmentService;
private Department department;
private List<Department> departments;
public String listDepartment() {
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String addDepartment() {
System.out.println(department);
departmentService.add(department);
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String updateDepartment() {
System.out.println(department);
departmentService.update(department);
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public String deleteDepartment() {
departmentService.delete(department);
setDepartments(departmentService.findAll());
return Action.SUCCESS;
}
public DepartmentService getDepartmentService() {
return departmentService;
}
public void setDepartmentService(DepartmentService departmentService) {
this.departmentService = departmentService;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public List<Department> getDepartments() {
return departments;
}
public void setDepartments(List<Department> departments) {
this.departments = departments;
}
}
DepartmentDaoImpl.java
package com.dirk.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import com.dirk.entity.Department;
public class DepartmentDaoImpl implements DepartmentDao {
private JdbcTemplate jdbcTemplate;
@SuppressWarnings("unchecked")
@Override
public List<Department> findAll() {
String selectSql = "select * from department ";
List<Department> list = jdbcTemplate.query(selectSql, new DepartmentRowMap());
return list;
}
@Override
public void add(Department department) {
String insertSql = "insert into department (`id`, `departmentName`) values (?, ?)";
jdbcTemplate.update(insertSql, new Object[] { department.getId(), department.getDepartmentName() });
}
@Override
public void update(Department department) {
System.out.println("---"+ department);
String updateSql = "update department set `id`=?, `departmentName`=? WHERE (`id`=?)";
jdbcTemplate.update(updateSql,
new Object[] { department.getId(), department.getDepartmentName(), department.getId() });
}
@Override
public void delete(Department department) {
String deleteSql = "delete from department where id = ?";
jdbcTemplate.update(deleteSql, new Object[] { department.getId() });
}
@SuppressWarnings("rawtypes")
class DepartmentRowMap implements RowMapper {
@Override
public Department mapRow(ResultSet rs, int index) throws SQLException {
Department department = new Department();
department.setId(rs.getInt("id"));
department.setDepartmentName(rs.getString("departmentName"));
return department;
}
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
DepartmentServiceImpl.java
package com.dirk.service;
import java.util.List;
import com.dirk.dao.DepartmentDao;
import com.dirk.entity.Department;
public class DepartmentServiceImpl implements DepartmentService {
private DepartmentDao departmentDao;
@Override
public List<Department> findAll() {
return departmentDao.findAll();
}
@Override
public void add(Department department) {
departmentDao.add(department);
}
@Override
public void delete(Department department) {
departmentDao.delete(department);
}
@Override
public void update(Department department) {
departmentDao.update(department);
}
public DepartmentDao getDepartmentDao() {
return departmentDao;
}
public void setDepartmentDao(DepartmentDao departmentDao) {
this.departmentDao = departmentDao;
}
}