subrutin
a sequence of programmer life

Advertisement

Membangun Project Pertama Menggunakan Spring Web MVC (Bagian 1)

0 1,194

Dalam artikel berseri mengenai pembahasan Tutorial Spring Web MVC yang pertama, subrutin telah mengulas mengenai pattern dari mvc dan bagaimana diagram dari konsep Spring Web MVC bekerja. Kali ini, subrutin akan melanjutkan ulasan mengenai bagaimana programmer dapat membangun project pertama kali menggunakan framework Spring Web MVC.

Advertisement

  • Prasyarat Perangkat Lunak

Dalam pembahasan kali ini, diasumsikan software berikut sudah  terinstal. ( Pembaca dapat merujuk ke tautan yang disertakan untuk menginstal perangkat lunak tersebut )

 

  • Generate Archetype

Buka terminal atau command prompt pada mesin komputer, lalu ketik perintah berikut untuk membuat sebuah project baru menggunakan maven

mvn archetype:generate -DgroupId=com.subrutin -DartifactId=first-springmvc-init-DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4 -Dpackage=com.subrutin.springmvc -DinteractiveMode=false

Advertisement

 

 

  • Ubah pom.xml

Ubah project maven yang telah digenerate agar menggunakan OpenJDK 11 yang telah diinstal. Caranya ganti value tag pada pom.xml berikut menjadi 11 dari yang semula 1.7

  • maven.compiler.source
  • maven.compiler.target

Berikutnya, tambahkan beberapa dependensi berikut pada pom.xml

  • servlet-api
  • jsp-api
  • jstl
<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>4.0.3</version>
    <scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api -->
<dependency>
    <groupId>jakarta.servlet.jsp</groupId>
    <artifactId>jakarta.servlet.jsp-api</artifactId>
    <version>2.3.6</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

 

Tambahkan pula dependensi Spring Framework termasuk Spring Web MVC

  1. spring-core
  2. spring-context
  3. spring-context-support
  4. spring-expression
  5. spring-beans
  6. spring-webmvc
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>

Perhatikan,  ${spring.version} adalah variabel versi spring yang didefinisikan pada properties

<spring.version>5.2.6.RELEASE</spring.version>

Berikut adalah hasil akhir dari pom.xml yang telah diubah

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.subrutin</groupId>
    <artifactId>first-springmvc-init</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>first-springwebmvc Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>https:/subrutin.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring.version>5.2.6.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>4.0.3</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api -->
        <dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>2.3.6</version>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>first-springwebmvc</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven 
                defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

 

Advertisement

 

  • Ubah web.xml

Pada web.xml tambahkan DispatcherServlet yang bertindak sebagai front controller pada Spring WebMVC.  Perhatikan pada baris 23-26, servlet dipetakan untuk semua request yang berakhiran .html

<servlet>
    <servlet-name>main</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>main</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

Begitu DispatcherServlet diinisiasi, ia akan membentuk application context berdasarkan konfigurasi xml yang secara default memiliki nama  [nama-servlet]-servlet.xml. Oleh karena itu, buat file bernama  main-servlet.xml dengan konfigurasi sebagai berikut

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <mvc:annotation-driven/>
    <context:component-scan
        base-package="com.subrutin.springmvc.controller" />
    <mvc:default-servlet-handler />

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>

Perhatikan pada baris 12-13 didefinisikan <context:component-scan> yang merupakan konfigurasi agar framework melakukan pemindaian semua “komponen spring” pada package com.subrutin.springmvc.controller berserta semua package anakannya

Pada baris 16-18, didefinisikan bean viewResolver yang bertugas  menerjemahkan view yang diminta dan menambahkannya di lokasi dengan prefix /WEB-INF/jsp/ dan format file (suffix) .jsp

Dari sini, programmer telah berhasil mensetup project kosong yang siap diisi dengan program yang akan  dibahas pada bagian kedua tulisan ini.

Source code yang dibahas pada tulisan ini dapat dilihat pada repositori Github

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.