po ---类implements Serializable (实现序列化接口):成员对应于数据库里表字段,每个成员拥有自己的get、set方法。
知识点:反射和泛型的掌握
public interface IBaseDAO<T>:
package com.zuxia.yc42.common.dao.imp;
import com.zuxia.yc42.common.dao.OperatinJDBC;
import com.zuxia.yc42.util.PageList;
public interface IBaseDAO<T>
{
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
public boolean saveInfo(T t);
/**
* 根据ID删除对象
* @param id
* @return
*/
public boolean deleleInfo(Integer id);
/**
* 根据对象修改数据库信息
* @param t
* @return
*/
public boolean modifyInfo(T t);
/**
* 根据ID查询数据库信息
* @param id
* @return
*/
public T queryInfo(Integer id);
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
public PageList<T> queryInfos(PageList<T> pageList);
/**
* 设置className
* @param className
*/
public void setClassName(Class<T> className);
/**
* 获取数据库连接对象
* @return
*/
public OperatinJDBC getOpJDBC();
}
public class BaseDAO <T>implements IBaseDAO <T>:
public class BaseDAO <T>implements IBaseDAO <T>
{
/* 1.需要往那张表中存储数据
2.可以通过反射的方式获取到所有的实例类【PO】成员属性 */
private Class className;
private OperatinJDBC opJDBC;
//声明获取操作表类实例对象
private ClassRelationTable cr_Table;
public BaseDAO()
{
opJDBC = new OperatinJDBC();
cr_Table = ClassRelationTable.getInit();
}
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
@Override
public boolean saveInfo(T t) {
//获取操作表
String tableName = cr_Table.getTable(className.getName());
//通过反射 反射出className对象 封装SQL语句
String sql = "";
boolean flag = false;
//执行Sql
try {
Statement stm = opJDBC.getConn().createStatement();
flag = stm.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
//关闭数据库连接
opJDBC.closeConn();
}
return flag;
}
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
@Override
public PageList<T> queryInfos(PageList<T> pageList) {
// TODO Auto-generated method stub
return null;
}
/**
* 获取数据库连接对象
* @return
*/
@Override
public OperatinJDBC getOpJDBC() {
// TODO Auto-generated method stub
return opJDBC;
}
/**
* 设置className
* @param className
*/
public void setClassName(Class<T> className) {
this.className = className;
}
public static void main(String[] s)
{
IUserInfoDAO bsDAO = new UserInfoDAO();
bsDAO.saveInfo(new UserInfo()); //UserInfo是PO类,数据源
}
}
public class ClassRelationTable :
package com.zuxia.yc42.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class ClassRelationTable
{
public static ClassRelationTable classRelationTable;
public static Map<String,String> map;
private Properties pop;
private ClassRelationTable()
{
map = new HashMap<String,String>();
pop = new Properties();
try {
pop.load(new FileInputStream("D:\\apache-tomcat-6.0.33\\webapps\\MCV_T1\\WEB-INF\\classes\\class_relation_table.properties"));
Set keys = pop.keySet();
for(Object key:keys)
{
map.put(key.toString(), pop.get(key).toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static ClassRelationTable getInit()
{
if(classRelationTable == null)
{
classRelationTable = new ClassRelationTable();
}
return classRelationTable;
}
/**
* 通过className获取表名
* @param className
* @return
*/
public String getTable(String className)
{
return map.get(className);
}
}
class_relation_table.properties:
com.zuxia.yc42.system.po.UserInfo=user_info
com.zuxia.yc42.system.po.RoleInfo=role_info
com.zuxia.yc42.system.po.PostInfo=post_info
com.zuxia.yc42.system.po.DeptInfo=dept_info
public class UserInfo implements Serializable:
package com.zuxia.yc42.system.po;
import java.io.Serializable;
import java.util.Date;
public class UserInfo implements Serializable
{
private Integer usId;
private String usNo;
private String usName;
private String password;
private Integer usAge ;
private String usSex;
private Date entryTime ;
private Integer pid;
private String idNum;
private String hometown;
private String phone;
private String email ;
private String status;
public Integer getUsId() {
return usId;
}
public void setUsId(Integer usId) {
this.usId = usId;
}
public String getUsName() {
return usName;
}
public void setUsName(String usName) {
this.usName = usName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getUsAge() {
return usAge;
}
public void setUsAge(Integer usAge) {
this.usAge = usAge;
}
public String getUsSex() {
return usSex;
}
public void setUsSex(String usSex) {
this.usSex = usSex;
}
public Date getEntryTime() {
return entryTime;
}
public void setEntryTime(Date entryTime) {
this.entryTime = entryTime;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getIdNum() {
return idNum;
}
public void setIdNum(String idNum) {
this.idNum = idNum;
}
public String getHometown() {
return hometown;
}
public void setHometown(String hometown) {
this.hometown = hometown;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getUsNo() {
return usNo;
}
public void setUsNo(String usNo) {
this.usNo = usNo;
}
}
public class UserInfoDAO extends BaseDAO<UserInfo> implements IUserInfoDAO :
package com.zuxia.yc42.system.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import com.zuxia.yc42.common.dao.BaseDAO;
import com.zuxia.yc42.common.dao.OperatinJDBC;
import com.zuxia.yc42.system.dao.imp.IUserInfoDAO;
import com.zuxia.yc42.system.po.UserInfo;
public class UserInfoDAO extends BaseDAO<UserInfo> implements IUserInfoDAO
{
public UserInfoDAO()
{
//通过构造函数给父类的ClassName属性赋值
super.setClassName(UserInfo.class);
}
/**
* 根据员工号获取用户信息
* @param usNo
* @return
*/
@Override
public UserInfo queryUserInfo(String usNo)
{
OperatinJDBC opJDBC = this.getOpJDBC();
String sql ="select * from user_info where usNo = ? and status='0'";
UserInfo userInfo = null;
try
{
PreparedStatement stm = opJDBC.getConn().prepareStatement(sql);
stm.setString(1, usNo);
ResultSet rs = stm.executeQuery();
if(rs.next())
{
userInfo = new UserInfo();
userInfo.setUsId(rs.getInt("usId"));
userInfo.setUsNo(rs.getString("usNO"));
userInfo.setUsName(rs.getString("usName"));
userInfo.setPassword(rs.getString("password"));
userInfo.setUsAge(rs.getInt("usAge"));
userInfo.setUsSex(rs.getString("usSex"));
userInfo.setEmail(rs.getString("email"));
//获取带时分秒的日期
Calendar rightNow = Calendar.getInstance();
userInfo.setEntryTime(rs.getDate("entryTime",rightNow));
userInfo.setIdNum(rs.getString("idNum"));
userInfo.setPhone(rs.getString("phone"));
userInfo.setStatus(rs.getString("status"));
userInfo.setHometown(rs.getString("homeTown"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return userInfo;
}
public static void main(String[] s)
{
IUserInfoDAO dao = new UserInfoDAO();
UserInfo user = dao.queryUserInfo("T20130002");
System.out.println(user);
}
}
public class UserInfoService extends BaseService<UserInfo> implements IUserInfoService:
package com.zuxia.yc42.system.service;
import com.zuxia.yc42.common.service.BaseService;
import com.zuxia.yc42.system.dao.UserInfoDAO;
import com.zuxia.yc42.system.dao.imp.IUserInfoDAO;
import com.zuxia.yc42.system.po.UserInfo;
import com.zuxia.yc42.system.service.imp.IUserInfoService;
public class UserInfoService extends BaseService<UserInfo> implements IUserInfoService{
private IUserInfoDAO userDAO;
public UserInfoService()
{
userDAO = new UserInfoDAO();
super.setBaseDAO(userDAO);
}
@Override
public UserInfo queryUserInfo(String usNo)
{
return userDAO.queryUserInfo(usNo);
}
}
public class UserManagerServlet extends HttpServlet :
package com.zuxia.yc42.system.servlet;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zuxia.yc42.system.po.UserInfo;
import com.zuxia.yc42.system.service.UserInfoService;
import com.zuxia.yc42.system.service.imp.IUserInfoService;
public class UserManagerServlet extends HttpServlet
{
private IUserInfoService userService;
public UserManagerServlet()
{
userService = new UserInfoService();
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
{
//获取流程标识
String flag = request.getParameter("flag");
//<form action="usManager?flag=login" method="post">
if(flag.equals("login"))
{
usLogin(request,response);
}
else if(flag.equals("save"))
{
UserInfo userInfo = new UserInfo();
userInfo.setUsNo("T20030003");
userInfo.setUsName("root1");
userInfo.setPassword("123");
userInfo.setUsAge(20);
userInfo.setUsSex("0");
userInfo.setEmail("wh1@qq.com");
//获取带时分秒的日期
//Calendar rightNow = Calendar.getInstance();
userInfo.setEntryTime(new Date());
userInfo.setIdNum("51545454541");
userInfo.setPhone("125454585");
userInfo.setStatus("0");
userInfo.setHometown("重庆");
userService.saveInfo(userInfo);
}
else if(flag.equals("modify"))
{
}
else if(flag.equals("delete"))
{
}
else if(flag.equals("query"))
{
}
else
{
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
doPost(request,response);
}
/**
* 用户登录时调用方法
* @param request
* @param response
*/
private void usLogin(HttpServletRequest request,HttpServletResponse response)
{
String url ="";
//前台获取员工号及登录密码
String usNo = request.getParameter("usNo");
String password = request.getParameter("usPass");
//根据员工号获取用户信息
UserInfo userInfo = userService.queryUserInfo(usNo);
if(userInfo != null && userInfo.getPassword().trim().equals(password.trim()))
{
//登录成功跳转至首页
url ="/jsp/main.jsp";
request.getSession().setAttribute("user",userInfo);
}
else
{
//登录失败跳转至登录页面
url ="/jsp/login.jsp";
request.setAttribute("msg","用户名或密码错误!");
}
//跳转
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以下是具体演示代码:
package com.zuxia.yc42.common.dao.imp
public interface IBaseDAO<T>:
package com.zuxia.yc42.common.dao.imp;
import com.zuxia.yc42.common.dao.OperatinJDBC;
import com.zuxia.yc42.util.PageList;
public interface IBaseDAO<T>
{
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
public boolean saveInfo(T t);
/**
* 根据ID删除对象
* @param id
* @return
*/
public boolean deleleInfo(Integer id);
/**
* 根据对象修改数据库信息
* @param t
* @return
*/
public boolean modifyInfo(T t);
/**
* 根据ID查询数据库信息
* @param id
* @return
*/
public T queryInfo(Integer id);
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
public PageList<T> queryInfos(PageList<T> pageList);
/**
* 设置className
* @param className
*/
public void setClassName(Class<T> className);
/**
* 获取数据库连接对象
* @return
*/
public OperatinJDBC getOpJDBC();
}
package com.zuxia.yc42.common.dao
public class BaseDAO <T>implements IBaseDAO <T>:
package com.zuxia.yc42.common.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.system.dao.UserInfoDAO;
import com.zuxia.yc42.system.dao.imp.IUserInfoDAO;
import com.zuxia.yc42.system.po.UserInfo;
import com.zuxia.yc42.util.ClassRelationTable;
import com.zuxia.yc42.util.PageList;
public class BaseDAO <T>implements IBaseDAO <T>
{
//1.需要往那张表中存储数据 2.可以通过反射的方式获取到所有的实例类【PO】成员属性
private Class className;
private OperatinJDBC opJDBC;
private ClassRelationTable cr_Table;
public BaseDAO()
{
opJDBC = new OperatinJDBC();
cr_Table = ClassRelationTable.getInit();
}
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
@Override
public boolean saveInfo(T t) {
//获取操作表
String tableName = cr_Table.getTable(className.getName());
//通过反射 反射出className对象 封装SQL语句
String sql = "";
boolean flag = false;
//执行Sql
try {
Statement stm = opJDBC.getConn().createStatement();
flag = stm.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
//关闭数据库连接
opJDBC.closeConn();
}
return flag;
}
/**
* 根据ID删除对象
* @param id
* @return
*/
@Override
public boolean deleleInfo(Integer id) {
// TODO Auto-generated method stub
return false;
}
/**
* 根据对象修改数据库信息
* @param t
* @return
*/
@Override
public boolean modifyInfo(T t) {
// TODO Auto-generated method stub
return false;
}
/**
* 根据ID查询数据库信息
* @param id
* @return
*/
@Override
public T queryInfo(Integer id) {
// TODO Auto-generated method stub
return null;
}
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
@Override
public PageList<T> queryInfos(PageList<T> pageList) {
// TODO Auto-generated method stub
return null;
}
/**
* 获取数据库连接对象
* @return
*/
@Override
public OperatinJDBC getOpJDBC() {
// TODO Auto-generated method stub
return opJDBC;
}
/**
* 设置className
* @param className
*/
public void setClassName(Class<T> className) {
this.className = className;
}
public static void main(String[] s)
{
IUserInfoDAO bsDAO = new UserInfoDAO();
bsDAO.saveInfo(new UserInfo());
}
}
package com.zuxia.yc42.common.dao
public class OperatinJDBC :
package com.zuxia.yc42.common.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OperatinJDBC
{
private String className = "oracle.jdbc.driver.OracleDriver";
private String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
private String user="yc42";
private String password="yc42";
private Connection conn = null;
/**
* 获取数据库连接
* @return
*/
public Connection getConn()
{
try {
Class.forName(className);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库连接
*/
public void closeConn()
{
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.zuxia.yc42.common.service.imp
public interface IBaseService <T>:
package com.zuxia.yc42.common.service.imp;
import com.zuxia.yc42.util.PageList;
public interface IBaseService <T>
{
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
public boolean saveInfo(T t);
/**
* 根据ID删除对象
* @param id
* @return
*/
public boolean deleleInfo(Integer id);
/**
* 根据对象修改数据库信息
* @param t
* @return
*/
public boolean modifyInfo(T t);
/**
* 根据ID查询数据库信息
* @param id
* @return
*/
public T queryInfo(Integer id);
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
public PageList<T> queryInfos(PageList<T> pageList);
}
package com.zuxia.yc42.common.service
public class BaseService<T> implements IBaseService<T> :
package com.zuxia.yc42.common.service;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.common.service.imp.IBaseService;
import com.zuxia.yc42.util.PageList;
public class BaseService<T> implements IBaseService<T>
{
private IBaseDAO<T> baseDAO;
/**
* 根据对象保存数据至数据库
* @param t
* @return
*/
@Override
public boolean saveInfo(T t)
{
return baseDAO.saveInfo(t);
}
/**
* 根据ID删除对象
* @param id
* @return
*/
@Override
public boolean deleleInfo(Integer id)
{
return baseDAO.deleleInfo(id);
}
/**
* 根据对象修改数据库信息
* @param t
* @return
*/
@Override
public boolean modifyInfo(T t)
{
return baseDAO.modifyInfo(t);
}
/**
* 根据ID查询数据库信息
* @param id
* @return
*/
@Override
public T queryInfo(Integer id)
{
return baseDAO.queryInfo(id);
}
/**
* 根据分页对象查询数据库信息
* @param pageList
* @return
*/
@Override
public PageList<T> queryInfos(PageList<T> pageList)
{
return baseDAO.queryInfos(pageList);
}
/**
* 设置DAO类
* @param baseDAO
*/
public void setBaseDAO(IBaseDAO<T> baseDAO)
{
this.baseDAO = baseDAO;
}
}
package com.zuxia.yc42.system.dao.imp
public interface IDeptInfoDAO extends IBaseDAO<DeptInfo>:
package com.zuxia.yc42.system.dao.imp;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.system.po.DeptInfo;
public interface IDeptInfoDAO extends IBaseDAO<DeptInfo> {
}
public interface IPostInfoDAO extends IBaseDAO<PostInfo>:
package com.zuxia.yc42.system.dao.imp;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.system.po.PostInfo;
public interface IPostInfoDAO extends IBaseDAO<PostInfo> {
}
public interface IRoleInfoDAO extends IBaseDAO<RoleInfo>:
package com.zuxia.yc42.system.dao.imp;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.system.po.RoleInfo;
public interface IRoleInfoDAO extends IBaseDAO<RoleInfo> {
}
public interface IUserInfoDAO extends IBaseDAO<UserInfo>:
package com.zuxia.yc42.system.dao.imp;
import com.zuxia.yc42.common.dao.imp.IBaseDAO;
import com.zuxia.yc42.system.po.UserInfo;
public interface IUserInfoDAO extends IBaseDAO<UserInfo>
{
/**
* 根据员工号获取用户信息
* @param usNo
* @return
*/
public UserInfo queryUserInfo(String usNo);
}
package com.zuxia.yc42.system.dao
public class DeptInfoDAO extends BaseDAO<DeptInfo> implements IDeptInfoDAO:
package com.zuxia.yc42.system.dao;
import com.zuxia.yc42.common.dao.BaseDAO;
import com.zuxia.yc42.system.dao.imp.IDeptInfoDAO;
import com.zuxia.yc42.system.po.DeptInfo;
public class DeptInfoDAO extends BaseDAO<DeptInfo> implements IDeptInfoDAO {
public DeptInfoDAO()
{
super();
super.setClassName(DeptInfo.class);
}
}
public class PostInfoDAO extends BaseDAO<PostInfo> implements IPostInfoDAO:
package com.zuxia.yc42.system.dao;
import com.zuxia.yc42.common.dao.BaseDAO;
import com.zuxia.yc42.system.dao.imp.IPostInfoDAO;
import com.zuxia.yc42.system.po.PostInfo;
public class PostInfoDAO extends BaseDAO<PostInfo> implements IPostInfoDAO {
public PostInfoDAO()
{
super.setClassName(PostInfo.class);
}
}
public class RoleInfoDAO extends BaseDAO<RoleInfo> implements IRoleInfoDAO:
package com.zuxia.yc42.system.dao;
import com.zuxia.yc42.common.dao.BaseDAO;
import com.zuxia.yc42.system.dao.imp.IRoleInfoDAO;
import com.zuxia.yc42.system.po.RoleInfo;
public class RoleInfoDAO extends BaseDAO<RoleInfo> implements IRoleInfoDAO {
public RoleInfoDAO()
{
super.setClassName(RoleInfo.class);
}
}
public class UserInfoDAO extends BaseDAO<UserInfo> implements IUserInfoDAO:
package com.zuxia.yc42.system.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import com.zuxia.yc42.common.dao.BaseDAO;
import com.zuxia.yc42.common.dao.OperatinJDBC;
import com.zuxia.yc42.system.dao.imp.IUserInfoDAO;
import com.zuxia.yc42.system.po.UserInfo;
public class UserInfoDAO extends BaseDAO<UserInfo> implements IUserInfoDAO
{
public UserInfoDAO()
{
super.setClassName(UserInfo.class);
}
/**
* 根据员工号获取用户信息
* @param usNo
* @return
*/
@Override
public UserInfo queryUserInfo(String usNo)
{
OperatinJDBC opJDBC = this.getOpJDBC();
String sql ="select * from user_info where usNo = ? and status='0'";
UserInfo userInfo = null;
try
{
PreparedStatement stm = opJDBC.getConn().prepareStatement(sql);
stm.setString(1, usNo);
ResultSet rs = stm.executeQuery();
if(rs.next())
{
userInfo = new UserInfo();
userInfo.setUsId(rs.getInt("usId"));
userInfo.setUsNo(rs.getString("usNO"));
userInfo.setUsName(rs.getString("usName"));
userInfo.setPassword(rs.getString("password"));
userInfo.setUsAge(rs.getInt("usAge"));
userInfo.setUsSex(rs.getString("usSex"));
userInfo.setEmail(rs.getString("email"));
//获取带时分秒的日期
Calendar rightNow = Calendar.getInstance();
userInfo.setEntryTime(rs.getDate("entryTime",rightNow));
userInfo.setIdNum(rs.getString("idNum"));
userInfo.setPhone(rs.getString("phone"));
userInfo.setStatus(rs.getString("status"));
userInfo.setHometown(rs.getString("homeTown"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return userInfo;
}
public static void main(String[] s)
{
IUserInfoDAO dao = new UserInfoDAO();
UserInfo user = dao.queryUserInfo("T20130002");
System.out.println(user);
}
}
package com.zuxia.yc42.system.po
public class DeptInfo implements Serializable :
package com.zuxia.yc42.system.po;
import java.io.Serializable;
public class DeptInfo implements Serializable
{
private Integer dpId;
private String dname;
private String usId;
private String dremark;
private String status;
public Integer getDpId() {
return dpId;
}
public void setDpId(Integer dpId) {
this.dpId = dpId;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getUsId() {
return usId;
}
public void setUsId(String usId) {
this.usId = usId;
}
public String getDremark() {
return dremark;
}
public void setDremark(String dremark) {
this.dremark = dremark;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
public class PostInfo implements Serializable :
package com.zuxia.yc42.system.po;
import java.io.Serializable;
public class PostInfo implements Serializable
{
private Integer pid;
private String pname;
private String premark;
private Integer dpId;
private String status;
private Integer rid;
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPremark() {
return premark;
}
public void setPremark(String premark) {
this.premark = premark;
}
public Integer getDpId() {
return dpId;
}
public void setDpId(Integer dpId) {
this.dpId = dpId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
}
public class PurViewInfo implements Serializable :
package com.zuxia.yc42.system.po;
import java.io.Serializable;
public class PurViewInfo implements Serializable
{
private Integer pid;
private String pflag;
private String premark;
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getPflag() {
return pflag;
}
public void setPflag(String pflag) {
this.pflag = pflag;
}
public String getPremark() {
return premark;
}
public void setPremark(String premark) {
this.premark = premark;
}
}
public class RoleInfo implements Serializable :
package com.zuxia.yc42.system.po;
import java.io.Serializable;
public class RoleInfo implements Serializable {
private Integer rid;
private String rname;
private String rremark;
private String status;
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public String getRremark() {
return rremark;
}
public void setRremark(String rremark) {
this.rremark = rremark;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
public class RolePurviewInfo implements Serializable:
package com.zuxia.yc42.system.po;
import java.io.Serializable;
public class RolePurviewInfo implements Serializable
{
private Integer rpId;
private Integer rid;
private Integer pid;
public Integer getRpId() {
return rpId;
}
public void setRpId(Integer rpId) {
this.rpId = rpId;
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
}
public class UserInfo implements Serializable :
package com.zuxia.yc42.system.po;
import java.io.Serializable;
import java.util.Date;
public class UserInfo implements Serializable
{
private Integer usId;
private String usNo;
private String usName;
private String password;
private Integer usAge ;
private String usSex;
private Date entryTime ;
private Integer pid;
private String idNum;
private String hometown;
private String phone;
private String email ;
private String status;
public Integer getUsId() {
return usId;
}
public void setUsId(Integer usId) {
this.usId = usId;
}
public String getUsName() {
return usName;
}
public void setUsName(String usName) {
this.usName = usName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getUsAge() {
return usAge;
}
public void setUsAge(Integer usAge) {
this.usAge = usAge;
}
public String getUsSex() {
return usSex;
}
public void setUsSex(String usSex) {
this.usSex = usSex;
}
public Date getEntryTime() {
return entryTime;
}
public void setEntryTime(Date entryTime) {
this.entryTime = entryTime;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getIdNum() {
return idNum;
}
public void setIdNum(String idNum) {
this.idNum = idNum;
}
public String getHometown() {
return hometown;
}
public void setHometown(String hometown) {
this.hometown = hometown;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getUsNo() {
return usNo;
}
public void setUsNo(String usNo) {
this.usNo = usNo;
}
}
package com.zuxia.yc42.system.service.imp
public interface IDeptInfoService extends IBaseService<DeptInfo>:
package com.zuxia.yc42.system.service.imp;
import com.zuxia.yc42.common.service.imp.IBaseService;
import com.zuxia.yc42.system.po.DeptInfo;
public interface IDeptInfoService extends IBaseService<DeptInfo> {
}
public interface IPostInfoService extends IBaseService<PostInfo>:
package com.zuxia.yc42.system.service.imp;
import com.zuxia.yc42.common.service.imp.IBaseService;
import com.zuxia.yc42.system.po.PostInfo;
public interface IPostInfoService extends IBaseService<PostInfo> {
}
public interface IRoleInfoService extends IBaseService<RoleInfo> :
package com.zuxia.yc42.system.service.imp;
import com.zuxia.yc42.common.service.imp.IBaseService;
import com.zuxia.yc42.system.po.RoleInfo;
public interface IRoleInfoService extends IBaseService<RoleInfo> {
}
public interface IUserInfoService extends IBaseService<UserInfo> :
package com.zuxia.yc42.system.service.imp;
import com.zuxia.yc42.common.service.imp.IBaseService;
import com.zuxia.yc42.system.po.UserInfo;
public interface IUserInfoService extends IBaseService<UserInfo>
{
/**
* 根据员工号查询用户信息
* @param usNo
* @return
*/
public UserInfo queryUserInfo(String usNo);
}
package com.zuxia.yc42.system.service
public class DeptInfoService extends BaseService<DeptInfo> implements IDeptInfoService :
package com.zuxia.yc42.system.service;
import com.zuxia.yc42.common.service.BaseService;
import com.zuxia.yc42.system.po.DeptInfo;
import com.zuxia.yc42.system.service.imp.IDeptInfoService;
public class DeptInfoService extends BaseService<DeptInfo> implements IDeptInfoService
{
}
public class PostInfoService extends BaseService<PostInfo> implements IPostInfoService:
package com.zuxia.yc42.system.service;
import com.zuxia.yc42.common.service.BaseService;
import com.zuxia.yc42.system.po.PostInfo;
import com.zuxia.yc42.system.service.imp.IPostInfoService;
public class PostInfoService extends BaseService<PostInfo> implements IPostInfoService {
}
public class RoleInfoService extends BaseService<RoleInfo> implements IRoleInfoService:
package com.zuxia.yc42.system.service;
import com.zuxia.yc42.common.service.BaseService;
import com.zuxia.yc42.system.po.RoleInfo;
import com.zuxia.yc42.system.service.imp.IRoleInfoService;
public class RoleInfoService extends BaseService<RoleInfo> implements IRoleInfoService
{
}
public class UserInfoService extends BaseService<UserInfo> implements IUserInfoService:
package com.zuxia.yc42.system.service;
import com.zuxia.yc42.common.service.BaseService;
import com.zuxia.yc42.system.dao.UserInfoDAO;
import com.zuxia.yc42.system.dao.imp.IUserInfoDAO;
import com.zuxia.yc42.system.po.UserInfo;
import com.zuxia.yc42.system.service.imp.IUserInfoService;
public class UserInfoService extends BaseService<UserInfo> implements IUserInfoService{
private IUserInfoDAO userDAO;
public UserInfoService()
{
userDAO = new UserInfoDAO();
super.setBaseDAO(userDAO);
}
@Override
public UserInfo queryUserInfo(String usNo)
{
return userDAO.queryUserInfo(usNo);
}
}
package com.zuxia.yc42.system.servlet
public class DeptManagerServlet extends HttpServlet:
package com.zuxia.yc42.system.servlet;
import javax.servlet.http.HttpServlet;
public class DeptManagerServlet extends HttpServlet {
}
public class PostManagerServlet extends HttpServlet:
package com.zuxia.yc42.system.servlet;
import javax.servlet.http.HttpServlet;
public class PostManagerServlet extends HttpServlet {
}
public class RoleManagerServlet extends HttpServlet:
package com.zuxia.yc42.system.servlet;
import javax.servlet.http.HttpServlet;
public class RoleManagerServlet extends HttpServlet {
}
public class UserManagerServlet extends HttpServlet :
package com.zuxia.yc42.system.servlet;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zuxia.yc42.system.po.UserInfo;
import com.zuxia.yc42.system.service.UserInfoService;
import com.zuxia.yc42.system.service.imp.IUserInfoService;
public class UserManagerServlet extends HttpServlet
{
private IUserInfoService userService;
public UserManagerServlet()
{
userService = new UserInfoService();
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
{
//获取流程标识
String flag = request.getParameter("flag");
if(flag.equals("login"))
{
usLogin(request,response);
}
else if(flag.equals("save"))
{
UserInfo userInfo = new UserInfo();
userInfo.setUsNo("T20030003");
userInfo.setUsName("root1");
userInfo.setPassword("123");
userInfo.setUsAge(20);
userInfo.setUsSex("0");
userInfo.setEmail("wh1@qq.com");
//获取带时分秒的日期
//Calendar rightNow = Calendar.getInstance();
userInfo.setEntryTime(new Date());
userInfo.setIdNum("51545454541");
userInfo.setPhone("125454585");
userInfo.setStatus("0");
userInfo.setHometown("重庆");
userService.saveInfo(userInfo);
}
else if(flag.equals("modify"))
{
}
else if(flag.equals("delete"))
{
}
else if(flag.equals("query"))
{
}
else
{
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
doPost(request,response);
}
/**
* 用户登录时调用方法
* @param request
* @param response
*/
private void usLogin(HttpServletRequest request,HttpServletResponse response)
{
String url ="";
//前台获取员工号及登录密码
String usNo = request.getParameter("usNo");
String password = request.getParameter("usPass");
//根据员工号获取用户信息
UserInfo userInfo = userService.queryUserInfo(usNo);
if(userInfo != null && userInfo.getPassword().trim().equals(password.trim()))
{
//登录成功跳转至首页
url ="/jsp/main.jsp";
request.getSession().setAttribute("user",userInfo);
}
else
{
//登录失败跳转至登录页面
url ="/jsp/login.jsp";
request.setAttribute("msg","用户名或密码错误!");
}
//跳转
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.zuxia.yc42.util
public class ClassRelationTable :
package com.zuxia.yc42.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class ClassRelationTable
{
public static ClassRelationTable classRelationTable;
public static Map<String,String> map;
private Properties pop;
private ClassRelationTable()
{
map = new HashMap<String,String>();
pop = new Properties();
try {
pop.load(new FileInputStream("D:\\apache-tomcat-6.0.33\\webapps\\MCV_T1\\WEB-INF\\classes\\class_relation_table.properties"));
Set keys = pop.keySet();
for(Object key:keys)
{
map.put(key.toString(), pop.get(key).toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static ClassRelationTable getInit()
{
if(classRelationTable == null)
{
classRelationTable = new ClassRelationTable();
}
return classRelationTable;
}
/**
* 通过className获取表名
* @param className
* @return
*/
public String getTable(String className)
{
return map.get(className);
}
}
public class PageList<T> :
package com.zuxia.yc42.util;
public class PageList<T>
{
}
class_relation_table.properties:
com.zuxia.yc42.system.po.UserInfo=user_info
com.zuxia.yc42.system.po.RoleInfo=role_info
com.zuxia.yc42.system.po.PostInfo=post_info
com.zuxia.yc42.system.po.DeptInfo=dept_info
jsp/login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>${msg}</center>
<form action="usManager?flag=login" method="post">
<table align="center" border="1" width="90%">
<tr>
<th>员工号</th>
<td>
<input type="text" name="usNo"/>
</td>
</tr>
<tr>
<th>密 码</th>
<td>
<input type="password" name="usPass"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value=" 登 录 "/>
<input type="reset" value=" 重 置 "/>
</td>
</tr>
</table>
</form>
</body>
</html>
jsp/main.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form >
<ul>
<li><a href="usManager?save">添加用户</a></li>
<li><a href="usManager?modify">修改用户</a></li>
<li><a href="usManager?delete">删除用户</a></li>
<li><a href="usManager?query">查询用户</a></li>
</ul>
</form>
</body>
</html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>RoleManager</servlet-name>
<servlet-class>com.zuxia.yc42.system.servlet.RoleManagerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RoleManager</servlet-name>
<url-pattern>/roleManager</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>UserManager</servlet-name>
<servlet-class>com.zuxia.yc42.system.servlet.UserManagerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserManager</servlet-name>
<url-pattern>/usManager</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
使用到的oracle 表:
--创建序列
create sequence dept_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
create sequence post_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
create sequence role_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
create sequence pur_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
create sequence role_purView_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
create sequence user_seq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 10
/
--创建表
/*==============================================================*/
/* Table: dept_info */
/*==============================================================*/
create table dept_info (
dpId INTEGER not null,
dName VARCHAR2(20),
usId INTEGER,
dRemark VARCHAR2(200),
status char(1),
constraint PK_DEPT_INFO primary key (dpId)
)
/
/*==============================================================*/
/* Table: post_info */
/*==============================================================*/
create table post_info (
pId INTEGER not null,
pName VARCHAR2(20),
pRemark VARCHAR2(200),
dpId INTEGER,
status char(1),
rId INTEGER,
constraint PK_POST_INFO primary key (pId)
)
/
/*==============================================================*/
/* Table: purView_info */
/*==============================================================*/
create table purView_info (
pId INTEGER not null,
pFlag VARCHAR2(20),
pRemark VARCHAR2(100),
constraint PK_PURVIEW_INFO primary key (pId)
)
/
/*==============================================================*/
/* Table: role_info */
/*==============================================================*/
create table role_info (
rId INTEGER not null,
rName VARCHAR2(20),
rRemark VARCHAR2(100),
status CHAR(1),
constraint PK_ROLE_INFO primary key (rId)
)
/
/*==============================================================*/
/* Table: role_purview_info */
/*==============================================================*/
create table role_purview_info (
rpId INTEGER not null,
rId INTEGER,
pId INTEGER,
constraint PK_ROLE_PURVIEW_INFO primary key (rpId)
)
/
/*==============================================================*/
/* Table: user_info */
/*==============================================================*/
create table user_info (
usId NUMBER(9) not null,
usName VARCHAR2(20),
password VARCHAR2(32),
usAge INTEGER,
usSex char(1),
entryTime DATE,
pId integer,
idNum varchar2(20),
hometown VARCHAR2(20),
phone VARCHAR2(11),
email VARCHAR2(50),
status char(1),
constraint PK_USER_INFO primary key (usId)
)
/
--修改user_info表字段:添加员工号字段,该字段不允许重复
alter table user_info add(usNO char(9) unique);
--创建表关系
alter table post_info
add constraint FK_POST_INF_REFERENCE_DEPT_INF foreign key (dpId)
references dept_info (dpId)
/
alter table post_info
add constraint FK_POST_INF_REFERENCE_ROLE_INF foreign key (rId)
references role_info (rId)
/
alter table role_purview_info
add constraint FK_ROLE_PUR_REFERENCE_PURVIEW_ foreign key (pId)
references purView_info (pId)
/
alter table role_purview_info
add constraint FK_ROLE_PUR_REFERENCE_ROLE_INF foreign key (rId)
references role_info (rId)
/
alter table user_info
add constraint FK_USER_INF_REFERENCE_POST_INF foreign key (pId)
references post_info (pId)
/
--创建触发器 用于主键自增
create trigger tib_dept_info before insert
on dept_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column dpId uses sequence dept_seq
select dept_seq.NEXTVAL INTO :new.dpId from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
create trigger tib_post_info before insert
on post_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column pId uses sequence post_seq
select post_seq.NEXTVAL INTO :new.pId from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
create trigger tib_purview_info before insert
on purView_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column pId uses sequence pur_seq
select pur_seq.NEXTVAL INTO :new.pId from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
create trigger tib_role_purview_info before insert
on role_purview_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column rpId uses sequence role_purView_seq
select role_purView_seq.NEXTVAL INTO :new.rpId from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
create trigger tib_user_info before insert
on user_info for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column usId uses sequence user_seq
select user_seq.NEXTVAL INTO :new.usId from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
select * from user_info for update;
select * from user_info where usNo='admin' and status='0';
insert into user_info (usname,password,usage,ussex,entrytime,pid,idnum,hometown,phone,email,status,usno)
values('管理员',123,18,'1',sysdate,null,'5145151515151','重庆','15954546321','wh@qq.com','0','T20130001');
insert into user_info (usname,password,usage,ussex,entrytime,pid,idnum,hometown,phone,email,status,usno)
values('无效数据',123,18,'1',sysdate,null,'5145151515151','北京','15954546321','w1h@qq.com','1','T20130002');
commit;