环境:extjs+ibatis+java
问题是这样的:
前台用extjs,后台用ibatis获取到数据库的数据,怎么把前台用extjs做的表单展示后台查出来的数据?
希望大牛多多赐教,不甚感激附上代码:
InterfaceDAO.java
package com.ibatis;
import java.util.*;
public interface InterfaceDAO {
public List<Student> queryAllStudent();
}
Student.java
package com.ibatis;
public class Student {
private float forcast_load;
public float getForcast_load() {
return forcast_load;
}
public void setForcast_load(float forcast_load) {
this.forcast_load = forcast_load;
}
@Override
public String toString() {
String content="Forcast_load: "+forcast_load;
return content;
}
}
StudentDAOImpl.java
package com.ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ibatis.sqlmap.client.SqlMapClient;
public class StudentDAOImpl implements InterfaceDAO {
private static SqlMapClient sqlMapClient=null;
static{
try {
Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("com/ibatis/SqlMapConfig.xml");
sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List<Student> queryAllStudent() {
List<Student> studentlist=null;
try {
studentlist=sqlMapClient.queryForList("selectallstudent");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return studentlist;
}
public static void main(String[] args) {
Map<String, Object> result = new HashMap<String, Object>();
InterfaceDAO dao=new StudentDAOImpl();
result.put("msg", "aaa");
for(Student student:dao.queryAllStudent()){
System.out.println(student.toString());
} }
}index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>03.grid</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function(){ var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
sm,
{header:'编号',dataIndex:'forcast_load'}
]);
//下面的这些数据是我静态展示的,想他获取到后台的数据动态展示出来
var data = [
['1'],
['2'],
['3']
]; var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'forcast_load'}
]) });
store.load(); var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
cm: cm,
sm: sm
});});
</script>
</head>
<body>
<div id="grid"></div>
</body>
</html>
extjs数据库ibatisjava
问题是这样的:
前台用extjs,后台用ibatis获取到数据库的数据,怎么把前台用extjs做的表单展示后台查出来的数据?
希望大牛多多赐教,不甚感激附上代码:
InterfaceDAO.java
package com.ibatis;
import java.util.*;
public interface InterfaceDAO {
public List<Student> queryAllStudent();
}
Student.java
package com.ibatis;
public class Student {
private float forcast_load;
public float getForcast_load() {
return forcast_load;
}
public void setForcast_load(float forcast_load) {
this.forcast_load = forcast_load;
}
@Override
public String toString() {
String content="Forcast_load: "+forcast_load;
return content;
}
}
StudentDAOImpl.java
package com.ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ibatis.sqlmap.client.SqlMapClient;
public class StudentDAOImpl implements InterfaceDAO {
private static SqlMapClient sqlMapClient=null;
static{
try {
Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("com/ibatis/SqlMapConfig.xml");
sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List<Student> queryAllStudent() {
List<Student> studentlist=null;
try {
studentlist=sqlMapClient.queryForList("selectallstudent");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return studentlist;
}
public static void main(String[] args) {
Map<String, Object> result = new HashMap<String, Object>();
InterfaceDAO dao=new StudentDAOImpl();
result.put("msg", "aaa");
for(Student student:dao.queryAllStudent()){
System.out.println(student.toString());
} }
}index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>03.grid</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function(){ var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
sm,
{header:'编号',dataIndex:'forcast_load'}
]);
//下面的这些数据是我静态展示的,想他获取到后台的数据动态展示出来
var data = [
['1'],
['2'],
['3']
]; var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'forcast_load'}
]) });
store.load(); var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
cm: cm,
sm: sm
});});
</script>
</head>
<body>
<div id="grid"></div>
</body>
</html>
extjs数据库ibatisjava
Student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap>
<!-- 把路径简化,也称别名 -->
<typeAlias alias="Student" type="com.ibatis.Student"/>
<!-- 开始查询 resultClass的是上面的别名,方便填写-->
<select id="selectallstudent" resultClass="Student">
select forcast_load
from LUEBA_BLOBAL_LOAD
where appraise_load = '5.00'
</select>
</sqlMap>
proxy: {},
reader: new Ext.data.ArrayReader({}, [
{name: 'forcast_load'}
])
});
你的数据是store中的proxy从后台拿到的,现在要知道你是用什么去访问后台的,url是什么,同样你还要在后台作相应的一些处理。
var gridStore = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: ''//请求的url
}),
reader: new Ext.data.JsonReader({
root: 'data',
totalProperty: 'totalCount',
idProperty: 'id'
},[
{name: 'display1',mapping: 'pro1'},
{name: 'display2',mapping: 'pro2'},
...... ]),
autoLoad: true
});可以参考ext包下的实例
List<beanentity> list= beanservice.querydate(args);
request.setAttribute("list", list);
前台:
<logic:iterate id="item" name="siRtForm" property="list">
下面是我主要代码的路径:
public ActionForward queryAllStudent(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
{
List<Student> studentlist=null;
try {
studentlist=sqlMapClient.queryForList("selectallstudent");
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return mapping.findForward("studentlist");
}
request.getSession().setAttribute(“studentlist",studentlist)
1)后台往前台js传数据的依靠的是ajax方式,就使用javascript中的XMLHttpRequest内置对象,访问位于服务器上的Servlet/JSP。(当然使用Struts2会有点区别,是被filter拦截了,转发给action对象了)
2)extjs是一个js库,它将XMLHttpRequest访问服务器的逻辑封装了起来,你只要url参数里面填入地址,然后在回调函数处填写返回数据的处理逻辑就可以了。
3)从服务的Servlet/JSP中向ExtJS中传递数据,一般是使用JSON格式。
4)将要传递的java数据对象转化为JSON格式,然后使用Servlet/JSP传递给ExtJS。
上面的几条弄明白了,也就应该能做出来了。