通过jsp直接操作数据库
来源:互联网 发布:施明德 知乎 编辑:程序博客网 时间:2024/05/17 22:17
在数据库中存储有证书和由证书解析出来的主题。但是在程序运行一段时间之后,发现不能兼容某些特别格式的证书。所以就修改了证书的验证方式。但是对于已经存储在数据库中的数据,就需要我们手动提取出证书,然后按照新的解析方式解析出主题后,再将其存储在数据库中。
然而因为这是已经上线正在使用的系统,而实施人员又不懂逻辑。写成一个java类,手动调用太麻烦,所以就考虑将这些逻辑全部写在jsp中,然后直接访问一下这个jsp页面,就会自动调用这些代码执行。
jsp开头文件是:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
引入单个包:
<%@ page import="java.sql.*" %>
引入多个包:与单个包一样,只是用都好隔开就好
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
或是单独一次import一个包也可:
<%@page import="java.util.Date"%><%@page import="java.text.DateFormat"%>
以下是页面操作的完整代码:
<%@page import="java.sql.*" %><%@page import="java.util.Date"%><%@page import="java.text.DateFormat"%><%@page import="java.text.SimpleDateFormat"%><%@page import="com.koal.cas.util.CertUtil"%><%@page import="com.koal.cas.util.x509.CommonCertificate"%><%@page import="com.koal.cas.cert.CertFormat"%><%@page import="com.koal.cas.entity.table.EntityCA"%><%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%boolean allUpdateResult = true;Connection conn = null;//用于查询Statement stmtQuery = null;//用于修改,查询和修改不要混用一个Statement。Statement stmtUpdate = null;ResultSet rs = null;try{ Class.forName("com.kingbase.Driver").newInstance(); //首先修改这里的url,user,password String url = "jdbc:kingbase://127.0.0.1:54321/ksso_prt"; String user = "SYSTEM"; String password = "krms"; conn = DriverManager.getConnection(url, user, password); EntityCA ca = new EntityCA(); stmtQuery = conn.createStatement(); stmtUpdate = conn.createStatement(); rs = stmtQuery.executeQuery("select * from TB_CA"); while(rs.next()){ //rs的索引是从 1 开始的,而非我们一般的从 0 开始 String cert = rs.getString(4); //解析出证书的主题,调用的是java类 String derCert=CertFormat.unFormatCert(cert); CommonCertificate commonCert = CertUtil.getX509Cert(derCert); String subject=commonCert.getSubject(); //因为Statement是与ResultSet绑定的。如果在这里还用stmtQuery的话,就会导致 rs 重置为空,就不能在循环读取之后的数据了,所以在嵌套的时候,查询和修改要用两个Statement int result = stmtUpdate.executeUpdate("update TB_CA set CA_CERT_SUBJECT='" + subject + "' where CA_CERT = '" + cert + "'"); if(result < 1){ allUpdateResult = false; } }}finally{ //可能这种关闭方法大家都会嫌太麻烦,只是在正式商用的系统中,为了绝对的安全可靠而言,又是写法麻烦些也是必要的,一切以稳妥为最高目标 try{ if(rs != null) rs.close(); }catch(Exception e){ } try{ if(stmtQuery != null) stmtQuery.close(); }catch(Exception e){ } try{ if(stmtUpdate != null) stmtUpdate.close(); }catch(Exception e){ } try{ if(conn != null) conn.close(); }catch(Exception e){ }}//在网页显示一条信息,以表示执行结果if(allUpdateResult){ out.println("所有CA主题项修改成功!<br/>");}else{ out.println("CA信息修改失败!<br/>");}out.println("执行结束!");%>
执行这个页面的代码方式是:访问一下该页面即可,即在浏览器中输入 http://localhost:8080/test/update.jsp 即可。
0 0
- 通过jsp直接操作数据库
- Jsp直接操作数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 直接通过ADO操作Access数据库
- 分层实现JSP通过JDBC操作数据库
- 直接通过ADO操作Access数据库(修改版)
- 直接通过ADO操作Access数据库(修改版)
- 直接通过ADO操作Access数据库(修改版)
- 将自己的应用程序编译进Android操作系统作为系统应用启动
- 目录处理命令
- iOS中使用NSProgress类来创建UI进度条的方法详解
- 二进制、八进制、十进制和十六进制之间的转换
- ImageView的android:scaleType属性和 src、Background之前的区别
- 通过jsp直接操作数据库
- 如何将mysql注册成服务
- Activity之方法汇总索引
- 将 Street View Text 数据集的 GroundTruth 标注在图像上
- XDC工具使用示例
- [Spring+Hibernate系列]1.Spring+Hibernate 框架搭建
- 解决xshell关闭后weblogic也关闭问题
- HTML常用标签
- 自己编写的一些小程序