通过Tomcat的DBCP连接MySQL
文章目录
修改Servers目录下Tomcat的web.xml和context.xml两个配置文件
web.xml
增加如下代码: {% codeblock lang:xml %} DB Connection jdbc/mysql javax.sql.DataSource Container {% endcodeblock %}
context.xml
增加如下代码: {% codeblock lang:xml %} {% endcodeblock %}
MessageArchievr.java
连接的sevlet实例 {% codeblock lang:java %} import java.io.IOException; import java.sql.*; import java.text.SimpleDateFormat;
import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import javax.naming.Context; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
/**
-
Servlet implementation class MessageArchiever */ @WebServlet(description = “Stores all valid users’ message.", urlPatterns = { “/MessageArchiever” }) public class MessageArchiever extends HttpServlet { private static final long serialVersionUID = 1L;
/**
- @see HttpServlet#HttpServlet() */ public MessageArchiever() { super(); // TODO Auto-generated constructor stub }
/**
- @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append(“Served at: “).append(request.getContextPath()); }
/**
- @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
-
response)
*/ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// jdbc变量提前声明 Connection conn = null; PreparedStatement pStatement = null; // 提示表单是否提交成功 int result; try { //初始化上下文环境,可以从这个环境中取出数据源对象 Context context = new InitialContext(); //从上下文环境中取出数据源对象,其中jdbc/mysql就是我们在DBCP中配置的数据库源,这个数据库受DBCP的管理 DataSource dSource = (DataSource)context.lookup("java:/comp/env/jdbc/mysql"); conn = dSource.getConnection(); } catch (NamingException | SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //设置编码 request.setCharacterEncoding("utf-8"); // 要执行的SQL语句 String sql = "insert into book(name,email,phone,title,content,publishtime) values(?,?,?,?,?,?)"; String name = request.getParameter("name"); String email = request.getParameter("email"); String phone = request.getParameter("phone"); String topic = request.getParameter("topic"); String content = request.getParameter("content"); try { // pStatement用来执行SQL语句 pStatement = conn.prepareStatement(sql); pStatement.setString(1, StringUtil.filterHtml(name)); pStatement.setString(2, StringUtil.filterHtml(email)); pStatement.setString(3, StringUtil.filterHtml(phone)); pStatement.setString(4, StringUtil.filterHtml(topic)); pStatement.setString(5, StringUtil.filterHtml(content)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); pStatement.setString(6, sdf.format(new java.util.Date())); result = pStatement.executeUpdate(); response.getWriter().append(Integer.toString(result)); //} catch (ClassNotFoundException e) { //System.out.println("Sorry,can`t find the Driver!"); //e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { // 再次try catch抓异常 try { if (pStatement != null) { pStatement.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } doGet(request, response);
}
}
{% endcodeblock %}
StringUtil.java
字符串处理工具类: {% codeblock lang:java %} public class StringUtil { /* * 判断输入的字符串参数是否为空 * * @param args 输入的字符串 * * @return true/false */ public static boolean validateNull(String args) { if (args == null || args.length() == 0) { return true; } else { return false; } }
/*
* 判断输入的字符串是否为空或“null”字符,若是,返回target,若否,返回source参数
*/
public static String chanageNull(String source, String target) {
if (source==null||source.length()==0||source.equalsIgnoreCase("null")) {
return target;
} else {
return source;
}
}
/*
* 过滤<,>,\n字符
* @param input需要过滤的字符
* @return 完成过滤后的字符串
*/
public static String filterHtml(String input) {
if (input==null) {
return null;
}
if (input.length()==0) {
return input;
}
input=input.replaceAll("&", "&");
input=input.replaceAll("<", "<");
input=input.replaceAll(">", ">");
input=input.replaceAll(" ", " ");
input=input.replaceAll("'", "'");
input=input.replaceAll("\"", """);
input=input.replaceAll("\n", "<br>");
return input;
}
} {% endcodeblock %}
Entry.html
{% codeblock lang:html %}
<tr>
<td>
Email:
</td>
<td>
<input type="text" name="email" id="email">
</td>
</tr>
<tr>
<td>
Mobile:
</td>
<td>
<input type="text" name="phone" id="phone">
</td>
</tr>
<tr>
<td>
Topic:
</td>
<td>
<input type="text" name="topic" id="topic">
</td>
</tr>
<tr>
<td valign="top">
Content:
</td>
<td>
<textarea name="content" id="content"></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="Submit" name="submit" id="submit">
<input type="reset" value="Reset" name="reset" id="reset">
</td>
</tr>
</table>
</form>
</div>
Entry.css
{% codeblock lang:css %} @charset “UTF-8”;
body{background-color: #85C8E7;}
#title{font-size: 96;text-align: center;}
#MAlink{font-size: 72;text-align: center;}
#content{width: 400px;height: 240px;} {% endcodeblock %}