前言:Spring+SpringMVC+MyBatis实现过程展示
演示
包结构如下:
注:配置文件包含数据库账号密码等~
dao包(用于连接数据库+操作sql语句+获取结果+关闭连接)大概结构
UserDao代码如下:
package com.zsx.dao;
import java.util.List;
import com.zsx.model.User;
public interface UserDao {
// 用户登录
public User userLogin(User user);
// 获取用户总数
public int count(String name, String depart, String role, String state);
// 分页查询用户
public List<User> getUser(String begin, String end, String name, String depart, String role, String state);
// 禁用/启用用户
public boolean BanUser(int userId, int userState);
// 删除用户
public boolean DeleteUser(int userId);
// 清空密码
public boolean ClearUser(int userId);
// 注册用户
public boolean addUser(String name, String pwd, String depart, String role, String state);
// 修改用户
public boolean modUser(int userId, String name, String depart, String role);
// 名字查id
public int findIdByName(String name);
// Id查密码
public String findPwdById(int userId);
// 修改密码
public boolean modPwd(int userId, String pwd);
// 查看用户姓名
public List<String> findName();
// id查名字
public String findNameById(int userId);
}
UserDaoImpl代码如下:
package com.zsx.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.zsx.db.DbUtil;
import com.zsx.model.User;
public class UserDaoImpl implements UserDao {
@Override
public User userLogin(User user) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
String sql = "SELECT USER_ID,USER_NAME,USER_PWD,USER_AGE,DEPARTMENT_ID,USER_SEX,USER_CTIME,USER_MTIME,ROLE_ID,USER_STATE FROM USER_INF WHERE USER_NAME=? AND USER_PWD=? AND USER_STATE=1";
try {
p = conn.prepareStatement(sql);
p.setString(1, user.getUserName());
p.setString(2, user.getUserPwd());
set = p.executeQuery();
if (set.next()) {
int userId = set.getInt("USER_ID");
String userName = set.getString("USER_NAME");
String userPwd = set.getString("USER_PWD");
int userAge = set.getInt("USER_AGE");
int departmentId = set.getInt("DEPARTMENT_ID");
int userSex = set.getInt("USER_SEX");
Date userCtime = set.getDate("USER_CTIME");
Date userMtime = set.getDate("USER_MTIME");
int roleId = set.getInt("ROLE_ID");
int userState = set.getInt("USER_STATE");
User u = new User(userId, userName, userPwd, userAge, departmentId, userSex, userCtime, userMtime,
roleId, userState);
return u;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, set);
}
return null;
}
@Override
public int count(String name, String depart, String role, String state) {
String sql = "SELECT COUNT(*) AS CT FROM USER_INF A WHERE 1=1 ";
List<String> list = new ArrayList<String>();
if (!name.equals("") || name == null) {
sql += "AND A.USER_NAME LIKE ?";
list.add("%" + name + "%");
}
if (!depart.equals("") || depart == null) {
sql += "AND A.DEPARTMENT_ID=?";
if (depart.equals("内科")) {
depart = "1";
}
if (depart.equals("外科")) {
depart = "2";
}
if (depart.equals("五官科")) {
depart = "3";
}
list.add(depart);
}
if (!role.equals("") || role == null) {
sql += "AND A.ROLE_ID= ?";
if (role.equals("管理员")) {
role = "1";
} else if (role.equals("销售人员")) {
role = "2";
} else {
role = "3";
}
list.add(role);
}
if (!state.equals("") || state == null) {
sql += "AND A.USER_STATE=?";
if (state.equals("禁用")) {
state = "0";
} else {
state = "1";
}
list.add(state);
}
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
int count = 0;
try {
p = conn.prepareStatement(sql);
for (int i = 0; i < list.size(); i++) {
p.setString(i + 1, list.get(i));
}
set = p.executeQuery();
if (set.next()) {
count = set.getInt("CT");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return count;
}
@Override
public List<User> getUser(String begin, String end, String name, String depart, String role, String state) {
String sql = "SELECT * FROM (SELECT A.USER_ID,A.USER_NAME,A.USER_PWD,A.USER_AGE,B.DEPARTMENT_NAME,A.USER_SEX,A.USER_CTIME, A.USER_MTIME,A.ROLE_ID,A.USER_STATE,ROWNUM AS RN FROM USER_INF A"
+ " LEFT JOIN DEPARTMENT_INF B ON A.DEPARTMENT_ID=B.DEPARTMENT_ID WHERE 1=1 ";
List<String> list = new ArrayList<String>();
List<User> u = new ArrayList<User>();
if (!name.equals("") || name == null) {
sql += "AND A.USER_NAME LIKE ?";
list.add("%" + name + "%");
}
if (!depart.equals("") || depart == null) {
sql += "AND A.DEPARTMENT_ID=?";
if (depart.equals("内科")) {
depart = "1";
}
if (depart.equals("外科")) {
depart = "2";
}
if (depart.equals("五官科")) {
depart = "3";
}
list.add(depart);
}
if (!role.equals("") || role == null) {
sql += "AND A.ROLE_ID= ?";
if (role.equals("管理员")) {
role = "1";
} else if (role.equals("销售人员")) {
role = "2";
} else {
role = "3";
}
list.add(role);
}
if (!state.equals("") || state == null) {
sql += "AND A.USER_STATE=?";
if (state.equals("禁用")) {
state = "0";
} else {
state = "1";
}
list.add(state);
}
sql += " )TMP WHERE TMP.RN>? AND TMP.RN<=?";
list.add(begin);
list.add(end);
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
try {
p = conn.prepareStatement(sql);
for (int i = 0; i < list.size(); i++) {
p.setString(i + 1, list.get(i));
}
set = p.executeQuery();
while (set.next()) {
User user = new User(set.getInt("USER_ID"), set.getString("USER_NAME"), set.getString("USER_PWD"),
set.getInt("USER_AGE"), set.getString("DEPARTMENT_NAME"), set.getInt("USER_SEX"),
set.getDate("USER_CTIME"), set.getDate("USER_MTIME"), set.getInt("ROLE_ID"),
set.getInt("USER_STATE"));
u.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return u;
}
@Override
public boolean BanUser(int userId, int userState) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
String sql = "UPDATE USER_INF SET USER_STATE =? WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
p.setInt(1, userState);
p.setInt(2, userId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public boolean DeleteUser(int userId) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
String sql = "DELETE FROM USER_INF WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
p.setInt(1, userId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public boolean ClearUser(int userId) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
String sql = "UPDATE USER_INF SET USER_PWD =? WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
p.setString(1, "123456");
p.setInt(2, userId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public boolean addUser(String name, String pwd, String depart, String role, String state) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
int departId = 0;
int roleId = 0;
int stateId = 0;
String sql = "INSERT INTO USER_INF VALUES(SEQ_USER_INF.NEXTVAL,?,?,20,?,1,SYSDATE,SYSDATE,?,?)";
if (depart.equals("内科")) {
departId = 1;
}
if (depart.equals("外科")) {
departId = 2;
}
if (depart.equals("五官科")) {
departId = 3;
}
if (role.equals("管理员")) {
roleId = 1;
}
if (role.equals("销售人员")) {
roleId = 2;
}
if (role.equals("医生")) {
roleId = 3;
}
if (state.equals("启用")) {
stateId = 1;
}
if (state.equals("禁用")) {
stateId = 0;
}
try {
p = conn.prepareStatement(sql);
p.setString(1, name);
p.setString(2, pwd);
p.setInt(3, departId);
p.setInt(4, roleId);
p.setInt(5, stateId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public boolean modUser(int userId, String name, String depart, String role) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
int departId = 0;
int roleId = 0;
String sql = "UPDATE USER_INF SET USER_NAME =? ,DEPARTMENT_ID=?, ROLE_ID=? WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
if (depart.equals("内科")) {
departId = 1;
}
if (depart.equals("外科")) {
departId = 2;
}
if (depart.equals("五官科")) {
departId = 3;
}
if (role.equals("管理员")) {
roleId = 1;
}
if (role.equals("销售人员")) {
roleId = 2;
}
if (role.equals("医生")) {
roleId = 3;
}
p.setString(1, name);
p.setInt(2, departId);
p.setInt(3, roleId);
p.setInt(4, userId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public int findIdByName(String name) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
String sql = "SELECT USER_ID FROM USER_INF WHERE USER_NAME=?";
try {
p = conn.prepareStatement(sql);
p.setString(1, name);
set = p.executeQuery();
if (set.next()) {
return set.getInt("USER_ID");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, set);
}
return 0;
}
@Override
public String findPwdById(int user_id) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
String sql = "SELECT USER_PWD FROM USER_INF WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
p.setInt(1, user_id);
set = p.executeQuery();
if (set.next()) {
return set.getString("USER_PWD");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, set);
}
return null;
}
@Override
public boolean modPwd(int userId, String pwd) {
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
String sql = "UPDATE USER_INF SET USER_PWD=? WHERE USER_ID=?";
try {
p = conn.prepareStatement(sql);
p.setString(1, pwd);
p.setInt(2, userId);
int set = p.executeUpdate();
if (set > 0) {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return false;
}
@Override
public List<String> findName() {
String sql = "SELECT USER_NAME FROM USER_INF WHERE USER_STATE=1 ";
List<String> list = new ArrayList<String>();
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
try {
p = conn.prepareStatement(sql);
set = p.executeQuery();
while (set.next()) {
list.add(set.getString("USER_NAME"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return list;
}
@Override
public String findNameById(int userId) {
String sql = "SELECT USER_NAME FROM USER_INF WHERE USER_ID=? ";
List<String> list = new ArrayList<String>();
Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement p = null;
ResultSet set = null;
try {
p = conn.prepareStatement(sql);
p.setInt(1, userId);
set = p.executeQuery();
if (set.next()) {
return (set.getString("USER_NAME"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.getDbUtil().close(conn, p, null);
}
return null;
}
}
db包:
DbUtil(数据库连接工具类)代码如下:
package com.zsx.db;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DbUtil {
private static DbUtil dbUtil;
private String driver;
private String url;
private String user;
private String password;
//
public static DbUtil getDbUtil() {
if (dbUtil == null) {
dbUtil = new DbUtil();
}
return dbUtil;
}
private DbUtil() {
Properties p = new Properties();
try {
p.load(DbUtil.class.getClassLoader().getResourceAsStream("db.properties"));
driver = p.getProperty("driver");
url = p.getProperty("url");
user = p.getProperty("user");
password = p.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void close(Connection conn, PreparedStatement p, ResultSet set) {
if (set != null) {
try {
set.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (p != null) {
try {
p.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Connection getConn() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
filter包:
LoginFilter(文字编码拦截器)代码如下:
package com.zsx.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) arg0;
HttpServletResponse resp = (HttpServletResponse) arg1;
req.setCharacterEncoding("UTF-8");// 发上来的信息设置成UTF-8
resp.setCharacterEncoding("UTF-8");// 发下去的信息设置成UTF-8
resp.setContentType("text/html;charset=UTF-8");// 发下去的信息设置成UTF-8
arg2.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
model包:
User代码如下:
package com.zsx.model;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class User {
private int userId;
private String userName;
private String userPwd;
private int userAge;
private int departmentId;
private String departmentName;
private int userSex;
private Date userCtime;
private Date userMtime;
private int roleId;
private int userState;
private Map<String, Object> map = new HashMap<String, Object>();
public User() {
// TODO Auto-generated constructor stub
}
public User(String userName, String userPwd) {
super();
this.userName = userName;
this.userPwd = userPwd;
}
public User(int userId, String userName, String userPwd, int userAge, int departmentId, int userSex, Date userCtime,
Date userMtime, int roleId, int userState) {
super();
this.userId = userId;
this.userName = userName;
this.userPwd = userPwd;
this.userAge = userAge;
this.departmentId = departmentId;
this.userSex = userSex;
this.userCtime = userCtime;
this.userMtime = userMtime;
this.roleId = roleId;
this.userState = userState;
}
public User(int userId, String userName, String userPwd, int userAge, String departmentName, int userSex,
Date userCtime, Date userMtime, int roleId, int userState) {
super();
this.userId = userId;
this.userName = userName;
this.userPwd = userPwd;
this.userAge = userAge;
this.departmentName = departmentName;
this.userSex = userSex;
this.userCtime = userCtime;
this.userMtime = userMtime;
this.roleId = roleId;
this.userState = userState;
}
public int getUserId() {
return userId;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public int getDepartmentId() {
return departmentId;
}
public void setDepartmentId(int departmentId) {
this.departmentId = departmentId;
}
public int getUserSex() {
return userSex;
}
public void setUserSex(int userSex) {
this.userSex = userSex;
}
public Date getUserCtime() {
return userCtime;
}
public void setUserCtime(Date userCtime) {
this.userCtime = userCtime;
}
public Date getUserMtime() {
return userMtime;
}
public void setUserMtime(Date userMtime) {
this.userMtime = userMtime;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public int getUserState() {
return userState;
}
public void setUserState(int userState) {
this.userState = userState;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
}
service包:
UserService代码如下:
package com.zsx.service;
import java.util.List;
import com.zsx.model.User;
public interface UserService {
// 用户登录
public User userLogin(User user);
// 获取用户总数
public int count(String name, String depart, String role, String state);
// 分页查询用户
public List<User> getUser(String begin, String end, String name, String depart, String role, String state);
// 禁用/启用用户
public boolean BanUser(int userId, int userState);
// 删除用户
public boolean DeleteUser(int userId);
// 清空密码
public boolean ClearUser(int userId);
// 注册用户
public boolean addUser(String name, String pwd, String depart, String role, String state);
// 修改用户
public boolean modUser(int userId, String name, String depart, String role);
// 名字查id
public int findIdByName(String name);
// Id查密码
public String findPwdById(int user_id);
// 修改密码
public boolean modPwd(int userId, String pwd);
// 查看用户姓名
public List<String> findName();
// id查名字
public String findNameById(int userId);
}
UserServiceimpl代码如下:
package com.zsx.service;
import java.util.List;
import com.zsx.dao.UserDao;
import com.zsx.dao.UserDaoImpl;
import com.zsx.model.User;
public class UserServiceImpl implements UserService {
@Override
public User userLogin(User user) {
UserDao u = new UserDaoImpl();
return u.userLogin(user);
}
@Override
public int count(String name, String depart, String role, String state) {
UserDao u = new UserDaoImpl();
return u.count(name, depart, role, state);
}
@Override
public List<User> getUser(String begin, String end, String name, String depart, String role, String state) {
UserDao u = new UserDaoImpl();
return u.getUser(begin, end, name, depart, role, state);
}
@Override
public boolean BanUser(int userId, int userState) {
UserDao u = new UserDaoImpl();
return u.BanUser(userId, userState);
}
@Override
public boolean DeleteUser(int userId) {
UserDao u = new UserDaoImpl();
return u.DeleteUser(userId);
}
@Override
public boolean ClearUser(int userId) {
UserDao u = new UserDaoImpl();
return u.ClearUser(userId);
}
@Override
public boolean modUser(int userId, String name, String depart, String role) {
UserDao u = new UserDaoImpl();
return u.modUser(userId, name, depart, role);
}
@Override
public int findIdByName(String name) {
UserDao u = new UserDaoImpl();
return u.findIdByName(name);
}
@Override
public boolean addUser(String name, String pwd, String depart, String role, String state) {
UserDao u = new UserDaoImpl();
return u.addUser(name, pwd, depart, role, state);
}
@Override
public String findPwdById(int user_id) {
UserDao u = new UserDaoImpl();
return u.findPwdById(user_id);
}
@Override
public boolean modPwd(int userId, String pwd) {
UserDao u = new UserDaoImpl();
return u.modPwd(userId, pwd);
}
@Override
public List<String> findName() {
UserDao u = new UserDaoImpl();
return u.findName();
}
@Override
public String findNameById(int userId) {
UserDao u = new UserDaoImpl();
return u.findNameById(userId);
}
}
servlet包:(注:由于每个连接都相对应的servlet,所以这边的servlet会比较多。这个问题在引入特定框架后得以改善)
类过多。这里以用户登录、注册servlet为例。
UserLoginServlet.java(登录):
package com.zsx.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.codehaus.jackson.map.ObjectMapper;
import com.zsx.model.Message;
import com.zsx.model.User;
import com.zsx.service.LogService;
import com.zsx.service.LogServiceImpl;
import com.zsx.service.UserServiceImpl;
public class UserLoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 验证码
HttpSession hs = req.getSession();
String v = String.valueOf(hs.getAttribute("code"));
// 网页的数据
String userName = req.getParameter("name");
String userPwd = req.getParameter("pwd");
String validate = req.getParameter("validate");
User user = new User(userName, userPwd);
User u = new UserServiceImpl().userLogin(user);
String id = "";
String msg = "";
String url = "main.jsp";
if (u != null) {
id = "1";
msg = "登陆成功";
// 添加日志
LogService log = new LogServiceImpl();
log.addLog(userName, "登陆系统");
} else {
id = "0";
msg = "登陆失败";
}
if (!v.equals(validate)) {
id = "0";
msg = "验证码无效";
}
ObjectMapper om = new ObjectMapper();
Message m = new Message(id, url, msg);
String json = om.writeValueAsString(m);
resp.getWriter().println(json);
hs.setAttribute("user", u);
}
}
AddUserServlet.java(注册):
package com.zsx.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.codehaus.jackson.map.ObjectMapper;
import com.zsx.model.Message;
import com.zsx.service.LogService;
import com.zsx.service.LogServiceImpl;
import com.zsx.service.UserServiceImpl;
public class AddUserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int userId = Integer.valueOf(req.getParameter("userId"));
String na = new UserServiceImpl().findNameById(userId);
String name = req.getParameter("name");
String pwd = req.getParameter("pwd");
String depart = req.getParameter("depart");
String role = req.getParameter("role");
String state = req.getParameter("state");
boolean key = new UserServiceImpl().addUser(name, pwd, depart, role, state);
String id = "0";
String msg = "注册失败。已存在该账号";
if (key) {
id = "1";
msg = "注册成功!";
// 添加日志
LogService log = new LogServiceImpl();
log.addLog(na, "注册新用户。用户名:" + name);
}
ObjectMapper om = new ObjectMapper();
Message m = new Message(id, null, msg);
String json = om.writeValueAsString(m);
resp.getWriter().println(json);
}
}
db.properties配置数据库文件:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
user=*******
password=******
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_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>cardAdmin</display-name>
<welcome-file-list>
<welcome-file>userLogin.jsp</welcome-file>
</welcome-file-list>
<!-- 文字过滤器 -->
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.zsx.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 管理人员登录 -->
<!-- 验证码 -->
<servlet>
<servlet-name>vaildateServlet</servlet-name>
<servlet-class>com.zsx.servlet.VaildateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>vaildateServlet</servlet-name>
<url-pattern>/vaildate</url-pattern>
</servlet-mapping>
<!-- 用户登录 -->
<servlet>
<servlet-name>userLoginServlet</servlet-name>
<servlet-class>com.zsx.servlet.UserLoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userLoginServlet</servlet-name>
<url-pattern>/userLogin</url-pattern>
</servlet-mapping>
<!-- 用户注销 -->
<servlet>
<servlet-name>userLogoutServlet</servlet-name>
<servlet-class>com.zsx.servlet.UserLogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userLogoutServlet</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>
<!-- 管理端的侧边栏获取 -->
<servlet>
<servlet-name>userGetMenu</servlet-name>
<servlet-class>com.zsx.servlet.UserGetMenu</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userGetMenu</servlet-name>
<url-pattern>/userGetMenu</url-pattern>
</servlet-mapping>
<!-- 人员获取 -->
<servlet>
<servlet-name>getUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getUserServlet</servlet-name>
<url-pattern>/getUser</url-pattern>
</servlet-mapping>
<!-- 人员禁用/启用 -->
<servlet>
<servlet-name>banUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.BanUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>banUserServlet</servlet-name>
<url-pattern>/banUser</url-pattern>
</servlet-mapping>
<!-- 人员删除 -->
<servlet>
<servlet-name>deleteUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.DeleteUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deleteUserServlet</servlet-name>
<url-pattern>/deleteUser</url-pattern>
</servlet-mapping>
<!-- 人员清空密码 -->
<servlet>
<servlet-name>clearUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.ClearUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>clearUserServlet</servlet-name>
<url-pattern>/clearUser</url-pattern>
</servlet-mapping>
<!-- 人员注册 -->
<servlet>
<servlet-name>addUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.AddUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addUserServlet</servlet-name>
<url-pattern>/addUser</url-pattern>
</servlet-mapping>
<!-- 人员修改 -->
<servlet>
<servlet-name>modUserServlet</servlet-name>
<servlet-class>com.zsx.servlet.ModUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modUserServlet</servlet-name>
<url-pattern>/modUser</url-pattern>
</servlet-mapping>
<!-- 卡片添加 -->
<servlet>
<servlet-name>addCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.AddCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addCardServlet</servlet-name>
<url-pattern>/addCard</url-pattern>
</servlet-mapping>
<!-- 卡片查詢 -->
<servlet>
<servlet-name>getCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getCardServlet</servlet-name>
<url-pattern>/getCard</url-pattern>
</servlet-mapping>
<!-- 卡片删除 -->
<servlet>
<servlet-name>deleteCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.DeleteCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deleteCardServlet</servlet-name>
<url-pattern>/deleteCard</url-pattern>
</servlet-mapping>
<!-- 领卡申请显示 -->
<servlet>
<servlet-name>getRecvCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetRecvCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getRecvCardServlet</servlet-name>
<url-pattern>/getRecvCard</url-pattern>
</servlet-mapping>
<!-- 领卡申请添加 -->
<servlet>
<servlet-name>addRecvCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.AddRecvCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addRecvCardServlet</servlet-name>
<url-pattern>/addRecvCard</url-pattern>
</servlet-mapping>
<!-- 领卡申请修改 -->
<servlet>
<servlet-name>modRecvCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.ModRecvCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modRecvCardServlet</servlet-name>
<url-pattern>/modRecvCard</url-pattern>
</servlet-mapping>
<!-- 领卡申请显示管理端 -->
<servlet>
<servlet-name>getRecvCardApprServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetRecvCardApprServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getRecvCardApprServlet</servlet-name>
<url-pattern>/getRecvCardAppr</url-pattern>
</servlet-mapping>
<!-- 领卡申请通过管理端 -->
<servlet>
<servlet-name>apprRecvCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.ApprRecvCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>apprRecvCardServlet</servlet-name>
<url-pattern>/ApprRecvCard</url-pattern>
</servlet-mapping>
<!-- 获取名字 -->
<servlet>
<servlet-name>getCardNameServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetCardNameServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getCardNameServlet</servlet-name>
<url-pattern>/getCardName</url-pattern>
</servlet-mapping>
<!-- 售卡 -->
<servlet>
<servlet-name>saleCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.SaleCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>saleCardServlet</servlet-name>
<url-pattern>/saleCard</url-pattern>
</servlet-mapping>
<!-- 读卡 -->
<servlet>
<servlet-name>readCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.ReadCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>readCardServlet</servlet-name>
<url-pattern>/readCard</url-pattern>
</servlet-mapping>
<!-- 换卡 -->
<servlet>
<servlet-name>changeCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.ChangeCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>changeCardServlet</servlet-name>
<url-pattern>/changeCard</url-pattern>
</servlet-mapping>
<!-- 退卡 -->
<servlet>
<servlet-name>exitCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.ExitCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>exitCardServlet</servlet-name>
<url-pattern>/exitCard</url-pattern>
</servlet-mapping>
<!-- 医生排班的名字显示 -->
<servlet>
<servlet-name>doctorNameServlet</servlet-name>
<servlet-class>com.zsx.servlet.DoctorNameServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doctorNameServlet</servlet-name>
<url-pattern>/doctorName</url-pattern>
</servlet-mapping>
<!-- 医生排班的数据显示 -->
<servlet>
<servlet-name>doctorWorkServlet</servlet-name>
<servlet-class>com.zsx.servlet.DoctorWorkServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doctorWorkServlet</servlet-name>
<url-pattern>/doctorWork</url-pattern>
</servlet-mapping>
<!-- 医生排班修改 -->
<servlet>
<servlet-name>doctorModServlet</servlet-name>
<servlet-class>com.zsx.servlet.DoctorModServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doctorModServlet</servlet-name>
<url-pattern>/doctorMod</url-pattern>
</servlet-mapping>
<!-- 医生排班 -->
<servlet>
<servlet-name>addWorkServlet</servlet-name>
<servlet-class>com.zsx.servlet.AddWorkServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addWorkServlet</servlet-name>
<url-pattern>/addwork</url-pattern>
</servlet-mapping>
<!-- 领卡查询 -->
<servlet>
<servlet-name>cardRecordServlet</servlet-name>
<servlet-class>com.zsx.servlet.CardRecordServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cardRecordServlet</servlet-name>
<url-pattern>/recordCard</url-pattern>
</servlet-mapping>
<!-- 用户名字 -->
<servlet>
<servlet-name>getUserNameServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetUserNameServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getUserNameServlet</servlet-name>
<url-pattern>/userName</url-pattern>
</servlet-mapping>
<!-- 卡查询 -->
<servlet>
<servlet-name>cardSelectServlet</servlet-name>
<servlet-class>com.zsx.servlet.CardSelectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cardSelectServlet</servlet-name>
<url-pattern>/selectCard</url-pattern>
</servlet-mapping>
<!-- 修改密码 -->
<servlet>
<servlet-name>modPwdServlet</servlet-name>
<servlet-class>com.zsx.servlet.ModPwdServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modPwdServlet</servlet-name>
<url-pattern>/modPwd</url-pattern>
</servlet-mapping>
<!-- 卡注销 -->
<servlet>
<servlet-name>destoryCardServlet</servlet-name>
<servlet-class>com.zsx.servlet.DestoryCardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>destoryCardServlet</servlet-name>
<url-pattern>/destoryCard</url-pattern>
</servlet-mapping>
<!-- 工作量统计 -->
<servlet>
<servlet-name>countServlet</servlet-name>
<servlet-class>com.zsx.servlet.CountServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>countServlet</servlet-name>
<url-pattern>/getCount</url-pattern>
</servlet-mapping>
<!-- 日志 -->
<servlet>
<servlet-name>logServlet</servlet-name>
<servlet-class>com.zsx.servlet.LogServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>logServlet</servlet-name>
<url-pattern>/getLog</url-pattern>
</servlet-mapping>
<!-- 权限修改 -->
<servlet>
<servlet-name>powerServlet</servlet-name>
<servlet-class>com.zsx.servlet.PowerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>powerServlet</servlet-name>
<url-pattern>/power</url-pattern>
</servlet-mapping>
<!-- 菜单获取 -->
<servlet>
<servlet-name>getMenuServlet</servlet-name>
<servlet-class>com.zsx.servlet.GetMenuServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getMenuServlet</servlet-name>
<url-pattern>/getMenu</url-pattern>
</servlet-mapping>
</web-app>
大抵流程如下:
前端将数据+url传入到web.xml中,web.xml找到对应的url-pattern,再去寻找对应url-pattern的servlet-name同名的其他servlet-name中,通过servlet-class进入对应的servlet类中。
servlet类获取到数据,调用service(service调用dao(连接数据库+操作sql语句+获取结果+关闭连接))进行实现业务,同时通过json返回到前端,实现前后端交互。
<!-- 用户登录 为例子-->
<servlet>
<servlet-name>userLoginServlet</servlet-name>
<servlet-class>com.zsx.servlet.UserLoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userLoginServlet</servlet-name>
<url-pattern>/userLogin</url-pattern>
</servlet-mapping>
以上是Servlet后端实现过程。