用ajax发异步请求时,要注意url。“AppServer”为后台项目名,“LoginServlet.action”为web.xml中的<url-pattern></url-pattern>标签中的内容。

前台代码如下(核心代码):

index.html:

             $(function() {
$('#login').click(function() {
var account = $("#account").val();
var passwords = $('#passwords').val();
$.ajax({
url: "http://localhost:8080/AppServer/LoginServlet.action?ajaxType=jsonp",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
data: {
account: account,
passwords: passwords,
},
success: function(server) {
if (server.is) {
alert("登录成功");
$(location).attr('href', 'main.html?account=' + account);
} else {
alert("登录失败:" + server.err);
}
},
error: function(server) {
alert("连接服务器失败");
},
});
});
$('#register').click(function() {
$(location).attr('href', 'register.html');
});
})

register.html:

             $(function() {
$('#register').click(function() {
var islen = ($('#password1').val().length >= 6 && $('#password1').val().length <= 12) && ($('#password2').val().length >= 6 && $('#password2').val().length <= 12);
var isID = $('#user_id').val().length > 0 && $('#user_id').val().length <= 18;
if (islen && isID) {
if ($('#password1').val() == $('#password2').val()) {
$.ajax({
type: "post",
url: "http://localhost:8080/AppServer/RegisterServlet.action?ajaxType=jsonp",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
data: {
account: $('#account').val(),
passwords: $('#password1').val(),
phone: $('#phone').val(),
email: $('#email').val(),
userId: $('#user_id').val(),
userName: $('#user_name').val(),
sex: $('input:radio:checked').val(),
},
success: function(server) {
if (server.is) {
alert("注册成功");
$(location).attr('href', 'index.html');
} else {
alert("注册失败");
}
},
error: function(server) {
alert("连接服务器失败");
},
});
} else {
alert('密码不一致!');
}
} else {
if (!isID) {
alert('请输入正确的身份证!');
} else if (!islen) {
alert('密码长度不一致');
} else {
alert('请输入合法的信息!');
}
}
});
})

main.html:

             $(function() {
var loc = location.href;
var n1 = loc.length; //地址的总长度
var n2 = loc.indexOf("="); //取得=号的位置
var accounts = decodeURI(loc.substr(n2 + 1, n1 - n2));
$('#select').click(function() {
$('#div2').show(1500);
$('#div3').hide(1500);
$.ajax({
url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=select",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
data: {
account: accounts,
},
success: function(server) {
if (server.is) {
$('#account').val(server.account);
$('#phone').val(server.phone);
$('#email').val(server.email);
$('#ids').val(server.userId);
$('#name').val(server.userName);
$('#password').val(server.passwords);
$('#sex').val(server.sex);
} else {
alert("查看失败!");
}
},
error: function(server) {
alert("连接服务器失败!");
},
});
});
$('#save').click(function() {
var islen = $('#password').val().length >= 6 && $('#password').val().length <= 12;
var isID = $('#ids').val().length > 0 && $('#ids').val().length <= 18;
if (islen && isID) {
$.ajax({
async: true,
type: "post",
url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=save",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
data: {
account: $('#account').val(),
passwords: $('#password').val(),
phone: $('#phone').val(),
email: $('#email').val(),
userId: $('#ids').val(),
userName: $('#name').val(),
sex: $('#sex').val(),
},
success: function(server) {
if (server.is) {
alert("修改成功!");
$('#div2').hide(1500);
} else {
alert("修改失败!");
}
},
error: function(server) {
alert("连接服务器失败!");
},
});
} else {
if (!isID) {
alert('请输入正确的身份证!');
} else if (!islen) {
alert('密码长度不一致');
} else {
alert('请输入合法的信息!');
}
}
});
$('#cancel').click(function() {
$.ajax({
url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=cancel",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
data: {
account: accounts,
},
success: function(server) {
if (server.is) {
alert("注销成功!");
$(location).attr('href', 'index.html');
} else {
alert("注销失败!");
}
},
error: function(server) {
alert("连接服务器失败!");
},
});
});
$('#all').click(function() {
$('#div3').show(1500);
$('#div2').hide(1500);
$.ajax({
url: "http://localhost:8080/AppServer/MainServlet.action?ajaxType=jsonp&Type=all",
dataType: "jsonp",
jsonpCallback: "jsonpCallback",
jsonp: "callback",
success: function(server) {
if (server.is) {
alert("查看成功!");
var arrData = [];
var arr = null;
for (i = 0; i < server.data.length; i++) {
if (arr == null) {
arr = new Array;
}
arr.push(server.data[i].userId);
arr.push(server.data[i].userName);
arr.push(server.data[i].account);
arr.push(server.data[i].phone);
arr.push(server.data[i].email);
arr.push(server.data[i].passwords);
arr.push(server.data[i].sex);
arrData.push(arr);
arr = null;
}
var td = "";
var table = "";
if(arrData != null){
for(var i=0 ; i<arrData.length ; i++){
var tr = "<tr>";
for(var j=0 ; j<arrData[i].length; j++){
td += '<td>' + arrData[i][j] + '</td>';
}
var tr2 = "</tr>";
table += (tr + td + tr2);
td = "";
}
$('#bodys').html(table);
}
} else {
alert("查看失败!");
}
},
error: function(server) {
alert("连接服务器失败!");
},
});
});
})

