Java编程:通过加密来保护服务器安全
我们在使用Java编程加密的时候需要注意很多的知识,下面我们就来看看如何应对Java编程加密中的相关问题,希望大家有所收获。服务器配置了JTA支持以后(tomcat配置的是JOTM)。
在一个web应用程序提出多个数据库在一个事务范围内进行操作的请求以后(这个请求就是通过UserTransaction发出),就会发送到Tomcat上,而Tomcat中已经配置了事务管理器(就是TransactionManager),那么就由Java编程加密事务管理器处理这个请求,执行两阶段提交协议,想各个数据库进行提交,而这些数据库驱动和以往的数据库驱动有不同,是支持JTA的驱动,下面是一段示例代码
1. <%@page contentType="text/html;charset=GB2312"%>
2. <%@page import="java.sql.*"%>
3. <%@page import="javax.sql.*"%>
4. <%@page import="javax.naming.*"%>
5. <%@page import="javax.transaction.UserTransaction"%>
6. <%
7. ResultSet rs = null;
8. Statement stmt = null;
9. UserTransaction ut = null;
10. Connection conn = null;
11. try {
12. Context initCtx = new InitialContext();
13. Context envCtx = (Context) initCtx.lookup("java:comp/env");
14. DataSource ds = (DataSource) envCtx.lookup("jdbc/framework");
15. ut = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
16. conn = ds.getConnection();
17. ut.begin();
18. System.out.println("<<< beginning the transaction >>>");
19. stmt = conn.createStatement(
20. // ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE
21. );
22. rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1");
23. rs.next();
24. } catch(Exception e) {e.printStackTrace();}
25. %>
26. <html>
27. <body>
28. Original price:
29. <%=rs.getString("price")%>
30. <br>After update:
31. <%
32. PreparedStatement pstmt = conn.prepareStatement("update tm_product set price=? where id=1");
33. pstmt.setInt(1,101);
34. pstmt.executeUpdate();
35. rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1");
36. rs.next();
37. %>
38. <%=rs.getString("price")%>
39. <br>After Rollback:
40. <%
41. System.out.println("<<< rolling back the transaction >>>");
42. ut.rollback();//Or ut.commit();
43. rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1");
44. rs.next();
45. %>
46. <%=rs.getString("price")%>
47. <%conn.close();%>
48. </body>
49. </html>