




已阅读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邢台市秋招笔试英语题专练及答案
- 建设银行2025昌吉回族自治州小语种岗笔试题及答案
- 工商银行2025张家界市秋招笔试综合模拟题库及答案
- 工商银行2025临夏回族自治州结构化面试15问及话术
- 工商银行2025秋招无领导模拟题角色攻略河南地区
- 建设银行2025盐城市小语种岗笔试题及答案
- 股权互换战略合作合同协议书范本7篇
- 体育行业智能赛事组织与运营服务方案
- 子公司独立经营规划方案
- 《国际贸易实务》课件第1章
- 感恩教育主题班会-《心怀感恩温暖前行》 课件
- 六年级书法学习课件
- 人教版初中语文文言文大全(原文)
- 利用新媒体平台传播创意文化-新媒体传播创意文化
- 劳动合同(模版)4篇
- 人教版小学一年级上册道德与法治教案全册
- 部编版人教2019-2020小学四年级道德与法治上册全册教案教学设计(道法教学案)
- 第10课《往事依依》公开课一等奖创新教学设计-1
评论
0/150
提交评论