基本原理:
前端页面只能通过和tomcat进行交互,然后tomcat在和后端的servlet进行交互,然后servlet可以对数据库进行操作,但是这样操作会让servlet过于繁琐,就让servlet与后端Java文件进行交互,java文件再操作数据库。这里需要注意servlet线程不安全,属于单例模式,所以不可以使用全局变量
后端servlet代码
```package qcby.web.db;
import java.io.IOException;
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 QcbyLearn
*/
@WebServlet("/QcbyLearn")
public class QcbyLearn extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QcbyLearn() {
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 {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
String sql ="select * from tablet1";
String[] col = {"id","usename"};
String json = MysqlUtil.getJsonBySql(sql,col);
response.getWriter().append(json);
}
}
代码很简单就是简单的doget还有dopost,这里可以用阿贾克斯算法
前端代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>前后端交互</title>
</head>
<script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js">
</script>
<body>
<div id="divfordata" style="width:80%;">
</div>
<div id="pageDivqcby" ></div>
</body>
<script type="text/javascript">
getData();
function getData(){
$.ajax({
type: "post",
url: "/WebLearn1117/QcbyLearn",
data: {},
cache: false,
async : false,
// dataType: "JSON",
success: function (data ,textStatus, jqXHR)
{
for(var i = 0; i < data.data.length; i++){
console.info(data.data[i][0] + "|" + data.data[i][1]);
}
},
error:function (XMLHttpRequest, textStatus, errorThrown) {
alert(typeof(errorThrown));
}
});
}
</script>
</html>
后端java代码连接数据库
package qcby.web.db;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnection {
String driver = "com.mysql.jdbc.Driver";
// String url= "jdbc:mysql://127.0.0.1:3306/qcby0908?useUnicode=true&characterEncoding=utf-8";
String url= "jdbc:mysql://127.0.0.1:3306/zcnb?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "204752";
public Connection conn;
public DBConnection() {
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
if(!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
} catch (Exception e) {
e.printStackTrace();
}
}
public void close() {
try {
this.conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这种简单的前后端交互,可以做文档在线编辑,或者是做一个登录注册界面。可以仿照上面代码试一试。