Blog Archive

Sencha Touch 2 List examples using Java Servlet and MySQL database

Display data in a List is essential to any application including web. Sencha Touch List is built on Top of DataView which allows for Grouping, Indexing, Icons, and a Disclosure. In this tutorial we are going to review some of these features. The DataView makes it easy to create a list that can display a lot of data from the server more like a HTML Table Row. The DataView is associated with a store and the model objects are rendered using XTemplate.

Click on the links below for Sencha Touch 2 List examples


Back-end programming for the above listed examples are provided below.
sencha touch list example based on dataview

Source for WEB application config file - web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name>Sencha_DataView</display-name>
 <servlet>
  <description>
  </description>
  <display-name>CountryServlet</display-name>
  <servlet-name>CountryServlet</servlet-name>
  <servlet-class>com.as400samplecode.CountryServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>CountryServlet</servlet-name>
  <url-pattern>/CountryServlet</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
</web-app>


Source for MySQL database resource - context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
<Resource auth="Container"
name="jdbc/mysql"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/world"
username="root"
password="mysql"
maxIdle="10"
maxActive="200"
maxWait="5"
removeAbandoned="true"
removeAbandonedTimeout="1200"
/>
</Context>

Source for Country object - Country.java

package com.as400samplecode.util;

public class Country {
 
 String code = null;
 String name = null;
 String continent = null;
 String region = null;
 Double lifeExpectancy = null;
 Double gnp = null;
 boolean disclosure = false;
 
 public String getCode() {
  return code;
 }
 public void setCode(String code) {
  this.code = code;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getContinent() {
  return continent;
 }
 public void setContinent(String continent) {
  this.continent = continent;
 }
 public String getRegion() {
  return region;
 }
 public void setRegion(String region) {
  this.region = region;
 }
 public Double getLifeExpectancy() {
  return lifeExpectancy;
 }
 public void setLifeExpectancy(Double lifeExpectancy) {
  this.lifeExpectancy = lifeExpectancy;
 }
 public Double getGnp() {
  return gnp;
 }
 public void setGnp(Double gnp) {
  this.gnp = gnp;
 }
 public boolean isDisclosure() {
  return disclosure;
 }
 public void setDisclosure(boolean disclosure) {
  this.disclosure = disclosure;
 }
 
} 

Java utility function to process data request - CountryInformation.java

package com.as400samplecode.util;

import java.sql.Connection;          
import java.sql.ResultSet;           
import java.sql.SQLException;        
import java.sql.PreparedStatement;   
import java.util.ArrayList;

import javax.naming.Context;         
import javax.naming.InitialContext;  
import javax.sql.DataSource;         

public class CountryInformation {            

 Connection conn = null;             
 PreparedStatement stmt = null;      
 String sql = null;
 
 public ArrayList<Country> getItems(String start, String limit) {  
  
  ArrayList<Country> countryList = new ArrayList<Country>();    
  boolean toggle = false;
  
  try {       
   Context ctx = (Context) new InitialContext().lookup("java:comp/env");
   conn = ((DataSource) ctx.lookup("jdbc/mysql")).getConnection(); 

   sql = "Select * from COUNTRY order by name,code LIMIT ?,?"; 
   stmt = conn.prepareStatement(sql);
   stmt.setInt(1,Integer.parseInt(start)); 
   stmt.setInt(2,Integer.parseInt(limit)); 
   
   ResultSet rs = stmt.executeQuery();  
   
   while(rs.next()){ 
    Country country = new Country();
    country.setCode(rs.getString("code").trim());
    country.setName(rs.getString("name").trim());
    country.setContinent(rs.getString("continent").trim());
    country.setRegion(rs.getString("region").trim());
    country.setLifeExpectancy(
     rs.getString("lifeExpectancy") == null ? 
     new Double(0) : 
     Double.parseDouble(rs.getString("lifeExpectancy")
       .trim()));
    country.setGnp(
     rs.getString("gnp") == null ? 
     new Double(0)  : 
     Double.parseDouble(rs.getString("gnp").trim()));
    toggle = toggle ? false : true;
    country.setDisclosure(toggle);
    countryList.add(country);
   }                                                                          

   rs.close();                                                                
   stmt.close();                                                              
   stmt = null;                                                               


   conn.close();                                                              
   conn = null;                                                    

  }                                                                
  catch(Exception e){System.out.println(e);}                       

  finally {                                                        
  
   if (stmt != null) {                                             
    try {                                                          
     stmt.close();                                                 
    } catch (SQLException sqlex) {                                 
     // ignore -- as we can't do anything about it here            
    }                                                              

    stmt = null;                                             
   }                                                         

   if (conn != null) {                                       
    try {                                                    
     conn.close();                                           
    } catch (SQLException sqlex) {                           
     // ignore -- as we can't do anything about it here      
    }                                                        

    conn = null;                                             
   }                                                         
  }               

  return countryList;

 }   
 
 public int getTotalCount() {  

  int totalCount = 0; 

  try {       
   Context ctx = (Context) new InitialContext().lookup("java:comp/env");
   conn = ((DataSource) ctx.lookup("jdbc/mysql")).getConnection(); 

   sql = "Select count(*) from COUNTRY";                       
   stmt = conn.prepareStatement(sql);
   
   ResultSet rs = stmt.executeQuery();  
   while(rs.next()){ 
    totalCount = rs.getInt(1);
    break;
   }                                                                          

   rs.close();                                                                
   stmt.close();                                                              
   stmt = null;                                                               


   conn.close();                                                              
   conn = null;                                                    

  }                                                                
  catch(Exception e){System.out.println(e);}                       

  finally {                                                        
   /*                                                              
    * close any jdbc instances here that weren't                   
    * explicitly closed during normal code path, so                
    * that we don't 'leak' resources...                            
    */                                                             

   if (stmt != null) {                                             
    try {                                                          
     stmt.close();                                                 
    } catch (SQLException sqlex) {                                 
     // ignore -- as we can't do anything about it here            
    }                                                              

    stmt = null;                                             
   }                                                         

   if (conn != null) {                                       
    try {                                                    
     conn.close();                                           
    } catch (SQLException sqlex) {                           
     // ignore -- as we can't do anything about it here      
    }                                                        

    conn = null;                                             
   }                                                         
  }               

  return totalCount;

 }   


}               

Java Servlet sending JSON response - CountryServlet.java

package com.as400samplecode;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.as400samplecode.util.Country;
import com.as400samplecode.util.CountryInformation;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class CountryServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

 public CountryServlet() {
  super();
 }

 protected void doGet(HttpServletRequest request, HttpServletResponse response) 
 throws ServletException, IOException {
  doPost(request,response);
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response) 
 throws ServletException, IOException {

  String start = request.getParameter("start");
  String limit = request.getParameter("limit");
  
  PrintWriter out = response.getWriter();
  response.setContentType("text/html");
  
  CountryInformation countryInformation = new CountryInformation();
  ArrayList<Country> countryList = countryInformation.getItems(start,limit);
  
  Gson gson = new Gson();
  JsonObject myObj = new JsonObject();
  myObj.addProperty("success", true);
  myObj.add("countries", gson.toJsonTree(countryList));
  myObj.addProperty("totalCount", countryInformation.getTotalCount());
  out.println(myObj.toString());
  out.close();


 }

}