通過JDBC向數據庫中添加數據,可以使用INSERT語句實現插入數據SQL語句,對於SQL語句中的參數可以只用占位符“?”代替,然后通過PreparedStatement對其賦值以及執行SQL。代碼如下:
(1)添加圖書頁面,並不復雜,只是一個簡單的表單,頁面采用UTF-8編碼方式。
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>添加圖書</title> 5 <script type="text/javascript"> 6 function check(form){ 7 with(form){ 8 if(name.value==""){ 9 alert("圖書名稱不能為空!"); 10 return false; 11 } 12 if(price.value==""){ 13 alert("圖書價格不能為空!"); 14 return false; 15 } 16 if(author.value==""){ 17 alert("圖書作者不能為空!"); 18 return false; 19 } 20 return true; 21 } 22 } 23 </script> 24 </head> 25 <body> 26 <form action="AddBook.jsp" method="post" onSubmit="return check(this)"> 27 <div style="background:red;text-align:center;margin:0 auto;"> 28 <div>添加圖書信息 </div> 29 <div> 30 圖書名稱:<input type="text" name="name"><br><br> 31 圖書價格:<input type="text" name="price"><br><br> 32 圖書數量:<input type="text" name="bookCount"><br><br> 33 圖書作者:<input type="text" name="author"><br><br> 34 <input type="submit" value="添 加"> 35 </div> 36 </div> 37 </form> 38 </body> 39 </html>
(2)結果展示頁面,引入了一個javaBean類,同樣采用UTF-8編碼方式
1 <%@ page import="java.sql.Connection" %> 2 <%@ page import="java.sql.PreparedStatement" %> 3 <%@ page import="java.sql.DriverManager" %> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>添加結果頁</title> 8 </head> 9 <body> 10 <jsp:useBean id="book" class="com.bean.Book"></jsp:useBean> 11 <jsp:setProperty property="*" name="book"/> 12 <% 13 String url = "jdbc:mysql://localhost:3306/test"; 14 String username = "root"; 15 String password = "123456"; 16 String driver = "com.mysql.jdbc.Driver"; 17 String sql = "insert into book(name,price,bookCount,author) values(?,?,?,?)"; 18 Connection conn = null; 19 PreparedStatement ps = null; 20 21 try{ 22 Class.forName(driver); 23 }catch(ClassNotFoundException e){ 24 out.print("Class.forName(driver)出錯"); 25 e.printStackTrace(); 26 } 27 try{ 28 conn = DriverManager.getConnection(url,username,password); 29 30 ps = conn.prepareStatement(sql); 31 32 ps.setString(1, book.getName()); 33 34 ps.setDouble(2, book.getPrice()); 35 ps.setInt(3, book.getBookCount()); 36 ps.setString(4, book.getAuthor()); 37 38 int row = ps.executeUpdate(); 39 if(row > 0){ 40 out.print("圖書添加成功!"); 41 } 42 ps.close(); 43 conn.close(); 44 45 }catch(Exception e){ 46 out.print("圖書添加失敗"); 47 e.printStackTrace(); 48 } 49 50 51 %> 52 <br> 53 <a href="index.jsp">返回添加頁面</a> 54 </body> 55 </html>
(3)后台javaBean類(Book.java)
1 package com.bean; 2 3 public class Book { 4 private String name; 5 private double price; 6 private int bookCount; 7 private String author; 8 public String getName() { 9 return name; 10 } 11 public void setName(String name) { 12 this.name = name; 13 } 14 public double getPrice() { 15 return price; 16 } 17 public void setPrice(double price) { 18 this.price = price; 19 } 20 public int getBookCount() { 21 return bookCount; 22 } 23 public void setBookCount(int bookCount) { 24 this.bookCount = bookCount; 25 } 26 public String getAuthor() { 27 return author; 28 } 29 public void setAuthor(String author) { 30 this.author = author; 31 } 32 33 }
(4)由於從數據是從頁面要傳送到數據庫的,所以這里會涉及到中文亂碼的問題;所以我們的數據庫表中的字段編碼方式也是采用和網頁同樣的編碼方式UTF-8,但是光就這樣還是會出現中文亂碼的,為了解決亂碼的問題,我們在后台代碼中加入一個字符過濾器。字符過濾器代碼如下:
1 package com.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.servlet.ServletResponse; 10 import javax.servlet.annotation.WebFilter; 11 12 /** 13 * 編碼選擇器 14 * Servlet Filter implementation class CharactorFilter 15 */ 16 @WebFilter("/CharactorFilter") 17 public class CharactorFilter implements Filter { 18 //字符串編碼 19 String encoding = null; 20 public CharactorFilter() { 21 22 } 23 24 /** 25 * @see Filter#destroy() 26 */ 27 public void destroy() { 28 encoding = null; 29 } 30 31 /** 32 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) 33 */ 34 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 35 //判斷字符編碼是否為空 36 if(encoding != null) { 37 //設置request的編碼方式 38 request.setCharacterEncoding(encoding); 39 //設置response字符編碼 40 response.setCharacterEncoding(encoding); 41 response.setContentType("text/html;charset"+encoding); 42 } 43 44 chain.doFilter(request, response); 45 } 46 47 /** 48 * @see Filter#init(FilterConfig) 49 */ 50 public void init(FilterConfig fConfig) throws ServletException { 51 encoding = fConfig.getInitParameter("encoding");//初始化字符過濾器,getInitParameter("encoding")中的encoding為配置在web.xml文件中的參數 52 } 53 54 }
字符過濾器完成后,最后一步還要配置web.xml文件,需要在<web-app></web-app>之間添加如下配置代碼具體如下:
1 <filter> 2 <!--過濾器類名,必須和后台過濾器類名保持一致--> 3 <filter-name>CharactorFilter</filter-name> 4 <!--過濾器完整類名--> 5 <filter-class>com.filter.CharactorFilter</filter-class> 6 <!--開始配置初始化參數--> 7 <init-param> 8 <!--參數名稱--> 9 <param-name>encoding</param-name> 10 <!--參數值--> 11 <param-value>UTF-8</param-value> 12 </init-param> 13 </filter> 14 <!--開始配置過濾器映射--> 15 <filter-mapping> 16 <!--過濾器名稱--> 17 <filter-name>CharactorFilter</filter-name> 18 <映射到作用的url, /*表示作用到所有文件> 19 <url-pattern>/*</url-pattern> 20 </filter-mapping>
最后運行得到如下結果



