




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游晚宴活动方案
- 新疆户外拓展活动方案
- 春节汽车年会活动方案
- 新颖五四活动策划方案
- 教育学生环保的课件
- 新年守岁活动方案
- 早教机构春天活动方案
- 明星宣传活动方案
- 【黄冈】2025年湖北黄冈红安县事业单位招聘高层次人才72人笔试历年典型考题及考点剖析附带答案详解
- 【开封】2025年河南开封市禹王台区事业单位招聘14人笔试历年典型考题及考点剖析附带答案详解
- 办公用房简易装修合同样本
- 上海市医疗机构医疗服务项目和价格汇编
- 种子轮投资协议合同协议
- 车辆油耗管理制度模板
- 护理反思书写规范
- 2025年北京市第一次普通高中学业水平合格性考试(学考)化学试卷(原卷版+解析版)
- 2025《义务教育劳动课程标准(2022年版)》测试题库及答案【共3套】
- 头端可弯曲负压吸引鞘在输尿管软镜碎石术处理长径≤2cm上尿路结石中的应用研究
- 某部劳务派遣服务方案投标文件(技术方案)
- 1保护生物学-1-省公开课一等奖全国示范课微课金奖课件
- “六项机制”档案资料要求
评论
0/150
提交评论