json dan xml

JSON (JavaScript Object Notation) adalah basis teks yang ringan dan di design untuk pertukaran data dan mudah untuk dibaca oleh manusia. JSON berasal dari bahasa pemrograman JavaScript yang mempresentasikan struktur data sederhana dan array yang disebut objek. JSON merupakan format teks yang benar-benar bahasa independen tetapi menggunakan konvensi yang familiar bagi programmer selain java.
Internet Media type untuk JSON adalah application/json, sedangkan nama ekstensinya adalah .json .

Contoh json:

"item": 
     {
         "id":ff2392mf229200001
         "code": "3002",
         "name": "Gallardo",
         "description":-
     }

 

XML (Extensible Markup Language) adalah bahasa markup yang didesain untuk mampu menyimpan data secara ringkas dan mudah di atur. Internet Media Type untuk XML adalah application/xhtml+xml dan ber ekstensi .xml.  
Perbedaan JSON dan XML terletak pada ukuran filenya, dimana ukuran file XML lebih besar sekitar 30% dari JSON, tetapi jika menggunakan attribute ukuran file antara JSON dan XML hampir sama

contoh xml menggunakan element:

<items>
   <code>457</code>
   <description>-</description>
   <id>4028818d29e72e9d0129e73135000001</id>
   <name>Gallardo</name>
   <price>3000</price>
</items>

 

contoh xml menggunakan attribute :

<items>
    <item 
        code="12" 
        description="-"
        id="4028818f29bf477d0129bf4a6dd90001"
        name="Nokia1600"
        price="900000"
    />
</items>

hibernate configuration in spring mvc

Berikut adalah konfigurasi hibernate pada spring mvc versi annotaion:

  • applicationContext.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
           xmlns:context="http://www.springframework.org/schema/context"
    
           xmlns:tx="http://www.springframework.org/schema/tx"
    
           xmlns:p="http://www.springframework.org/schema/p"
    
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
      
    
      <context:property-placeholder location="classpath:hsa.properties" />
    
        
    
        <bean id="dataSource"
    
            class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    
            p:driverClassName="${hibernate.connection.driver_class}"
    
            p:url="${hibernate.connection.url}"
    
            p:username="${hibernate.connection.username}"
    
            p:password="${hibernate.connection.password}" />
    
        <bean id="sessionFactory"
    
            class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
    
            p:dataSource-ref="dataSource">
    
            <property name="configLocation">
    
                <value>classpath:hibernate.cfg.xml</value>
    
            </property>
    
        </bean>
    
        <bean id="transactionManager"
    
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    
            p:sessionFactory-ref="sessionFactory" />
    
        <tx:annotation-driven/>
    
        
    
    </beans>
    
  • hibernate.cfg.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    
      <session-factory>
    
      
    
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/smvc</property>
    
        <property name="hibernate.connection.username">root</property>
    
        <property name="hibernate.connection.password">vick</property>
    
        <property name="hibernate.connection.pool_size">10</property>
    
        <property name="show_sql">false</property>
    
                  
    
        
    
      </session-factory>
    
    </hibernate-configuration>
    
  • hsa.properties
    # To change this template, choose Tools | Templates
    
    # and open the template in the editor.
    
    hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
    
    hibernate.connection.driver_class=com.mysql.jdbc.Driver
    
    hibernate.connection.url=jdbc:mysql://localhost:3306/smvc
    
    hibernate.connection.username =root
    
    hibernate.connection.password =vick
    
     

