Berkenalan dengan controller Spring MVC dan viewer JSTL

Pada artikel ini saya akan menjelaskan dasar paling sederhana membangun aplikasi web menggunakan controller Spring MVC dan viewernya menggunakan JSTL (JSP Standard Tag Library). Nah seperti biasa, sebelum ke codingan saya akan jelaskan secara singkat apa itu Spring MVC dan JSTL.

JSTL adalah sebuah komponen dari Java EE Web application development platform. Ini memperluas spesifikasi JSP dengan menambahkan tag-tag Library dari JSP untuk common tasks, seperti pengolahan data XML, conditional execution, loop dan internasionalisasi. JSTL ini dikembangkan di bawah Java Community Process (JCP) sebagai JSR 52. pada 8 Mei 2006, JSTL 1,2 telah dirilis.

JSTL menyediakan cara yang efektif untuk menanamkan logika dalam halaman JSP tanpa menggunakan kode Java tertanam secara langsung. Dalam penggunaannya JSTL menetapkan standar tag set, daripada melanggar keluar dan masuk dari kode Java yang membuat lebih banyak kode maintainable dan memungkinkan fokus pada pemisahan antara pengembangan kode aplikasi dan user interface.

Spring MVC = Bagian dari Spring framework yang merupakan controller seperti Struts atau JSF. MVC = Model View Controller, konsep pemrograman yang memisahkan bagian pengaksesan database(Model), Business Logic(Controller), dan tampilan (View).

Bagaimana sudah sedikit ada bayangan ?? setelah panjang lebar mari langsung ke TKP, dan selanjutnya adalah mempersiapkan library jar yang di perlukan untuk project ini.

1. commons-logging-1.1.jar      4. spring-2.5.6.jar

2. jstl-standard.jar                   5. spring-webmvc-2.5.6.jar

3. jstl.jar

setelah semua librarynya terkumpul siapkan toolsnya yang di perlukan, yaitu :

1. Javanya pasti donk

2. apache-tomcat-6.0.24 (sebagai middle ware / web server)

3. Eclipse IDE


Nah sebelum ke codingan, saya akan perlihatkan struktutr projectnya terlebih dahulu,,


seperti biasa setelah saya kasih lihat struktutr projectnya langsung ke codingan.

yang pertama adalah membuat file web.xmlnya

<?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">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
</web-app>


setelah itu, buat class ItemForm.java

package org.blueoxygen.springmvc.form;

public class ItemForm {
    private String code;
    private String name;
    private String description;
    private int price;
   
    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 getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
   
}

setelah membuat ItemForm, buat class controller FormInput.java

package org.blueoxygen.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.blueoxygen.springmvc.form.ItemForm;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

@Controller
public class FormInput extends MultiActionController {
   
    public ModelAndView formInput(HttpServletRequest request, HttpServletResponse response, ItemForm itemForm) throws Exception {
        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute(new ItemForm());
       
        String action = request.getParameter("action") == null ? "" : request.getParameter("action");
       
        HttpSession session;
        System.out.println(">>>>>"+request.getParameter("action"));
        if(action.equalsIgnoreCase("1")) {
            session = request.getSession();
            session.setAttribute("itemForm", itemForm);
           
            ModelAndView mav =  new ModelAndView("redirect:viewItem.do");
            mav.addObject("itemForm", itemForm);
           
            return mav;
        } else {
            return new ModelAndView("item/formInput", modelMap);
        }
    }
   
}