web.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name></display-name>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.yuw.servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.yuw.servlet.RegisterServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>MainServlet</servlet-name>
<servlet-class>com.yuw.servlet.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet.action</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/RegisterServlet.action</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/MainServlet.action</url-pattern>
</servlet-mapping>
</web-app>

 后台代码:

项目结构:

AccessData.java(与数据库交互)

 package com.yuw.jdbc;

 import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.yuw.servlet.example.JDBCDataBase;
import com.yuw.transfer.DataTransfer; /**
*
* @author Yuw
* @data 2017-12-20
*/
public abstract class AccessData {
public static final int ONE = 1;
protected Connection connection = null;
protected PreparedStatement preparedStatement = null;
protected ResultSet resultSet = null;
// 接收数据
protected List<Object> listDataReceive = null;
public AccessData() { }
/*
* @dataBase 数据库连接
* @dataTransfer 获得每次连接的数据信息
*/
public void connectionJDBC(JDBCDataBase dataBase,DataTransfer<List<Object>> dataTransfer) {
if(this.connection == null){
this.connection = dataBase.example();
this.listDataReceive = dataTransfer.transfer();
}
}
/*
* 删除
*/
public int deleteData(String sql){
int msg = 0;
try {
if(listDataReceive != null){
preparedStatement = connection.prepareStatement(sql);
int index = 1;
for(Object object : listDataReceive){
preparedStatement.setString(index++, (String)object);
}
msg = preparedStatement.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}
return msg;
}
/*
* 插入
*/
public int insertData(String sql){
int msg = 0;
try {
if(listDataReceive != null){
preparedStatement = connection.prepareStatement(sql);
int index = 1;
for(Object object : listDataReceive){
preparedStatement.setString(index++, (String)object);
}
msg = preparedStatement.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}
return msg; }
/*
* 查询
*/
public int selectData(String sql){
PreparedStatement preparedStatement = setPreparedStatement(sql);
try {
if(listDataReceive != null){
int index = 1;
for(Object object : listDataReceive){
preparedStatement.setString(index++, (String)object);
System.out.println((String)object);
}
resultSet = preparedStatement.executeQuery();
return returnONE(resultSet);
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}
return 0; }
/*
* 判断结果集是否只有一行
*/
public int returnONE(ResultSet resultSet){
try {
resultSet.last();
if(resultSet.getRow() == ONE){
return ONE;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0; } public PreparedStatement setPreparedStatement(String sql){
try {
if(this.preparedStatement == null){
this.preparedStatement = connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return preparedStatement; }
/*
* 处理乱码
*/
public String toCharacterEncoding(String str) throws UnsupportedEncodingException{
if(str == null){
System.out.println("请传参");
}
return new String(str.getBytes("iso-8859-1"),"utf-8"); }
/*
* 关闭连接
*/
public void close(){
if(preparedStatement != null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 与前台交互
*/
public void WriteMsg(int msg,int t,HttpServletRequest request,HttpServletResponse response){
try {
if(t == msg){
String jsonp = request.getParameter("callback");
PrintWriter out = response.getWriter();
out.write(jsonp+"({\"is\":true})");
}else{
String jsonp = request.getParameter("callback");
PrintWriter out = response.getWriter();
out.write(jsonp+"({\"is\":false,\"err\":"+"\"账号或密码错误!\""+"})");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

 LoginServlet.java(登录)

 package com.yuw.servlet;

 import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.yuw.jdbc.AccessData;
import com.yuw.servlet.example.SQLserverJDBC;
import com.yuw.transfer.DataTransfer; /**
* @author Yuw
* @data 2017-12-20
*
*/
public class LoginServlet extends HttpServlet implements
DataTransfer<List<Object>> { private static final long serialVersionUID = 1L;
// 数据传送
private List<Object> listDataSend = null; public List<Object> getListDataSend() {
return listDataSend;
} public void setListDataSend(List<Object> listDataSend) {
this.listDataSend = listDataSend;
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain; charset=utf-8"); ActionListen actionListen = new ActionListen();
List<Object> list = new ArrayList<Object>();
list.addAll(Arrays.asList(
actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("passwords"))));
setListDataSend(list);
// 发起数据库连接
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "select * from user_Account where account = ? and password = ?";
// 与前台交互
actionListen.WriteMsg(ActionListen.ONE,actionListen.selectData(sql), request, response); }
/*
* 监听类
*/
private class ActionListen extends AccessData { public ActionListen() { } } public List<Object> transfer() {
// TODO Auto-generated method stub
return this.listDataSend;
} }

MainServlet.java(主要功能)

 package com.yuw.servlet;

 import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.junit.Test; import com.yuw.jdbc.AccessData;
import com.yuw.servlet.example.SQLserverJDBC;
import com.yuw.transfer.DataTransfer;
import com.yuw.transfer.DataTransferReport;
/**
* @author Yuw
* @data 2017-12-21
*
*/
public class MainServlet extends HttpServlet implements DataTransfer<List<Object>>{ private static final long serialVersionUID = 1L;
//数据传送
private List<Object> listDataSend = null;
//数据接收
private List<Object> listDataReceive = null; public MainServlet(){ } public List<Object> getListDataReceive() {
return listDataReceive;
} public void setListDataReceive(DataTransferReport<List<Object>> dataTransferReport) {
this.listDataReceive = dataTransferReport.transfer();
} public List<Object> getListDataSend() {
return listDataSend;
} public void setListDataSend(List<Object> listDataSend) {
this.listDataSend = listDataSend;
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain; charset=utf-8");
ActionListen actionListen = new ActionListen();
List<Object> list = new ArrayList<Object>();
// 查看个人信息
if("select".equals(request.getParameter("Type"))){
System.out.println(request.getParameter("account"));
list.add(actionListen.toCharacterEncoding(request.getParameter("account")));
setListDataSend(list);
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "select users.*,user_Account.password from users,user_Account where users.account = user_Account.account and user_Account.account = ?;";
int t = actionListen.selectData(sql);
setListDataReceive(actionListen);
actionListen.WriteMsg(ActionListen.ONE,t,request,response,listDataReceive);
}else if("save".equals(request.getParameter("Type"))){ // 保存
list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("passwords")),
actionListen.toCharacterEncoding(request.getParameter("userId")),
actionListen.toCharacterEncoding(request.getParameter("userName")),
actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("phone")),
actionListen.toCharacterEncoding(request.getParameter("email")),
actionListen.toCharacterEncoding(request.getParameter("sex"))));
setListDataSend(list);
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "begin tran saves "+
"delete users where account=?;"+
"delete user_Account where account=?;"+
"insert into user_Account values(?,?);"+
"insert into users values(?,?,?,?,?,?);"+
"commit tran saves";
actionListen.WriteMsg(ActionListen.ONE,actionListen.insertData(sql), request, response);
}else if("cancel".equals(request.getParameter("Type"))){ // 注销
list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("account"))));
setListDataSend(list);
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "begin tran deletes "+
"delete users where account=?;"+
"delete user_Account where account=?;"+
"commit tran deletes";
actionListen.WriteMsg(ActionListen.ONE,actionListen.deleteData(sql), request, response);
}else if("all".equals(request.getParameter("Type"))){ // 查看所有
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "select users.*,user_Account.password from users, user_Account where users.account = user_Account.account;";
int t = actionListen.selectAllData(sql);
setListDataReceive(actionListen);
if(t == 1){
// 拼接JSON数据
int index = 0;
String str = "";
String str1 = "";
String str2 = "";
String str3 = "},";
for(int i=0 ; i<listDataReceive.size() ; i++){ if(index <= 6){
for(int j=0 ; j<1 ; j++){
str2 += "\"" + actionListen.flag[index] + "\"" + ":" + "\"" + listDataReceive.get(i) + "\"" +",";
}
if(index++ == 6){
str1 = "{";
index = 0;
str += (str1+str2+str3);
str2 = "";
}
}
}
System.out.println(str);
String jsonp = request.getParameter("callback");
PrintWriter out = response.getWriter();
out.write(jsonp+"({\"is\":true" + "," + "\"data\"" + ":" + "[" + str + "]" + "})"); }
} } /*
* 监听类
*/
private class ActionListen extends AccessData implements DataTransferReport<List<Object>>{
//发送数据
private List<Object> listDataSend = null;
// 前台标志
private final String[] flag = new String[]{"userId","userName","account","phone","email","passwords","sex"};
@SuppressWarnings("unused")
public List<Object> getListDataSend() {
return listDataSend;
} public void setListDataSend(List<Object> listDataSend) {
this.listDataSend = listDataSend;
} public ActionListen() { }
public int selectAllData(String sql){
List<Object> total = new ArrayList<Object>();
List<Object> row = null;
try {
PreparedStatement preparedStatement = setPreparedStatement(sql);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
if(row == null){
row = new ArrayList<Object>();
row.addAll(Arrays.asList(resultSet.getString("userId"),
resultSet.getString("userName"),
resultSet.getString("account"),
resultSet.getString("phone"),
resultSet.getString("email"),
resultSet.getString("password"),
resultSet.getString("sex")));
total.addAll(row);
}
row = null;
}
setListDataSend(total);
//if(listDataSend != null){
return 1;
//}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0; }
/*
* 与前台交互
*/
public void WriteMsg(int msg, int t, HttpServletRequest request,
HttpServletResponse response,List<Object> list) {
String data = "";
int index = 0;
try {
if(t == msg){
String jsonp = request.getParameter("callback");
PrintWriter out = response.getWriter();
for(Object object : list){
data += "," + "\"" + flag[index++] + "\"" + ":" + "\"" + (String)object + "\"";
}
System.out.println("DATA:"+data);
out.write(jsonp+"({\"is\":true" + data + "})");
}else{
String jsonp = request.getParameter("callback");
PrintWriter out = response.getWriter();
out.write(jsonp+"({\"is\":false,\"err\":"+"\"账号或密码错误!\""+"})");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 查询
* @see com.yuanwei.jdbc.AccessData#selectData(java.lang.String)
*/
@Override
public int selectData(String sql) {
PreparedStatement preparedStatement = setPreparedStatement(sql);
try {
if(super.listDataReceive != null){
int index = 1;
for(Object object : super.listDataReceive){
preparedStatement.setString(index++, (String)object);
System.out.println((String)object);
}
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
List<Object> list = new ArrayList<Object>();
list.addAll(Arrays.asList(resultSet.getString("userId"),
resultSet.getString("userName"),
resultSet.getString("account"),
resultSet.getString("phone"),
resultSet.getString("email"),
resultSet.getString("password"),
resultSet.getString("sex")));
setListDataSend(list);
}
return returnONE(resultSet);
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}
return 0; } public List<Object> transfer() {
// TODO Auto-generated method stub
return this.listDataSend;
} } public List<Object> transfer() {
// TODO Auto-generated method stub
return this.listDataSend;
} }

RegisterServlet.java(注册)

 package com.yuw.servlet;

 import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.yuw.jdbc.AccessData;
import com.yuw.servlet.example.SQLserverJDBC;
import com.yuw.transfer.DataTransfer; /**
*
* @author Yuw
* @data 2017-12-20
*
*/
public class RegisterServlet extends HttpServlet implements
DataTransfer<List<Object>> { private static final long serialVersionUID = 1L;
// 数据传送
private List<Object> listDataSend = null; public List<Object> getListDataSend() {
return listDataSend;
} public void setListDataSend(List<Object> listDataSend) {
this.listDataSend = listDataSend;
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ActionListen actionListen = new ActionListen();
List<Object> list = new ArrayList<Object>();
list.addAll(Arrays.asList(actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("passwords")),
actionListen.toCharacterEncoding(request.getParameter("userId")),
actionListen.toCharacterEncoding(request.getParameter("userName")),
actionListen.toCharacterEncoding(request.getParameter("account")),
actionListen.toCharacterEncoding(request.getParameter("phone")),
actionListen.toCharacterEncoding(request.getParameter("email")),
actionListen.toCharacterEncoding(request.getParameter("sex"))));
setListDataSend(list);
// 发起数据库连接
actionListen.connectionJDBC(SQLserverJDBC.getInstance(), this);
final String sql = "begin tran inserta "+
"insert into user_Account values(?,?);"+
"insert into users values(?,?,?,?,?,?);"+
"commit tran inserta";
// 与前台交互
actionListen.WriteMsg(ActionListen.ONE,actionListen.insertData(sql), request, response);
} private class ActionListen extends AccessData { public ActionListen() { } } public List<Object> transfer() {
// TODO Auto-generated method stub
return this.listDataSend;
} }

 JDBCDataBase.java(连接数据库的接口)

 package com.yuw.servlet.example;

 import java.sql.Connection;
/**
*
* @author Yuw
* @data 2017-12-20
* 数据库连接
*/
public interface JDBCDataBase{ Connection example();
}

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向数据层发送数据的中间价)

 package com.yuw.transfer;

 public interface DataTransfer<T>{
/*
* 数据集通讯
*/
T transfer();
}

DataTransferReport.java数据层向servlet发送数据的中间价)

 package com.yuw.transfer;

 /*
* 回送
*/
public interface DataTransferReport<T>
{ /*
* 数据集通讯
*/
T transfer();
}

移动App,AJAX异步请求,实现简单的增、删、改、查的更多相关文章

  1. Android SQLite(1)简单示例-增,删,改,查

    1.主要核心类,Sqlite编程要继承SQLiteOpenHelper import android.content.Context; import android.database.sqlite.S ...

  2. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  3. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  4. Ajax与ashx异步请求的简单案例

    Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  5. asp.net——Ajax与ashx异步请求的简单案例

    Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  6. Ajax异步请求-简单模版

    <script type="text/javascript"> window.onload = function () { document.getElementByI ...

  7. spring HandlerInterceptorAdapter拦截ajax异步请求,报错ERR_INCOMPLETE_CHUNKED_ENCODING

    话不多说,直接上正文. 异常信息: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题描述: 该异常是在页面发送ajax请 ...

  8. ajax异步请求Response.Redirect重定向

    一个ajax异步请求报错->捕获异常->重定向错误提示页面.  一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...

  9. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

随机推荐

  1. bzoj 2002 HNOI 2010 弹飞绵羊

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...

  2. bzoj 1179: [Apio2009]Atm

    Description Input 第 一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路 的起点和终点的 ...

  3. 设计模式之 - 策略模式(Strategy Pattern)

    引入:项目中涉及到工作流,当然这个工作流的实现是由用户根据不同的策略或者说方式传入处理这个事件的人的审批链,后台在存储过程中进行解析,然后生成最终的审批链,在系统中流转进行审批. 比如审批链: 张三 ...

  4. Kettle中忽略错误行继续执行

    在kettle执行的过程中,如果遇到错误,kettle会停止运行.在某些时候,并不希望kettle停止运行,所以就要处理下这些错误行. 例如这两天发现在一个转换中,总数出现一些不规则数据,这些数据一出 ...

  5. TCP/IP协议栈(三)——linux 向下的报文处理

    应用程序连接服务器时,目的地套接字地址(端口号和IP地址)以参数形式传递给系统调用connect(tcp_v4_connect()).下面逐步介绍初始化该连接 检查内核路由表,查找给定目的地IP地址路 ...

  6. 基于Vue+node.js的个人博客

    前言 作为一个年轻的程序员,而且是作为一个未来的前端工程师,怎么能没有一个属于自己的博客呢,于是乎在暑假咸鱼了一个多月后开始了我的博客的编写. 技术栈 前端 vue.js+scss  因为当时没学vu ...

  7. C#设计模式之一单例模式(Singleton Pattern)【创建型】

    一.引言     看了李建忠老师的讲的设计模式已经有一段时间了(这段时间大概有一年多了),自己还没有写过自己的.有关设计模式的文章.这次想写一些关于设计模式的文章,用自己的理解和代码来写,算是复习一遍 ...

  8. Jenkins:VMware虚拟机Linux系统的详细安装和使用教程

    jenkins:VMware虚拟机Linux系统的详细安装和使用教程 (一) 不是windows安装虚拟机可跳过 1.Windows安装VMware 2.VMware安装linux系统 3.windo ...

  9. 利用pip批量更新python库

    如果python库比较旧,需要更新到最新版本,可以利用pip工具. DOS命令行下,输入pip -V查看pip版本,可以先把pip更新到新版本. 查看系统里过期的python库 pip list #列 ...

  10. visual studio相关操作

    1.同一个解决方案下的两个项目之间怎么相互调用 在项目的“引用”上右键,添加引用,选你要引用的项目.然后在代码里就能调用引用项目里的某个类的方法了. 2.如果一个项目类型为”类库“的项目要运行,会报如 ...