弄了一晚上终于弄清楚了Extjs和数据库的交互方法,写下作为备忘,其实Extjs和数据库的交互主要有两种方法一种是通过ajax,另外一种是表单方式进行交互,我采用的是ajax方式。
一.前台主要代码
ajax请求:
//数据库连接及处理
Ext.Ajax.request({
url: "login.action", //登录处理页面
method:'post',
params:{ ParamUserName: userName, ParamPassword: Password},//传过去的参数,其中userName和Password为控件名
success: function(response, option) {
var obj = Ext.util.JSON.decode(response.responseText); //decode将json字符串转换成对象;(对应的是encode将对象转换成json字符串)
if (obj.success == true) {
window.location.href = 'index.jsp';
}
else {
Ext.Msg.alert("登录失败", "用户名或密码错误!");
}
},
failure: function() {
Ext.Msg.alert("登录失败", "登录失败!");
}
});
}
}
2.servlet的处理,主要为Post方式
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String actionUrl=request.getServletPath();
if(actionUrl.equals("/login.action")){
String username=request.getParameter("ParamUserName");
String password=request.getParameter("ParamPassword");
try {
DaoBean ud=new DaoBean();
try {
if(ud.getUser(username, password).next()){
//用户名和密码真确,则进行数据返回
response.setContentType("text/json;utf-8");
response.getWriter().write("{success:true}");//返回成功标示
}else{
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
3.DaoBean数据库连接的类方法
public class DaoBean {
java.sql.Connection conn=null;
java.sql.Statement statement=null;
ResultSet rs=null;
//用于连接数据库
public DaoBean() throws ClassNotFoundException {
String driver = "com.mysql.jdbc.Driver"; // 驱动程序名
String url = "jdbc:mysql://localhost/extjsproject"; // URL指向要访问的数据库名
String user = "root"; // MySQL配置时的用户名
String password = "123456"; // MySQL配置时的密码
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
statement = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public ResultSet getUser(String username,String password) throws SQLException{
String sqllogin="select * from LoginUser where UserName='"+username+"' and Pwd='"+password+"'";
rs=statement.executeQuery(sqllogin);
return rs;
}