用ajax發異步請求時,要注意url。「AppServer」爲後臺項目名,「LoginServlet.action」爲web.xml中的<url-pattern></url-pattern>標籤中的內容。html
前臺代碼以下(核心代碼):java
index.html:web
1 $(function() { 2 $('#login').click(function() { 3 var account = $("#account").val(); 4 var passwords = $('#passwords').val(); 5 $.ajax({ 6 url: "http://localhost:8080/AppServer/LoginServlet.action?ajaxType=jsonp", 7 dataType: "jsonp", 8 jsonpCallback: "jsonpCallback", 9 jsonp: "callback", 10 data: { 11 account: account, 12 passwords: passwords, 13 }, 14 success: function(server) { 15 if (server.is) { 16 alert("登陸成功"); 17 $(location).attr('href', 'main.html?account=' + account); 18 } else { 19 alert("登陸失敗:" + server.err); 20 } 21 }, 22 error: function(server) { 23 alert("鏈接服務器失敗"); 24 }, 25 }); 26 }); 27 $('#register').click(function() { 28 $(location).attr('href', 'register.html'); 29 }); 30 })
register.html:ajax
1 $(function() { 2 $('#register').click(function() { 3 var islen = ($('#password1').val().length >= 6 && $('#password1').val().length <= 12) && ($('#password2').val().length >= 6 && $('#password2').val().length <= 12); 4 var isID = $('#user_id').val().length > 0 && $('#user_id').val().length <= 18; 5 if (islen && isID) { 6 if ($('#password1').val() == $('#password2').val()) { 7 $.ajax({ 8 type: "post", 9 url: "http://localhost:8080/AppServer/RegisterServlet.action?ajaxType=jsonp", 10 dataType: "jsonp", 11 jsonpCallback: "jsonpCallback", 12 jsonp: "callback", 13 data: { 14 account: $('#account').val(), 15 passwords: $('#password1').val(), 16 phone: $('#phone').val(), 17 email: $('#email').val(), 18 userId: $('#user_id').val(), 19 userName: $('#user_name').val(), 20 sex: $('input:radio:checked').val(), 21 }, 22 success: function(server) { 23 if (server.is) { 24 alert("註冊成功"); 25 $(location).attr('href', 'index.html'); 26 } else { 27 alert("註冊失敗"); 28 } 29 }, 30 error: function(server) { 31 alert("鏈接服務器失敗"); 32 }, 33 }); 34 } else { 35 alert('密碼不一致!'); 36 } 37 } else { 38 if (!isID) { 39 alert('請輸入正確的身份證!'); 40 } else if (!islen) { 41 alert('密碼長度不一致'); 42 } else { 43 alert('請輸入合法的信息!'); 44 } 45 } 46 }); 47 })
main.html:sql
1 $(function() { 2 var loc = location.href; 3 var n1 = loc.length; //地址的總長度
4 var n2 = loc.indexOf("="); //取得=號的位置
5 var accounts = decodeURI(loc.substr(n2 + 1, n1 - n2)); 6 $('#select').click(function() { 7 $('#div2').show(1500); 8 $('#div3').hide(1500); 9 $.ajax({ 10 url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=select", 11 dataType: "jsonp", 12 jsonpCallback: "jsonpCallback", 13 jsonp: "callback", 14 data: { 15 account: accounts, 16 }, 17 success: function(server) { 18 if (server.is) { 19 $('#account').val(server.account); 20 $('#phone').val(server.phone); 21 $('#email').val(server.email); 22 $('#ids').val(server.userId); 23 $('#name').val(server.userName); 24 $('#password').val(server.passwords); 25 $('#sex').val(server.sex); 26 } else { 27 alert("查看失敗!"); 28 } 29 }, 30 error: function(server) { 31 alert("鏈接服務器失敗!"); 32 }, 33 }); 34 }); 35 $('#save').click(function() { 36 var islen = $('#password').val().length >= 6 && $('#password').val().length <= 12; 37 var isID = $('#ids').val().length > 0 && $('#ids').val().length <= 18; 38 if (islen && isID) { 39 $.ajax({ 40 async: true, 41 type: "post", 42 url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=save", 43 dataType: "jsonp", 44 jsonpCallback: "jsonpCallback", 45 jsonp: "callback", 46 data: { 47 account: $('#account').val(), 48 passwords: $('#password').val(), 49 phone: $('#phone').val(), 50 email: $('#email').val(), 51 userId: $('#ids').val(), 52 userName: $('#name').val(), 53 sex: $('#sex').val(), 54 }, 55 success: function(server) { 56 if (server.is) { 57 alert("修改爲功!"); 58 $('#div2').hide(1500); 59 } else { 60 alert("修改失敗!"); 61 } 62 }, 63 error: function(server) { 64 alert("鏈接服務器失敗!"); 65 }, 66 }); 67 } else { 68 if (!isID) { 69 alert('請輸入正確的身份證!'); 70 } else if (!islen) { 71 alert('密碼長度不一致'); 72 } else { 73 alert('請輸入合法的信息!'); 74 } 75 } 76 }); 77 $('#cancel').click(function() { 78 $.ajax({ 79 url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=cancel", 80 dataType: "jsonp", 81 jsonpCallback: "jsonpCallback", 82 jsonp: "callback", 83 data: { 84 account: accounts, 85 }, 86 success: function(server) { 87 if (server.is) { 88 alert("註銷成功!"); 89 $(location).attr('href', 'index.html'); 90 } else { 91 alert("註銷失敗!"); 92 } 93 }, 94 error: function(server) { 95 alert("鏈接服務器失敗!"); 96 }, 97 }); 98 }); 99 $('#all').click(function() { 100 $('#div3').show(1500); 101 $('#div2').hide(1500); 102 $.ajax({ 103 url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=all", 104 dataType: "jsonp", 105 jsonpCallback: "jsonpCallback", 106 jsonp: "callback", 107 success: function(server) { 108 if (server.is) { 109 alert("查當作功!"); 110 var arrData = []; 111 var arr = null; 112 for (i = 0; i < server.data.length; i++) { 113 if (arr == null) { 114 arr = new Array; 115 } 116 arr.push(server.data[i].userId); 117 arr.push(server.data[i].userName); 118 arr.push(server.data[i].account); 119 arr.push(server.data[i].phone); 120 arr.push(server.data[i].email); 121 arr.push(server.data[i].passwords); 122 arr.push(server.data[i].sex); 123 arrData.push(arr); 124 arr = null; 125 } 126 var td = ""; 127 var table = ""; 128 if(arrData != null){ 129 for(var i=0 ; i<arrData.length ; i++){ 130 var tr = "<tr>"; 131 for(var j=0 ; j<arrData[i].length; j++){ 132 td += '<td>' + arrData[i][j] + '</td>'; 133 } 134 var tr2 = "</tr>"; 135 table += (tr + td + tr2); 136 td = ""; 137 } 138 $('#bodys').html(table); 139 } 140 } else { 141 alert("查看失敗!"); 142 } 143 }, 144 error: function(server) { 145 alert("鏈接服務器失敗!"); 146 }, 147 }); 148 }); 149 })
web.xml:數據庫
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
3 <display-name></display-name>
4 <servlet>
5 <servlet-name>LoginServlet</servlet-name>
6 <servlet-class>com.yuw.servlet.LoginServlet</servlet-class>
7 </servlet>
8 <servlet>
9 <servlet-name>RegisterServlet</servlet-name>
10 <servlet-class>com.yuw.servlet.RegisterServlet</servlet-class>
11 </servlet>
12 <servlet>
13 <servlet-name>MainServlet</servlet-name>
14 <servlet-class>com.yuw.servlet.MainServlet</servlet-class>
15 </servlet>
16 <servlet-mapping>
17 <servlet-name>LoginServlet</servlet-name>
18 <url-pattern>/LoginServlet.action</url-pattern>
19 </servlet-mapping>
20 <servlet-mapping>
21 <servlet-name>RegisterServlet</servlet-name>
22 <url-pattern>/RegisterServlet.action</url-pattern>
23 </servlet-mapping>
24 <servlet-mapping>
25 <servlet-name>MainServlet</servlet-name>
26 <url-pattern>/MainServlet.action</url-pattern>
27 </servlet-mapping>
28 </web-app>
後臺代碼:json
項目結構:服務器
AccessData.java(與數據庫交互)app
1 package com.yuw.jdbc; 2
3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.io.UnsupportedEncodingException; 6 import java.sql.Connection; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.util.List; 11
12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet.http.HttpServletResponse; 14
15 import com.yuw.servlet.example.JDBCDataBase; 16 import com.yuw.transfer.DataTransfer; 17
18 /**
19 * 20 * @author Yuw 21 * @data 2017-12-20 22 */
23 public abstract class AccessData { 24 public static final int ONE = 1; 25 protected Connection connection = null; 26 protected PreparedStatement preparedStatement = null; 27 protected ResultSet resultSet = null; 28 // 接收數據
29 protected List<Object> listDataReceive = null; 30 public AccessData() { 31
32 } 33 /*
34 * @dataBase 數據庫鏈接 35 * @dataTransfer 得到每次鏈接的數據信息 36 */
37 public void connectionJDBC(JDBCDataBase dataBase,DataTransfer<List<Object>> dataTransfer) { 38 if(this.connection == null){ 39 this.connection = dataBase.example(); 40 this.listDataReceive = dataTransfer.transfer(); 41 } 42 } 43 /*
44 * 刪除 45 */
46 public int deleteData(String sql){ 47 int msg = 0; 48 try { 49 if(listDataReceive != null){ 50 preparedStatement = connection.prepareStatement(sql); 51 int index = 1; 52 for(Object object : listDataReceive){ 53 preparedStatement.setString(index++, (String)object); 54 } 55 msg = preparedStatement.executeUpdate(); 56 } 57 } catch (SQLException e) { 58 // TODO Auto-generated catch block
59 e.printStackTrace(); 60 }finally{ 61 close(); 62 } 63 return msg; 64 } 65 /*
66 * 插入 67 */
68 public int insertData(String sql){ 69 int msg = 0; 70 try { 71 if(listDataReceive != null){ 72 preparedStatement = connection.prepareStatement(sql); 73 int index = 1; 74 for(Object object : listDataReceive){ 75 preparedStatement.setString(index++, (String)object); 76 } 77 msg = preparedStatement.executeUpdate(); 78 } 79 } catch (SQLException e) { 80 // TODO Auto-generated catch block
81 e.printStackTrace(); 82 }finally{ 83 close(); 84 } 85 return msg; 86
87 } 88 /*
89 * 查詢 90 */
91 public int selectData(String sql){ 92 PreparedStatement preparedStatement = setPreparedStatement(sql); 93 try { 94 if(listDataReceive != null){ 95 int index = 1; 96 for(Object object : listDataReceive){ 97 preparedStatement.setString(index++, (String)object); 98 System.out.println((String)object); 99 } 100 resultSet = preparedStatement.executeQuery(); 101 return returnONE(resultSet); 102 } 103
104 } catch (SQLException e) { 105 // TODO Auto-generated catch block
106 e.printStackTrace(); 107 }finally{ 108 close(); 109 } 110 return 0; 111
112 } 113 /*
114 * 判斷結果集是否只有一行 115 */
116 public int returnONE(ResultSet resultSet){ 117 try { 118 resultSet.last(); 119 if(resultSet.getRow() == ONE){ 120 return ONE; 121 } 122 } catch (SQLException e) { 123 // TODO Auto-generated catch block
124 e.printStackTrace(); 125 } 126 return 0; 127
128 } 129
130 public PreparedStatement setPreparedStatement(String sql){ 131 try { 132 if(this.preparedStatement == null){ 133 this.preparedStatement = connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 134 } 135 } catch (SQLException e) { 136 // TODO Auto-generated catch block
137 e.printStackTrace(); 138 } 139 return preparedStatement; 140
141 } 142 /*
143 * 處理亂碼 144 */
145 public String toCharacterEncoding(String str) throws UnsupportedEncodingException{ 146 if(str == null){ 147 System.out.println("請傳參"); 148 } 149 return new String(str.getBytes("iso-8859-1"),"utf-8"); 150
151 } 152 /*
153 * 關閉鏈接 154 */
155 public void close(){ 156 if(preparedStatement != null){ 157 try { 158 preparedStatement.close(); 159 } catch (SQLException e) { 160 // TODO Auto-generated catch block
161 e.printStackTrace(); 162 } 163 } 164 if(connection != null){ 165 try { 166 connection.close(); 167 } catch (SQLException e) { 168 // TODO Auto-generated catch block
169 e.printStackTrace(); 170 } 171 } 172 } 173 /*
174 * 與前臺交互 175 */
176 public void WriteMsg(int msg,int t,HttpServletRequest request,HttpServletResponse response){ 177 try { 178 if(t == msg){ 179 String jsonp = request.getParameter("callback"); 180 PrintWriter out = response.getWriter(); 181 out.write(jsonp+"({\"is\":true})"); 182 }else{ 183 String jsonp = request.getParameter("callback"); 184 PrintWriter out = response.getWriter(); 185 out.write(jsonp+"({\"is\":false,\"err\":"+"\"帳號或密碼錯誤!\""+"})"); 186 } 187 } catch (IOException e) { 188 // TODO Auto-generated catch block
189 e.printStackTrace(); 190 } 191 } 192
193 }
LoginServlet.java(登陸)異步
1 package com.yuw.servlet; 2
3 import java.io.IOException; 4 import java.util.ArrayList; 5 import java.util.Arrays; 6 import java.util.List; 7
8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12
13 import com.yuw.jdbc.AccessData; 14 import com.yuw.servlet.example.SQLserverJDBC; 15 import com.yuw.transfer.DataTransfer; 16
17 /**
18 * @author Yuw 19 * @data 2017-12-20 20 * 21 */
22 public class LoginServlet extends HttpServlet implements
23 DataTransfer<List<Object>> { 24
25 private static final long serialVersionUID = 1L; 26 // 數據傳送
27 private List<Object> listDataSend = null; 28
29 public List<Object> getListDataSend() { 30 return listDataSend; 31 } 32
33 public void setListDataSend(List<Object> listDataSend) { 34 this.listDataSend = listDataSend; 35 } 36
37 public void doGet(HttpServletRequest request, HttpServletResponse response) 38 throws ServletException, IOException { 39
40 doPost(request, response); 41 } 42
43 public void doPost(HttpServletRequest request, HttpServletResponse response) 44 throws ServletException, IOException { 45 response.setContentType("text/plain; charset=utf-8"); 46
47 ActionListen actionListen = new ActionListen(); 48 List<Object> list = new ArrayList<Object>(); 49 list.addAll(Arrays.asList( 50 actionListen.toCharacterEncoding(request.getParameter("account")), 51 actionListen.toCharacterEncoding(request.getParameter("passwords")))); 52 setListDataSend(list); 53 // 發起數據庫鏈接
54 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 55 final String sql = "select * from user_Account where account = ? and password = ?"; 56 // 與前臺交互
57 actionListen.WriteMsg(ActionListen.ONE,actionListen.selectData(sql), request, response); 58
59 } 60 /*
61 * 監聽類 62 */
63 private class ActionListen extends AccessData { 64
65 public ActionListen() { 66
67 } 68
69 } 70
71 public List<Object> transfer() { 72 // TODO Auto-generated method stub
73 return this.listDataSend; 74 } 75
76 }
MainServlet.java(主要功能)
1 package com.yuw.servlet; 2
3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.sql.PreparedStatement; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.Arrays; 9 import java.util.List; 10
11 import javax.servlet.ServletException; 12 import javax.servlet.http.HttpServlet; 13 import javax.servlet.http.HttpServletRequest; 14 import javax.servlet.http.HttpServletResponse; 15
16 import org.junit.Test; 17
18 import com.yuw.jdbc.AccessData; 19 import com.yuw.servlet.example.SQLserverJDBC; 20 import com.yuw.transfer.DataTransfer; 21 import com.yuw.transfer.DataTransferReport; 22 /**
23 * @author Yuw 24 * @data 2017-12-21 25 * 26 */
27 public class MainServlet extends HttpServlet implements DataTransfer<List<Object>>{ 28
29 private static final long serialVersionUID = 1L; 30 //數據傳送
31 private List<Object> listDataSend = null; 32 //數據接收
33 private List<Object> listDataReceive = null; 34
35 public MainServlet(){ 36
37 } 38
39 public List<Object> getListDataReceive() { 40 return listDataReceive; 41 } 42
43 public void setListDataReceive(DataTransferReport<List<Object>> dataTransferReport) { 44 this.listDataReceive = dataTransferReport.transfer(); 45 } 46
47 public List<Object> getListDataSend() { 48 return listDataSend; 49 } 50
51 public void setListDataSend(List<Object> listDataSend) { 52 this.listDataSend = listDataSend; 53 } 54
55 public void doGet(HttpServletRequest request, HttpServletResponse response) 56 throws ServletException, IOException { 57
58 doPost(request, response); 59 } 60
61 public void doPost(HttpServletRequest request, HttpServletResponse response) 62 throws ServletException, IOException { 63 response.setContentType("text/plain; charset=utf-8"); 64 ActionListen actionListen = new ActionListen(); 65 List<Object> list = new ArrayList<Object>(); 66 // 查看我的信息
67 if("select".equals(request.getParameter("Type"))){ 68 System.out.println(request.getParameter("account")); 69 list.add(actionListen.toCharacterEncoding(request.getParameter("account"))); 70 setListDataSend(list); 71 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 72 final String sql = "select users.*,user_Account.password from users,user_Account where users.account = user_Account.account and user_Account.account = ?;"; 73 int t = actionListen.selectData(sql); 74 setListDataReceive(actionListen); 75 actionListen.WriteMsg(ActionListen.ONE,t,request,response,listDataReceive); 76 }else if("save".equals(request.getParameter("Type"))){ // 保存
77 list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")), 78 actionListen.toCharacterEncoding(request.getParameter("account")), 79 actionListen.toCharacterEncoding(request.getParameter("account")), 80 actionListen.toCharacterEncoding(request.getParameter("passwords")), 81 actionListen.toCharacterEncoding(request.getParameter("userId")), 82 actionListen.toCharacterEncoding(request.getParameter("userName")), 83 actionListen.toCharacterEncoding(request.getParameter("account")), 84 actionListen.toCharacterEncoding(request.getParameter("phone")), 85 actionListen.toCharacterEncoding(request.getParameter("email")), 86 actionListen.toCharacterEncoding(request.getParameter("sex")))); 87 setListDataSend(list); 88 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 89 final String sql = "begin tran saves "+
90 "delete users where account=?;"+
91 "delete user_Account where account=?;"+
92 "insert into user_Account values(?,?);"+
93 "insert into users values(?,?,?,?,?,?);"+
94 "commit tran saves"; 95 actionListen.WriteMsg(ActionListen.ONE,actionListen.insertData(sql), request, response); 96 }else if("cancel".equals(request.getParameter("Type"))){ // 註銷
97 list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")), 98 actionListen.toCharacterEncoding(request.getParameter("account")))); 99 setListDataSend(list); 100 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 101 final String sql = "begin tran deletes "+
102 "delete users where account=?;"+
103 "delete user_Account where account=?;"+
104 "commit tran deletes"; 105 actionListen.WriteMsg(ActionListen.ONE,actionListen.deleteData(sql), request, response); 106 }else if("all".equals(request.getParameter("Type"))){ // 查看全部
107 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 108 final String sql = "select users.*,user_Account.password from users, user_Account where users.account = user_Account.account;"; 109 int t = actionListen.selectAllData(sql); 110 setListDataReceive(actionListen); 111 if(t == 1){ 112 // 拼接JSON數據
113 int index = 0; 114 String str = ""; 115 String str1 = ""; 116 String str2 = ""; 117 String str3 = "},"; 118 for(int i=0 ; i<listDataReceive.size() ; i++){ 119
120 if(index <= 6){ 121 for(int j=0 ; j<1 ; j++){ 122 str2 += "\"" + actionListen.flag[index] + "\"" + ":" + "\"" + listDataReceive.get(i) + "\"" +","; 123 } 124 if(index++ == 6){ 125 str1 = "{"; 126 index = 0; 127 str += (str1+str2+str3); 128 str2 = ""; 129 } 130 } 131 } 132 System.out.println(str); 133 String jsonp = request.getParameter("callback"); 134 PrintWriter out = response.getWriter(); 135 out.write(jsonp+"({\"is\":true" + "," + "\"data\"" + ":" + "[" + str + "]" + "})"); 136
137 } 138 } 139
140 } 141
142 /*
143 * 監聽類 144 */
145 private class ActionListen extends AccessData implements DataTransferReport<List<Object>>{ 146 //發送數據
147 private List<Object> listDataSend = null; 148 // 前臺標誌
149 private final String[] flag = new String[]{"userId","userName","account","phone","email","passwords","sex"}; 150 @SuppressWarnings("unused") 151 public List<Object> getListDataSend() { 152 return listDataSend; 153 } 154
155 public void setListDataSend(List<Object> listDataSend) { 156 this.listDataSend = listDataSend; 157 } 158
159 public ActionListen() { 160
161 } 162 public int selectAllData(String sql){ 163 List<Object> total = new ArrayList<Object>(); 164 List<Object> row = null; 165 try { 166 PreparedStatement preparedStatement = setPreparedStatement(sql); 167 resultSet = preparedStatement.executeQuery(); 168 while (resultSet.next()) { 169 if(row == null){ 170 row = new ArrayList<Object>(); 171 row.addAll(Arrays.asList(resultSet.getString("userId"), 172 resultSet.getString("userName"), 173 resultSet.getString("account"), 174 resultSet.getString("phone"), 175 resultSet.getString("email"), 176 resultSet.getString("password"), 177 resultSet.getString("sex"))); 178 total.addAll(row); 179 } 180 row = null; 181 } 182 setListDataSend(total); 183 //if(listDataSend != null){
184 return 1; 185 //}
186 } catch (SQLException e) { 187 // TODO Auto-generated catch block
188 e.printStackTrace(); 189 } 190 return 0; 191
192 } 193 /*
194 * 與前臺交互 195 */
196 public void WriteMsg(int msg, int t, HttpServletRequest request, 197 HttpServletResponse response,List<Object> list) { 198 String data = ""; 199 int index = 0; 200 try { 201 if(t == msg){ 202 String jsonp = request.getParameter("callback"); 203 PrintWriter out = response.getWriter(); 204 for(Object object : list){ 205 data += "," + "\"" + flag[index++] + "\"" + ":" + "\"" + (String)object + "\""; 206 } 207 System.out.println("DATA:"+data); 208 out.write(jsonp+"({\"is\":true" + data + "})"); 209 }else{ 210 String jsonp = request.getParameter("callback"); 211 PrintWriter out = response.getWriter(); 212 out.write(jsonp+"({\"is\":false,\"err\":"+"\"帳號或密碼錯誤!\""+"})"); 213 } 214 } catch (IOException e) { 215 // TODO Auto-generated catch block
216 e.printStackTrace(); 217 } 218 } 219 /*
220 * 查詢 221 * @see com.yuanwei.jdbc.AccessData#selectData(java.lang.String) 222 */
223 @Override 224 public int selectData(String sql) { 225 PreparedStatement preparedStatement = setPreparedStatement(sql); 226 try { 227 if(super.listDataReceive != null){ 228 int index = 1; 229 for(Object object : super.listDataReceive){ 230 preparedStatement.setString(index++, (String)object); 231 System.out.println((String)object); 232 } 233 resultSet = preparedStatement.executeQuery(); 234 while(resultSet.next()){ 235 List<Object> list = new ArrayList<Object>(); 236 list.addAll(Arrays.asList(resultSet.getString("userId"), 237 resultSet.getString("userName"), 238 resultSet.getString("account"), 239 resultSet.getString("phone"), 240 resultSet.getString("email"), 241 resultSet.getString("password"), 242 resultSet.getString("sex"))); 243 setListDataSend(list); 244 } 245 return returnONE(resultSet); 246 } 247
248 } catch (SQLException e) { 249 // TODO Auto-generated catch block
250 e.printStackTrace(); 251 }finally{ 252 close(); 253 } 254 return 0; 255
256 } 257
258 public List<Object> transfer() { 259 // TODO Auto-generated method stub
260 return this.listDataSend; 261 } 262
263 } 264
265 public List<Object> transfer() { 266 // TODO Auto-generated method stub
267 return this.listDataSend; 268 } 269
270 }
RegisterServlet.java(註冊)
1 package com.yuw.servlet; 2
3 import java.io.IOException; 4 import java.util.ArrayList; 5 import java.util.Arrays; 6 import java.util.List; 7
8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12
13 import com.yuw.jdbc.AccessData; 14 import com.yuw.servlet.example.SQLserverJDBC; 15 import com.yuw.transfer.DataTransfer; 16
17 /**
18 * 19 * @author Yuw 20 * @data 2017-12-20 21 * 22 */
23 public class RegisterServlet extends HttpServlet implements
24 DataTransfer<List<Object>> { 25
26 private static final long serialVersionUID = 1L; 27 // 數據傳送
28 private List<Object> listDataSend = null; 29
30 public List<Object> getListDataSend() { 31 return listDataSend; 32 } 33
34 public void setListDataSend(List<Object> listDataSend) { 35 this.listDataSend = listDataSend; 36 } 37
38 public void doGet(HttpServletRequest request, HttpServletResponse response) 39 throws ServletException, IOException { 40
41 doPost(request, response); 42 } 43
44 public void doPost(HttpServletRequest request, HttpServletResponse response) 45 throws ServletException, IOException { 46 ActionListen actionListen = new ActionListen(); 47 List<Object> list = new ArrayList<Object>(); 48 list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")), 49 actionListen.toCharacterEncoding(request.getParameter("passwords")), 50 actionListen.toCharacterEncoding(request.getParameter("userId")), 51 actionListen.toCharacterEncoding(request.getParameter("userName")), 52 actionListen.toCharacterEncoding(request.getParameter("account")), 53 actionListen.toCharacterEncoding(request.getParameter("phone")), 54 actionListen.toCharacterEncoding(request.getParameter("email")), 55 actionListen.toCharacterEncoding(request.getParameter("sex")))); 56 setListDataSend(list); 57 // 發起數據庫鏈接
58 actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this); 59 final String sql = "begin tran inserta "+
60 "insert into user_Account values(?,?);"+
61 "insert into users values(?,?,?,?,?,?);"+
62 "commit tran inserta"; 63 // 與前臺交互
64 actionListen.WriteMsg(ActionListen.ONE,actionListen.insertData(sql), request, response); 65 } 66
67 private class ActionListen extends AccessData { 68
69 public ActionListen() { 70
71 } 72
73 } 74
75 public List<Object> transfer() { 76 // TODO Auto-generated method stub
77 return this.listDataSend; 78 } 79
80 }
JDBCDataBase.java(鏈接數據庫的接口)
1 package com.yuw.servlet.example; 2
3 import java.sql.Connection; 4 /**
5 * 6 * @author Yuw 7 * @data 2017-12-20 8 * 數據庫鏈接 9 */
10 public interface JDBCDataBase{ 11
12 Connection example(); 13 }
SQLserverJDBC.java(具體實現類)
1 package com.yuw.servlet.example; 2
3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 /** 6 * 7 * @author Yuw 8 * @data 2017-12-20 9 */
10 public class SQLserverJDBC implements JDBCDataBase{ 11 private static final String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 12 private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=TestDB"; 13 private static final String UserName = "sa"; 14 private static final String UserCipher = "123456c"; 15 /* 16 * 單例模式:整個應用只實例化JDBC一個 17 */
18 private SQLserverJDBC() { 19
20 } 21 private static class LazyHolder { 22 private static final SQLserverJDBC sqlserverJDBC = new SQLserverJDBC(); 23 } 24
25 public static final SQLserverJDBC getInstance() { 26 return LazyHolder.sqlserverJDBC; 27 } 28 public Connection example() { 29 Connection dataBase = null; 30 try{ 31 Class.forName(DriverName); 32 dataBase = DriverManager.getConnection(URL, UserName, UserCipher); 33 } catch (Exception e ){ 34 // TODO Auto-generated catch block
35 System.out.println("鏈接失敗"); 36 e.printStackTrace(); 37 } 38 return dataBase; 39 } 40
41 }
DataTransfer.java(servlet向數據層發送數據的中間價)
1 package com.yuw.transfer; 2
3 public interface DataTransfer<T>{ 4 /*
5 * 數據集通信 6 */
7 T transfer(); 8 }
DataTransferReport.java(數據層向servlet發送數據的中間價)
1 package com.yuw.transfer; 2
3 /*
4 * 回送 5 */
6 public interface DataTransferReport<T>
7 { 8
9 /*
10 * 數據集通信 11 */
12 T transfer(); 13 }