已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C3p0 连接池 DB工具类:JDBCUtils :package cn.kgli.utils;import java.io.InputStream;import java.lang.reflect.Field;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import java.util.Properties;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JdbcUtils private static ComboPooledDataSource ds = null;statictry/*ds = new ComboPooledDataSource();ds.setDriverClass(com.mysql.jdbc.Driver);ds.setJdbcUrl(jdbc:mysql:/localhost:3306/day16);ds.setUser(root);ds.setPassword(root);ds.setInitialPoolSize(10);ds.setMinPoolSize(5);ds.setMaxPoolSize(20);*/ds = new ComboPooledDataSource();catch (Exception e) throw new ExceptionInInitializerError(e);public static Connection getConnection() throws SQLExceptionreturn ds.getConnection();public static void release(Connection conn,Statement st,ResultSet rs)if(rs!=null)tryrs.close();catch (Exception e) e.printStackTrace();rs = null;if(st!=null)tryst.close();catch (Exception e) e.printStackTrace();if(conn!=null)tryconn.close();catch (Exception e) e.printStackTrace();/替换dao中的增删改方法public static void update(String sql,Object params) throws SQLExceptionConnection conn = null;PreparedStatement st = null;ResultSet rs = null;tryconn = getConnection();st = conn.prepareStatement(sql);for(int i=0;iparams.length;i+)st.setObject(i+1, paramsi);st.executeUpdate();finallyrelease(conn, st, rs);/替换所有dao中的查询 策略模式public static Object query(String sql,Object params,ResultSetHandler rsh) throws SQLExceptionConnection conn = null;PreparedStatement st = null;ResultSet rs = null;tryconn = getConnection();st = conn.prepareStatement(sql);for(int i=0;iparams.length;i+)st.setObject(i+1, paramsi);rs = st.executeQuery();return rsh.handler(rs);finallyrelease(conn, st, rs);JDBCUtills_dbcp.java:package cn.kgli.utils;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import mons.dbcp.BasicDataSourceFactory;public class JdbcUtils_DBCP private static DataSource ds = null;statictryInputStream in = JdbcUtils_DBCP.class.getClassLoader().getResourceAsStream(perties);Properties prop = new Properties();prop.load(in);BasicDataSourceFactory factory = new BasicDataSourceFactory();ds = factory.createDataSource(prop);System.out.println(ds);catch (Exception e) throw new ExceptionInInitializerError(e);public static Connection getConnection() throws SQLExceptionreturn ds.getConnection();public static void release(Connection conn,Statement st,ResultSet rs)if(rs!=null)tryrs.close();catch (Exception e) e.printStackTrace();rs = null;if(st!=null)tryst.close();catch (Exception e) e.printStackTrace();if(conn!=null)tryconn.close();catch (Exception e) e.printStackTrace();/BeanHandler.javapackage cn.kgli.utils;import java.lang.reflect.Field;import java.sql.ResultSet;import java.sql.ResultSetMetaData;public class BeanHandler implements ResultSetHandler private Class clazz;public BeanHandler(Class clazz)this.clazz = clazz;public Object handler(ResultSet rs) tryif(!rs.next()return null;Object bean = clazz.newInstance();ResultSetMetaData metadata = rs.getMetaData();int columnCount = metadata.getColumnCount(); /得到结果集中有几列数据for(int i=0;icolumnCount;i+)String coulmnName = metadata.getColumnName(i+1); /得到每列的列名Object coulmnData = rs.getObject(i+1);Field f = clazz.getDeclaredField(coulmnName);/反射出类上列名对应的属性f.setAccessible(true);f.set(bean, coulmnData);return bean;catch (Exception e) throw new RuntimeException(e);BeanListHandler.javapackage cn.kgli.utils;import java.lang.reflect.Field;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.util.ArrayList;import java.util.List;public class BeanListHandler implements ResultSetHandler private Class clazz;public BeanListHandler(Class clazz)this.clazz = clazz;public Object handler(ResultSet rs) tryList list = new ArrayList();while(rs.next()Object bean = clazz.newInstance();ResultSetMetaData metadata = rs.getMetaData();int count = metadata.getColumnCount();for(int i=0;i0?list:null;catch (Exception e) throw new RuntimeException(e);防止表单重复提交:拦截注册页面 加上session token package cn.kgli.servlet;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sun.misc.BASE64Encoder;public class FormServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String token = TokenProccessor.getInstance().makeToken();request.getSession().setAttribute(token, token); /在服务器端保存随机数request.getRequestDispatcher(/form.jsp).forward(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);class TokenProccessor/* *单态设计模式(保证类的对象在内存中只有一个) *1、把类的构造函数私有 *2、自己创建一个类的对象 *3、对外提供一个公共的方法,返回类的对象 * */private TokenProccessor()private static final TokenProccessor instance = new TokenProccessor();public static TokenProccessor getInstance()return instance;public String makeToken() /checkException/ 7346734837483 834u938493493849384 43434384String token = (System.currentTimeMillis() + new Random().nextInt(999999999) + ;/数据指纹 128位长 16个字节 md5try MessageDigest md = MessageDigest.getInstance(md5);byte md5 = md.digest(token.getBytes();/base64编码-任意二进制编码明文字符 adfsdfsdfsfBASE64Encoder encoder = new BASE64Encoder();return encoder.encode(md5); catch (NoSuchAlgorithmException e) throw new RuntimeException(e); My JSP form.jsp starting page input type=hidden name=token value= 用户名: package cn.itcast.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DoFormServlet extends HttpServlet public void doGet(Ht
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健身指导设计方案
- 光电技术发展趋势分析
- 今年农业新技术发展趋势
- 供电服务技术创新
- 住户调查方案设计
- 人力资源管理对策研究报告总结
- 主管明年工作计划
- 产品市场营销方案策划书
- 保险销售竞赛方案
- 声学海流计相关行业项目操作方案
- Lesson77Terribletoothache(课件)新概念英语第一册
- 2022版义务教育(生物学)课程标准(附课标解读)
- 幼儿生活活动观察指导
- 2024年丙烯酸酯胶行业分析报告及未来发展趋势
- 医院放射诊疗中的辐射防护常识学习培训
- 幼儿园环保教育开展的现状研究
- 采购和外包过程控制程序解析
- 医院感染监测标准2023
- 建筑施工主要岗位安全生产责任清单
- 派对式KTV项目招商引资方案
- 家庭环境对儿童身心健康的影响研究
评论
0/150
提交评论