Java代码
- public class DBHelper {
- private String driverName;
- private String url;
- private String user;
- private String password;
- private Connection connection;
- private String createTableSql;
- private String dropTableSql;
- public void getConnection() {
- if (null == connection) {
- try {
- Class.forName(driverName);
- connection = DriverManager.getConnection(url, user, password);
- } catch (ClassNotFoundException | SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void closeConnection() {
- if (null != connection) {
- try {
- connection.close();
- connection = null; //connection.close won't set the connection to be null
- System.out.println("closed db connection.");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void createTable() {
- getConnection();
- Statement stmt = null;
- try {
- stmt = connection.createStatement();
- stmt.execute(createTableSql);
- System.out.println("Executed sql [" + createTableSql + "] success.");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- closeConnection();
- }
- public void dropTable() {
- getConnection();
- Statement stmt = null;
- try {
- stmt = connection.createStatement();
- stmt.execute(dropTableSql);
- System.out.println("Executed sql [" + dropTableSql + "] success.");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- closeConnection();
- }
- public String getDriverName() {
- return driverName;
- }
- public void setDriverName(String driverName) {
- this.driverName = driverName;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public String getUser() {
- return user;
- }
- public void setUser(String user) {
- this.user = user;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getCreateTableSql() {
- return createTableSql;
- }
- public void setCreateTableSql(String createTableSql) {
- this.createTableSql = createTableSql;
- }
- public String getDropTableSql() {
- return dropTableSql;
- }
- public void setDropTableSql(String dropTableSql) {
- this.dropTableSql = dropTableSql;
- }
- }
Java代码
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Test connecting mysql db</title>
- </head>
- <body>
- <jsp:useBean id="dbHelper" class="com.jesse.jsp.bean.DBHelper" />
- <jsp:setProperty property="driverName" name="dbHelper" value="com.mysql.jdbc.Driver"/>
- <jsp:setProperty property="url" name="dbHelper" value="jdbc:mysql://192.168.1.104:3306/db_jesse?useUnicode=true&characterEncoding=GBK"/>
- <jsp:setProperty property="user" name="dbHelper" value="jesse"/>
- <jsp:setProperty property="password" name="dbHelper" value="jesse"/>
- <jsp:setProperty property="createTableSql" name="dbHelper" value="create table test_tbl(id int)"/>
- <jsp:setProperty property="dropTableSql" name="dbHelper" value="drop table test_tbl"/>
- <%!
- private int id = 0;
- %>
- <%
- System.out.println(this); //to check if the servlet is singleton
- id++;
- synchronized(com.jesse.jsp.bean.DBHelper.class) {
- dbHelper.createTable();
- System.out.println(id + " created the table.");
- Thread.sleep(5000);
- dbHelper.dropTable();
- System.out.println(id + " dropped the table.");
- }
- %>
- </body>
- </html>
Java代码
- org.apache.jsp.pages.mysql_jsp@567e0fb8
- Executed sql [create table test_tbl(id int)] success.
- closed db connection.
- 1 created the table.
- org.apache.jsp.pages.mysql_jsp@567e0fb8
- Executed sql [drop table test_tbl] success.
- closed db connection.
- 2 dropped the table.
- Executed sql [create table test_tbl(id int)] success.
- closed db connection.
- 2 created the table.
- Executed sql [drop table test_tbl] success.
- closed db connection.
- 2 dropped the table.
Note:本意是要让log打印出来是哪个session在执行,看到结果...又长知识了 <%! %> 查了下,觉得这种说法有道理,暂不深究: <%%>是代码段,在由jsp转换成Servlet后 <%%>中的代码是放在serive方法中,相当于doGet()和doPost()方法 <%!%>是jsp声明,用来定义属性和方法的,在由jsp转换成Servlet后 <%!%>中的代码是放serive方法之外的.
技术分享:www.kaige123.com