先学习了extjs框架,体会到了extjs复杂的代码,令人费解的语法,真不是盖得!在接触smartclient,个人觉得比较简单,从语法上来说也比较简单,至少容易理解。咬咬牙竟然可以做出一个小demo。 哈哈。
js 代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="isomorphic" prefix="isomorphic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<isomorphic:loadISC skin="Enterprise"/>
</head>
<body>
<script type="text/javascript">
isc.DataSource.create({
ID:"countryDS",
dataFormat:"xml", //数据格式 xml格式
recordXPath:"//country", //<country></country>
fields:[
{name:"countryCode", title:"Code", primaryKey:true},
{name:"countryName", title:"Country"},
{name:"capital", title:"Capital"},
{name:"continent",title:"continent"}
],
operationBindings:[
{operationType:"fetch",
dataURL:"country/findInfo.action"
},
{operationType:"add",
dataURL:"country/insertInfo.action"
},
{operationType:"update",
dataURL:"country/updateInfo.action"
},
{operationType:"remove",
dataURL:"country/deleteInfo.action"
}
]
});
isc.ListGrid.create({
ID: "countryList",
width:500, height:224, alternateRecordStyles:true,
left:20,
dataSource: countryDS,
canEdit:true,
fields:[
{name:"countryCode"},
{name:"countryName"},
{name:"capital"},
{name:"continent"}
],
sortFieldNum: 0,
dataPageSize: 50,
autoFetchData:true
})
isc.IButton.create({
ID:"testbutton",
click:"countryList.startEditingNew()",
title:" Add information",
left:20,top:240,width:150
})
isc.IButton.create({
left:350, top:240, width:150,
title:"Remove country (UK)",
click: function () {
if (countryList.getSelectedRecord()) { //判断是否选中了grid行记录
countryList.removeData(countryList.getSelectedRecord())
}else{
isc.say('請選擇要刪除的記錄')
}
}
});
</script>
</body>
</html>
package isc.java.Module;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="country")
public class country {
private String code;
private String countryname;
private String capital;
private String continent;
@Id
@Column(name="code")
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Column(name="countryname")
public String getCountryname() {
return countryname;
}
public void setCountryname(String countryname) {
this.countryname = countryname;
}
@Column(name="capital")
public String getCapital() {
return capital;
}
public void setCapital(String capital) {
this.capital = capital;
}
@Column(name="continent")
public String getContinent() {
return continent;
}
public void setContinent(String continent) {
this.continent = continent;
}
}
package isc.java.Dao;
import isc.java.Module.country;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class CountryDao {
private HibernateTemplate hibernateTemplate;
@SuppressWarnings("unused")
@Autowired
private void setHibernateTemplate (SessionFactory sessionFactory){
this.hibernateTemplate =new HibernateTemplate(sessionFactory);
}
@SuppressWarnings("unchecked")
public List<country> findInfo(){
String hql="from country";
return this.hibernateTemplate.find(hql);
}
public void updateInfo(country country){
this.hibernateTemplate.update(country);
}
//根據code返回code對應的信息
public country findByCode(String code){
return this.hibernateTemplate.get(country.class, code);
}
public boolean delete (country countrys){
try{
this.hibernateTemplate.delete(countrys);
return true;
}catch(Exception e){
System.out.println("丫操作失敗!看來是人品問題,。");
//e.printStackTrace();
return false;
}
}
public void insert(country countrys){
this.hibernateTemplate.save(countrys);
}
}
package isc.java.Service;
import isc.java.Dao.CountryDao;
import isc.java.Module.country;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class CountryService {
private CountryDao countryDao;
@Autowired
public void setCountryDao(CountryDao countryDao) {
this.countryDao = countryDao;
}
@Transactional("smartclient")
public List<country> findInfo( ){
return this.countryDao.findInfo();
}
@Transactional("smartclient")
public country findByCode(String code){
return this.countryDao.findByCode(code);
}
@Transactional("smartclient")
public void updateInfo(country country){
this.countryDao.updateInfo(country);
}
@Transactional("smartclient")
public boolean delete(country countrys){
return this.countryDao.delete(countrys);
}
@Transactional("smartclient")
public void insert(country countrys){
this.countryDao.insert(countrys);
}
}
package isc.java.Web;
import isc.java.Module.country;
import isc.java.Service.CountryService;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Iterator;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class CountryController {
private CountryService countryService;
@Autowired
public void setCountryService(CountryService countryService) {
this.countryService = countryService;
}
/*从数据库中提取数据,转换成smartclient能识别的格式,xml*/
@SuppressWarnings("unchecked")
@RequestMapping(value="country/findInfo.action")
public void findInfo(HttpServletResponse response){
System.out.println("JUST A TEST ABOUT SELECT ");
List<country> list =this.countryService.findInfo();
ServletOutputStream sos=null;
try {
sos = response.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
StringBuffer sbu=new StringBuffer();
Iterator ita = (Iterator) list.iterator();
while(ita.hasNext()){
country countrys=(country) ita.next();
sbu.append("<country>");
sbu.append("<countryCode>"+countrys.getCode()+"</countryCode>");
sbu.append("<countryName>"+countrys.getCountryname()+"</countryName>");
sbu.append("<capital>"+countrys.getCapital()+"</capital>");
sbu.append("<continent>"+countrys.getContinent()+"</continent>");
sbu.append("</country>");
}
try {
sos.print("<?xml version='1.0' encoding='UTF-8'?><records>"+sbu.toString()+"</records>");
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestMapping(value="country/updateInfo.action")
public @ResponseBody Map<String,Object> updateInfo(HttpServletRequest request){
Map<String,Object>map=new HashMap<String,Object>();
System.out.println("測試程序:-----"+request.getParameter("countryCode"));
country countrys=this.findByCode(request.getParameter("countryCode"));
String countryname=request.getParameter("countryName");
String continent =request.getParameter("continent");
String capital=request.getParameter("capital");
countrys.setCountryname(countryname);
countrys.setContinent(continent);
countrys.setCapital(request.getParameter(capital));
this.countryService.updateInfo(countrys);
return map;
}
public country findByCode(String code){
return this.countryService.findByCode(code);
}
@RequestMapping(value="country/deleteInfo.action")
public @ResponseBody Map<String ,Object> detete (HttpServletRequest request){
Map<String,Object>map=new HashMap<String,Object>();
String code=request.getParameter("countryCode");
country countrys=this.countryService.findByCode(code);
boolean b =this.countryService.delete(countrys);
if(b){
System.out.println("恭喜 在數據庫中成功刪除此記錄!");
}else{
System.out.println("I am so sorry! 刪除失敗");
}
return map;
}
@RequestMapping(value="country/insertInfo.action")
public @ResponseBody Map<String,Object> insert(HttpServletRequest request){
Map<String,Object>map=new HashMap<String,Object>();
country countrys=new country();
countrys.setCode(request.getParameter("countryCode"));
countrys.setCapital(request.getParameter("capital"));
countrys.setContinent(request.getParameter("continent"));
countrys.setCountryname(request.getParameter("countryName"));
this.countryService.insert(countrys);
return map;
}
}