berikut untuk melihat apakah koneksi hibernate yg telah anda buat berhasil atau tidak?

  • TestConnection.java
    import java.sql.Connection;
    
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import org.hibernate.cfg.AnnotationConfiguration;
    
    import org.hibernate.cfg.Configuration;
    
    import org.hibernate.tool.hbm2ddl.SchemaExport;
    
    import org.springframework.context.support.AbstractApplicationContext;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestConnection {
    
      
    
      public static void main(String [] args) {
    
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    
            DataSource dataSource = (DataSource) ctx.getBean("dataSource");
    
            Configuration cfg = new AnnotationConfiguration().configure("hibernate.cfg.xml").setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
    
            try{
    
            Connection conn = dataSource.getConnection();
    
            new SchemaExport(cfg, conn).create(true, true);
    
            System.out.println("Koneksi berhasil");
    
            conn.close();
    
            }catch(SQLException e){
    
                System.out.println("Koneksi gagal");  
    
            }
    
            ctx.registerShutdownHook();
    
      }
    
    }
    
  • berikut adalah hasilnya :D
  • 06 Okt 10 23:24:17 org.springframework.context.support.AbstractApplicationContext prepareRefresh
    
    INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@dd5b: startup date [Wed Oct 06 23:24:17 ICT 2010]; root of context hierarchy
    
    06 Okt 10 23:24:17 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    
    INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
    
    06 Okt 10 23:24:17 org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
    
    INFO: Loading properties file from class path resource [hsa.properties]
    
    06 Okt 10 23:24:17 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a352a5: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sessionFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor]; root of factory hierarchy
    
    06 Okt 10 23:24:17 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
    
    INFO: Loaded JDBC driver: com.mysql.jdbc.Driver
    
    0 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.4.0.GA
    
    16 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA
    
    16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
    
    32 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
    
    32 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
    
    110 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.1.0.GA
    
    110 [main] INFO org.hibernate.cfg.Configuration - configuring from url: file:/D:/workspace/blog/springmaven/target/classes/hibernate.cfg.xml
    
    188 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
    
    266 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
    
    06 Okt 10 23:24:18 org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory
    
    INFO: Building new Hibernate SessionFactory
    
    282 [main] INFO org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
    
    688 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.1.41
    
    688 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.12 ( Revision: ${bzr.revision-id} )
    
    703 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLInnoDBDialect
    
    750 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory
    
    750 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
    
    750 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
    
    750 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using validasi pada spring mvc
    

    Tentunya dalam membuat sebuah apliksai web, kita tidak akan jauh dari yang namanya validasi.
    Berikut ini, saya akan menjelaskan cara menggunakan validator pada spring mvc.
    Dalam validasi pada spring mvc terdapat 2 method yang di gunakan yaitu:

    • supports(Class) ?> Digunakan untuk mengenali class mana yang akan di validasi
    • validate(Object, org.springframework.validation.Errors) ?> memvalidasi objek yang diberikan dan jika terjadi kesalahan maka mendaftarkan objek dengan diberikan errors objek
    • ItemValidator.java
        1: public class ItemValidator implements Validator{
      
        2:  
      
        3:  //Class yang akan di validasi
      
        4:     public boolean supports(Class<?> clazz){
      
        5:         return Item.class.equals(clazz);
      
        6:     }
      
        7: 
      
        8:     public void validate(Object val, Errors errors){
      
        9:         ValidationUtils.rejectIfEmpty(errors, "code", "code.empty");
      
       10:         ValidationUtils.rejectIfEmpty(errors, "name", "name.empty");
      
       11:         ValidationUtils.rejectIfEmpty(errors, "price", "price.empty");
      
       12:     }
      
       13: 
      
       14: }

        static rejectIfEmpty(??) adalah method dari class ValidationUtils yang digunakan untuk me-reject property ?code? / property ?name? / property ?price? jika bernilai null  atau string kosong.

        • Buat file ?> messages_en_US.properties ?> simpan pada classpath
        •   1: code.empty = Code should not empty
          
            2: name.empty = Name should not empty
          
            3: price.empty = price should not empty or zero
        • untuk view nya :
        •   1: <?xml version="1.0" encoding="UTF-8"?>
          
            2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          
            3: <html xmlns="http://www.w3.org/1999/xhtml">
          
            4:     <head>
          
            5:         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
          
            6:         <title>Item</title>
          
            7:         <!--script type="text/javascript">
          
            8:             function search() {
          
            9:                 var input = document.getElementsByName("name").value='';
          
           10:             }
          
           11:         </script-->
          
           12:     </head>
          
           13:     <body>
          
           14:         <form id="item" action="" method="post" >
          
           15:             <table bgcolor="#000000" border="0" cellpadding="3" cellspacing="1" align="center">
          
           16:                 <tr bgcolor="#d0dcff">
          
           17:                     <td colspan="2">
          
           18:                         <strong>Item</strong>
          
           19:                     </td>
          
           20:                 </tr>
          
           21:                 <tr bgcolor="#ffffff">
          
           22:                     <td>Code</td>
          
           23:                     <td>
          
           24:                      <input type="text" name="code" id="code" value="$!item.code" maxlength="20" tabindex="1"/>
          
           25:                      #springBind("item.code")
          
           26:                      #springShowErrors("<br/>" "")
          
           27:      </td>
          
           28: 
          
           29:                 </tr>
          
           30:                 <tr bgcolor="#ffffff">
          
           31:                     <td>Name</td>
          
           32:                     <td>
          
           33:                      <input type="text" name="name" id="name" value="$!item.name" tabindex="2" maxlength="20"/>
          
           34:                      #springBind("item.name")
          
           35:                      #springShowErrors("<br/>" "")
          
           36:      </td>
          
           37:                 </tr>
          
           38:                 <tr bgcolor="#ffffff">
          
           39:                     <td>Price</td>
          
           40:                     <td>
          
           41:                      <input type="text" name="price" value="$!item.price" id="price" tabindex="3" maxlength="20"/>
          
           42:                      #springBind("item.price")
          
           43:                      #springShowErrors("<br/>" "")
          
           44:      </td>
          
           45:                 </tr>
          
           46:                 <tr bgcolor="#ffffff">
          
           47:                     <td>Description</td>
          
           48:                     <td><textarea name="description" id="description" tabindex="5" class="text" maxlength="100">$!item.description</textarea></td>
          
           49:                 </tr>
          
           50:                 <tr bgcolor="#ffffff">
          
           51:                     <td colspan="2">
          
           52:                         <input type="submit" value="Submit" tabindex="20"/>
          
           53:                         <input type="reset" tabindex="21"/>
          
           54:                     </td>
          
           55:                 </tr>
          
           56:             </table>
          
           57:         </form>
          
           58:         <br/><br/>
          
           59:         
          
           60:     </body>
          
           61: </html>

                #springBind(?.) ?> digunakan untuk mengambil object errors yang sudah terdaftar

                • Contoh:

                validate

                Selamat mencoba :D

                Spring 3 mvc rest

                Kali ini saya akan memberikan contoh implementasi rest pada spring 3 mvc .

                • Library yang di gunakan :
                          • aopalliance-1.0.jar
                          • commons-logging-1.1.1.jar
                          • servlet-api-2.5.jar
                          • org.springframework.asm-3.0.0.RELEASE.jar
                          • org.springframework.beans-3.0.0.RELEASE.jar
                          • org.springframework.context-3.0.0.RELEASE.jar
                          • org.springframework.context.support-3.0.0.RELEASE.jar
                          • org.springframework.core-3.0.0.RELEASE.jar
                          • org.springframework.expression-3.0.0.RELEASE.jar
                          • org.springframework.web-3.0.0.RELEASE.jar
                          • org.springframework.web.servlet-3.0.0.RELEASE.jar
                          • hibernate-core-3.3.1.GA.jar
                          • hibernate-search-3.1.0.GA.jar
                          • hibernate-commons-annotations-3.1.0.GA.jar
                          • hibernate-annotations-.3.4.0.GA.jar
                • Struktur project

                  struktur

                 

                • Item.java
                    1: package org.blueoxygen.cimande2.entity;
                    2: 
                    3: import java.io.Serializable;
                    4: import javax.persistence.Column;
                    5: import javax.persistence.Entity;
                    6: import javax.persistence.GeneratedValue;
                    7: import javax.persistence.Id;
                    8: import javax.persistence.Table;
                    9: import org.hibernate.annotations.GenericGenerator;
                   10: 
                   11: /**
                   12:  *
                   13:  * @author vick
                   14:  */
                   15: @Entity
                   16: @Table
                   17: public class Item implements Serializable{
                   18:     
                   19:     @Id
                   20:     @GeneratedValue(generator="i")
                   21:     @GenericGenerator(name="i", strategy="uuid")
                   22:     @Column
                   23:     private String id;
                   24: 
                   25:     @Column
                   26:     private String code;
                   27: 
                   28:     @Column
                   29:     private String name;
                   30: 
                   31:     @Column
                   32:     private Long price;
                   33: 
                   34:     @Column
                   35:     private String description;
                   36: 
                   37:      //Getter and Setter
                • BaseDaoHibernate.java
                    1: package org.blueoxygen.cimande2.dao.base;
                    2: 
                    3: import java.lang.reflect.ParameterizedType;
                    4: import java.util.List;
                    5: 
                    6: import org.hibernate.SessionFactory;
                    7: import org.springframework.beans.factory.annotation.Autowired;
                    8: 
                    9: 
                   10: /**
                   11:  *
                   12:  * @author vick
                   13:  */
                   14: public class BaseDaoHibernate<T> {
                   15: 
                   16:     @SuppressWarnings("unchecked")
                   17:     protected Class domainClass;
                   18:     
                   19:     @Autowired protected SessionFactory sessionFactory;
                   20: 
                   21:     @SuppressWarnings("unchecked")
                   22:     public BaseDaoHibernate(){
                   23:         this.domainClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
                   24:     }
                   25: 
                   26:     @SuppressWarnings("unchecked")
                   27:     public T findById(String id){
                   28:         if(id.equalsIgnoreCase("")) return null;
                   29:         final T domain = (T) sessionFactory.getCurrentSession().get(domainClass, id);
                   30:         return domain;
                   31:     }
                   32: 
                   33:     public T save(T domain){
                   34:         sessionFactory.getCurrentSession().saveOrUpdate(domain);
                   35:         return domain;
                   36:     }
                   37: 
                   38:     public void delete(T domain){
                   39:         sessionFactory.getCurrentSession().delete(domain);
                   40:     }
                   41: 
                   42:     @SuppressWarnings("unchecked")
                   43:     public List<T> findAll(Integer startIndex, Integer pageSize){
                   44:         return sessionFactory.getCurrentSession().createQuery("from "+domainClass.getName()).setFirstResult(startIndex).setMaxResults(pageSize).list();
                   45:     }
                   46: 
                   47:     @SuppressWarnings("unchecked")
                   48:     public List<T> findAll(){
                   49:         return sessionFactory.getCurrentSession().createQuery("from "+domainClass.getName()).list();
                   50:     }
                   51: }

                untuku konfigurasi hibernate ada di blog sebelah :D   link?> spring hibernate 

                • ItemDao.java
                    1: package org.blueoxygen.cimande2.dao;
                  
                    2: 
                  
                    3: 
                  
                    4: import org.blueoxygen.cimande2.dao.base.BaseDaoHibernate;
                  
                    5: import org.blueoxygen.cimande2.entity.Item;
                  
                    6: import org.springframework.stereotype.Repository;
                  
                    7: 
                  
                    8: /**
                  
                    9:  *
                  
                   10:  * @author vick
                  
                   11:  */
                  
                   12: @Repository
                  
                   13: public class ItemDao extends BaseDaoHibernate<Item>{
                  
                   14: 
                  
                   15:  }
                • ItemService.java
                    1: package org.blueoxygen.cimande2.service;
                    2: 
                    3: import java.util.List;
                    4: 
                    5: import org.blueoxygen.cimande2.entity.Item;
                    6: 
                    7: 
                    8: /**
                    9:  *
                   10:  * @author vick
                   11:  */
                   12: public interface ItemService {
                   13: 
                   14:     void save(Item item);
                   15:     void delete(Item item);
                   16:     Item getItem(String id);
                   17:     
                   18: }
                • ItemServiceImpl.java
                    1: import org.blueoxygen.cimande2.dao.ItemDao;
                  
                    2: import org.blueoxygen.cimande2.entity.Item;
                  
                    3: import org.blueoxygen.cimande2.service.ItemService;
                  
                    4: import org.springframework.beans.factory.annotation.Autowired;
                  
                    5: import org.springframework.stereotype.Service;
                  
                    6: import org.springframework.transaction.annotation.Transactional;
                  
                    7: 
                  
                    8: /**
                  
                    9:  *
                  
                   10:  * @author vick
                  
                   11:  */
                  
                   12: @Service("itemService")
                  
                   13: @Transactional(readOnly = true)
                  
                   14: public class ItemServiceImpl implements ItemService {
                  
                   15: 
                  
                   16:     @Autowired
                  
                   17:     private ItemDao itemDao;
                  
                   18: 
                  
                   19:     @Transactional
                  
                   20:     public void save(Item item) {
                  
                   21:         itemDao.save(item);
                  
                   22:     }
                  
                   23: 
                  
                   24:     @Transactional
                  
                   25:     public void delete(Item item) {
                  
                   26:         itemDao.delete(item);
                  
                   27:     }
                  
                   28: 
                  
                   29:     public Item getItem(String id) {
                  
                   30:         return itemDao.findById(id);
                  
                   31:     }
                  
                   32:     
                  
                   33: }
                • ItemController.java
                    1: package org.blueoxygen.cimande2.controller;
                  
                    2: 
                  
                    3: 
                  
                    4: import javax.servlet.http.HttpServletRequest;
                  
                    5: import javax.servlet.http.HttpServletResponse;
                  
                    6: 
                  
                    7: import org.blueoxygen.cimande2.service.ItemService;
                  
                    8: import org.blueoxygen.cimande2.ui.form.ItemForm;
                  
                    9: import org.blueoxygen.cimande2.ui.validator.ItemValidator;
                  
                   10: import org.springframework.beans.factory.annotation.Autowired;
                  
                   11: import org.springframework.stereotype.Controller;
                  
                   12: import org.springframework.validation.BindingResult;
                  
                   13: import org.springframework.web.bind.annotation.ModelAttribute;
                  
                   14: import org.springframework.web.bind.annotation.RequestMapping;
                  
                   15: import org.springframework.web.bind.annotation.RequestMethod;
                  
                   16: import org.springframework.web.servlet.ModelAndView;
                  
                   17: import org.springframework.web.servlet.view.RedirectView;
                  
                   18: 
                  
                   19: /**
                  
                   20:  *
                  
                   21:  * @author vick
                  
                   22:  */
                  
                   23: @Controller
                  
                   24: public class ItemController{
                  
                   25: 
                  
                   26:     @Autowired private ItemService itemService;
                  
                   27:     @RequestMapping(value="/item", method=RequestMethod.GET)
                  
                   28:     public ModelAndView item(HttpServletRequest request, HttpServletResponse response) throws Exception{
                  
                   29:         ModelAndView mv = new ModelAndView();
                  
                   30:         mv.addObject("item", new ItemForm());
                  
                   31:         mv.setViewName("item/item-add");
                  
                   32:         return mv;
                  
                   33:     }
                  
                   34: 
                  
                   35:     @RequestMapping(value="/item", method=RequestMethod.POST)
                  
                   36:     public ModelAndView item(HttpServletRequest request, @ModelAttribute("item") ItemForm item, BindingResult bindingResult){
                  
                   37:         new ItemValidator().validate(item, bindingResult);
                  
                   38:         if(bindingResult.hasErrors()){
                  
                   39:             ModelAndView mv = new ModelAndView();
                  
                   40:             mv.addObject("item", item);
                  
                   41:             mv.setViewName("item/item-add");
                  
                   42:             return mv;
                  
                   43:         }else{
                  
                   44:             itemService.save(item.getItem());
                  
                   45:             return new ModelAndView(new RedirectView(request.getContextPath()+"/view/item/"+ item.getId()));
                  
                   46:         }
                  
                   47: 
                  
                   48:     }
                  
                   49: }
                • web.xml
                    1: <?xml version="1.0" encoding="UTF-8"?>
                  
                    2: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
                  
                    3:   <display-name>rest-springmvc</display-name>
                  
                    4:   <context-param>
                  
                    5:     <param-name>contextConfigLocation</param-name>
                  
                    6:     <param-value>classpath:applicationContext.xml</param-value>
                  
                    7:   </context-param>
                  
                    8:   <listener>
                  
                    9:     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                  
                   10:   </listener>
                  
                   11:   <servlet>
                  
                   12:     <servlet-name>dispatcher</servlet-name>
                  
                   13:     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                  
                   14:     <load-on-startup>2</load-on-startup>
                  
                   15:   </servlet>
                  
                   16:   <servlet-mapping>
                  
                   17:     <servlet-name>dispatcher</servlet-name>
                  
                   18:     <url-pattern>/*</url-pattern>
                  
                   19:   </servlet-mapping>
                  
                   20:   <session-config>
                  
                   21:     <session-timeout>30</session-timeout>
                  
                   22:   </session-config>
                  
                   23:   <welcome-file-list>
                  
                   24:     <welcome-file>index.xhtml</welcome-file>
                  
                   25:   </welcome-file-list>
                  
                   26: </web-app>
                • dispatcher-servlet.xml
                        1: <?xml version="1.0" encoding="UTF-8"?>
                      
                        2: <beans xmlns="http://www.springframework.org/schema/beans"
                      
                        3:        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      
                        4:        xmlns:p="http://www.springframework.org/schema/p"
                      
                        5:        xmlns:context="http://www.springframework.org/schema/context"
                      
                        6:        xsi:schemaLocation="
                      
                        7:    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                      
                        8:    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
                      
                        9:     <context:component-scan base-package="org.blueoxygen.cimande2.controller" />
                      
                       10:     <bean id="velocityConfig"
                      
                       11:          class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"
                      
                       12:          p:resourceLoaderPath="/WEB-INF/velocity/"/>
                      
                       13:     <bean id="viewResolver"
                      
                       14:          class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"
                      
                       15:          p:cache="true"
                      
                       16:          p:prefix=""
                      
                       17:          p:suffix=".xhtml"/>
                      
                       18:     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                      
                       19:         <property name="maxUploadSize" value="10000000"/>
                      
                       20:     </bean>
                      
                       21:     
                      
                       22:         
                      
                       23:     <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
                      
                       24:         <property name="mediaTypes">
                      
                       25:             <map>
                      
                       26:                 <entry key="json" value="application/json"/>
                      
                       27:             </map>
                      
                       28:         </property>
                      
                       29:     </bean>
                      
                       30:     
                      
                       31:     <bean id="messageSource"
                      
                       32:         class="org.springframework.context.support.ResourceBundleMessageSource"
                      
                       33:         p:basename="messages" />
                      
                       34: </beans>

                  • Hasil

                  hasil 

                    • Berikut adalah contoh implementasi rest pada spring 3 mvc versi saya.
                      Untuk kurang lebihnya saya mohon maaf dan terimakasih.
                        Next Week---> validator pada spring 3 mvc rest

                    JSON in Rest Spring MVC

                    library json yang di pakai : - jackson-core-asl-1.5.2.jar - jackson-mapper-asl-1.5.2.jar

                    tambahkan kode dibawah ini pada dispatcher-servlet.xml



                    hasil:





                    gampang kan !!! :D Good Luck

                    Ireport - Membatasi Baris Yang di Print Tiap Halaman

                    Pada kondisi biasa ireport akan mencetak baris pada halaman pertaman dan bila tidak cukup akan dilanjutkan pada halaman kedua. Hasilnya pasti tidak rapi. Oleh karena itu saya akan menjelaskan cara mengatur jumlah baris tiap halaman.

                    Berikut adalah hasil report sebelum ada pengaturan:



                    Pertama tama buat Report Group baru seperti gambar di bawah ini:



                    Pada Group Criteria isi Group following by expression :
                    new Integer((int)(($V{REPORT_COUNT}.intValue()-1)/10)) --> 10 adalah batas baris tiap halaman



                    klik next -> finish (pastikan group header dan footer telah anda check )



                    check "Start on new page" pada properties group yang telah di buat



                    ubah band height pada group header dan footer yang dibuat menjadi 0.


                    hasil:






                    Good Luck