setelah controllernya terbuat mari kita buat file formInput.jsp :

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<html>
    <head>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        <link href="../css/template.css" rel="stylesheet" type="text/css">
        <script language="JavaScript">
            function lanjut() {
              window.location.href = "formInput.do?action=1";
            }
        </script>
        <title>Spring MVC Sample</title>
    </head>
    <body>
        <form:form action="formInput.do?action=1" method="post" commandName="itemForm" name="form1">
        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#E7E3E7">
            <tr>
                <td width="10"></td>
                <td height="25" align="center" class="tabel_header">Item Form</td>
                <td width="10"></td>
            </tr>
        </table>
        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#E7E3E7">
            <tr class="tabel_edit">
                <td align="left">Code</td>
                <td align="left"> : </td>
                <td align="left">
                    <form:input path="code" cssClass="bordersolid"/>
                </td>
            </tr>
            <tr class="tabel_edit">
                <td align="left">Name</td>
                <td align="left"> : </td>
                <td align="left">
                    <form:input path="name" cssClass="bordersolid"/>
                </td>
            </tr>
            <tr class="tabel_edit">
                <td align="left">Description</td>
                <td align="left"> : </td>
                <td align="left">
                    <form:input path="description" cssClass="bordersolid"/>
                </td>
            </tr>
            <tr class="tabel_edit">
                <td align="left">Price</td>
                <td align="left"> : </td>
                <td align="left">
                    <form:input path="price" cssClass="bordersolid"/>
                </td>
            </tr>
            <tr>
                <td align="right" valign="bottom" colspan="4">
                    <input type="submit" class="buttonbesar" value="submit" onClick="lanjut()">
                    <input type="reset" class="buttonbesar" value="Reset">
                </td>
            </tr>
        </table>
        </form:form>
    </body>
 </html>

 

setelah membuat jspnya, kita buat class controller untuk view hasil dari input form di atas yaitu ViewItem.java

 

package org.blueoxygen.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.blueoxygen.springmvc.form.ItemForm;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

@Controller
public class ViewItem extends AbstractController {

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
       
        ItemForm itemForm = new ItemForm();
        HttpSession session;
       
        session = request.getSession();
       
        itemForm = (ItemForm) session.getAttribute("itemForm");
       
        ModelAndView mav = new ModelAndView();
        mav.addObject("itemForm", itemForm);
       
        return mav;
    }

}

 

selanjutnya adalah membuat jspnya viewernya viewItem.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<html>
    <head>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        <link href="../css/template.css" rel="stylesheet" type="text/css">
        <title>Spring MVC Sample</title>
    </head>
    <body>
        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#E7E3E7">
          <tr>
            <td width="10"></td>
            <td height="25" align="center" class="tabel_header">View Item</td>
            <td width="10"></td>
          </tr>
        </table>
        <table width="98%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#E7E3E7">
          <tr class="tabel_edit">
            <td width="180" align="left" >Code</td>
            <td align="left" class="tabel_edit_judul">&nbsp;${itemForm.code}</td>
          </tr>
          <tr class="tabel_edit">
            <td  align="left" >Name</td>
            <td align="left" class="tabel_edit_judul" >&nbsp;${itemForm.name}</td>
          </tr>
          <tr class="tabel_edit">
            <td  align="left" >Description</td>
            <td align="left" class="tabel_edit_judul" >&nbsp;${itemForm.description} </td>
          </tr>
          <tr class="tabel_edit">
            <td  align="left" >Price</td>
            <td align="left" class="tabel_edit_judul" >&nbsp;${itemForm.price}</td>
          </tr>
        </table>
    </body>
 </html>

 

 setelah class dan viewernya jadi buat dispatcher-servlet untuk mengatur alur actionny :

 

<?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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
   
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
   
    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
                <prop key="item/formInput.do">formInputController</prop>
                <prop key="item/viewItem.do">viewItemController</prop>
            </props>
        </property>
    </bean>
   
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />
   
    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
   
    <bean name="formInputController" class="org.blueoxygen.springmvc.controller.FormInput" />
    <bean name="viewItemController" class="org.blueoxygen.springmvc.controller.ViewItem" />
</beans>


setelah itu, kita buat redirect.jspnya untuk menredirect actionnya :

 

 

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% response.sendRedirect("item/formInput.do"); %>

 

 

dan hasilnya seperti ini


dan viewnya seperti ini


Alhamdulillah articlenya selesai juga, nah mohon do'anya kepada para reader semoga saya bisa membuat articlenya selanjutnya yang selalu bermanfaat bagi semuanya, amien.

Aditya Lukman Afandi

 

blog comments powered by Disqus