jsp+servlet+javaBean自我大总结常用模式.doc_第1页
jsp+servlet+javaBean自我大总结常用模式.doc_第2页
jsp+servlet+javaBean自我大总结常用模式.doc_第3页
jsp+servlet+javaBean自我大总结常用模式.doc_第4页
jsp+servlet+javaBean自我大总结常用模式.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

jsp+servlet+javaBean自我大总结常用模式 第一步:建一个操作员表。 create table TOPERATOR ( OPERATOR_ID NVARCHAR2(20) primary key, OPERATOR_NAME VARCHAR2(20), OPERATOR_PWD VARCHAR2(20), IS_ADMIN CHAR(1)第二步:创建javaBean/*o * 操作实体类 * * author chenlijiang 2010-12-1 */public class Operator implements Serializable private static final long serialVersionUID = 1L; public static final int ADMIN = 1; public static final int OPER = 2; private String operator_id; private String operator_name; private String operator_pwd; private String is_admin; public String getOperator_id() return operator_id; public void setOperator_id(String operatorId) operator_id = operatorId; public String getOperator_name() return operator_name; public void setOperator_name(String operatorName) operator_name = operatorName; public String getOperator_pwd() return operator_pwd; public void setOperator_pwd(String operatorPwd) operator_pwd = operatorPwd; public String getIs_admin() return is_admin; public void setIs_admin(String isAdmin) is_admin = isAdmin; 第三步:建立一个类,封装所有数据库操作/* * 把对数据库的操作放在本类中。 update:对数据库的修改操作 select: 查询数据库中的数据 * * author chenlijiang 2010-12-14 */public class DbUtil private final String url; private final String user; private final String password; private final ThreadLocal th = new ThreadLocal(); static try Class.forName(oracle.jdbc.OracleDriver); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); private DbUtil() url = jdbc:oracle:thin:localhost:1521:orcl; user = system; password = orcl; / 单例模式 private static DbUtil dbUtil; public static DbUtil getDbUtil() if (dbUtil = null) dbUtil = new DbUtil(); return dbUtil; / 获得Connection连接 public Connection getConnection() Connection conn = th.get(); if (conn = null) try conn = DriverManager.getConnection(url, user, password); / conn.setAutoCommit(false); th.set(conn); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); return conn; / 关闭连接 public void closeConnection() Connection conn = th.get(); if (conn != null) try th.remove(); / mit(); conn.close(); System.out.println(closeConnection启动); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); / 更新数据库方法 public int update(String sql, Object. objects) /此种写法相当有效。以后所有的insert,update,delete方法都可以调用该方法来实现,该方 /法用了一种可变参数(Object.objects)的方式来实现。 Connection conn = getConnection(); try PreparedStatement p = conn.prepareStatement(sql); for (int i = 0; i objects.length; i+) p.setObject(i + 1, objectsi); int rows = p.executeUpdate(); p.close(); return rows; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); try throw new DbException(数据库更新出错); catch (DbException e1) / TODO Auto-generated catch block e1.printStackTrace(); return 0; / 查询所有数据的方法。可以单独列出来实现,大家可能看到有个RowParser这个接口。别着急,这个类是自定义的。后面将给出 public List select(String sql, RowParser parser, Object. param) List list = new ArrayList(); try Connection conn = getConnection(); PreparedStatement p = conn.prepareStatement(sql); for (int i = 0; i . public T unique(String sql, RowParser parser, Object. param) Object obj = null; try Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql); for (int i = 0; i param.length; i+) stmt.setObject(i + 1, parami); ResultSet rs = stmt.executeQuery(); if (rs.next() obj = parser.convertToModel(rs); rs.close(); stmt.close(); return (T) obj; catch (SQLException e) e.printStackTrace(); throw new DbException(数据库查询出错); 第三步:附上前面提到的RowParser接口,看清楚了吧,就写了一个方法public interface RowParser Object convertToModel(ResultSet rs) throws SQLException;第四步:定义DAO接口,里面定义了操作数据库的方法,当然你也可以填上delete方法。方便别的类实现他以实现相应的操作public interface IOperatorDao Operator findById(String id); List list(); public void add(Operator oper); public void update(Operator oper);第五步:实现DAO,实现里面的增删查改方法public class OperatorDAO implements IOperatorDao, RowParser /此处才真正实现了前面提到的RowParser接口里的方法。作用就不说了,相信都看得懂的 private final RowParser parser = new RowParser() public Object convertToModel(ResultSet rs) throws SQLException / TODO Auto-generated method stub Operator operator = new Operator(); operator.setOperator_id(rs.getString(operator_id); operator.setOperator_name(rs.getString(operator_name); operator.setOperator_pwd(rs.getString(operator_passwd); operator.setIs_admin(rs.getString(is_admin); return operator; ; / 添加 public void add(Operator oper) / TODO Auto-generated method stub String sql = insert into toperator(operator_id,operator_name,operator_pwd,is_admin) values(?,?,?,?); DbUtil.getDbUtil().update(sql, oper.getOperator_id(),/调用前面写出的DbUtil类的update方法。此处就为update方法实现了可变参数的 /传参操作 oper.getOperator_name(), oper.getOperator_pwd(), oper.getIs_admin(); / 由ID查询记录,实现方式同上 public Operator findById(String id) String sql = select operator_id,operator_name,operator_pwd,is_admin from toperator where operator_id=?; Operator operator = DbUtil.getDbUtil().unique(sql, parser, id); return operator; /查询所有记录,实现方式同上 public List list() / TODO Auto-generated method stub String sql = select operator_id,operator_name,operator_pwd,is_admin from toperator; return DbUtil.getDbUtil().select(sql, parser); / 修改 public void update(Operator oper) / TODO Auto-generated method stub String sql = update toperator set operator_name=?,operator_pwd=?,is_admin=? where operator_id=?; DbUtil.getDbUtil().update(sql, oper.getOperator_name(), oper.getOperator_pwd, oper.getIs_admin, oper.getOperator_id(); public Object convertToModel(ResultSet rs) throws SQLException / TODO Auto-generated method stub return null; 第六步:创建DAO工厂,生产Ddaopublic class DAOFactory private static DAOFactory instance; private DAOFactory() services.put(IOperatorDao.class, new OperatorDAO(); public static DAOFactory getInstance() if (instance = null) instance = new DAOFactory(); return instance; private final Map services = new HashMap(); public T getService(Class clazz) return (T) services.get(clazz); 第七步:定义Service接口,Service的作用其实是调用了DAO的方法变成自己的方法(拿来主义!)public interface IAdminService void addOperator(Operator oper); List listOperator(); Operator findOperatorById(String id); void updateOperator(Operator operator);第八步:实现该Service接口,service的作用大家也看到了,主要就是把DAO里面的方法调用过来,变成自己的方法(改个名字而已)大家看到了红色的字(BaseService),我将在第九步给出。大家/* * * * author chenlijiang 2010-12-15 */public class AdminService extends BaseService implements IAdminService private final IOperatorDao operatorDao = daoFactory .getService(IOperatorDao.class); public void addOperator(Operator oper) / TODO Auto-generated method stub operatorDao.add(oper); public Operator findOperatorById(String id) / TODO Auto-generated method stub return operatorDao.findById(id); public List listOperator() / TODO Auto-generated method stub return operatorDao.list(); public void updateOperator(Operator operator) / TODO Auto-generated method stub 第九步:BaseServicepublic class BaseService protected DAOFactory daoFactory = DAOFactory.getInstance(); 第十步:生产Servicepublic class ServiceFactory private static ServiceFactory instance; private ServiceFactory() services.put(IAdminService.class, new AdminService();-(5) ; public static ServiceFactory getInstance() if (instance = null) instance = new ServiceFactory(); return instance; private final Map services = new HashMap(); public T getService(Class clazz) return (T) services.get(clazz); 以上步骤哦我们已经把业务层Service简历起来了。之后的工作就是如何在C(控制器)里调用业务完成我们需要的功能 第十一步:简历Servlet/*author chenlijiang 2010-11-19 处理新增操作员时请求 参见addOperator.jsp */public class AddOperatorServlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws Servl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论