MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 18 as of 2015-02-13 23:25:36
  • Java
  • Spring

Spring

Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.

http://spring.io/guides

http://spring.io/guides/gs/serving-web-content/

http://spring.io/guides/gs/convert-jar-to-war-maven/

REST service

spring.io/guides/gs/rest-service/

Structure

.
|-- pom.xml
|-- src
|   `-- main
|       `-- java
|           `-- hello
|               |-- Application.java
|               |-- Greeting.java
|               `-- GreetingController.java
`-- target
    |-- classes
    |   `-- hello
    |       |-- Application.class
    |       |-- Greeting.class
    |       `-- GreetingController.class
    |-- generated-sources
    |   `-- annotations
    |-- gs-rest-service-0.1.0.jar
    |-- gs-rest-service-0.1.0.jar.original
    `-- maven-archiver
        `-- pom.properties

Steps

  • mkdir -p /tmp/greetingSpring
  • mkdir -p /tmp/greetingSpring/src/main/java/hello
  • mkdir -p /tmp/greetingSpring/target
  • cd /tmp/greetingSpring

pom.xml

<?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>org.springframework</groupId>
  <artifactId>gs-rest-service</artifactId>
  <version>0.1.0</version>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.5.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
<properties>
<start-class>hello.Application</start-class>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>http://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>http://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>

src/main/java/hello/Application.java

   1 package hello;
   2 
   3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
   4 import org.springframework.boot.SpringApplication;
   5 import org.springframework.context.annotation.ComponentScan;
   6 
   7 @ComponentScan
   8 @EnableAutoConfiguration
   9 public class Application {
  10 
  11     public static void main(String[] args) {
  12         SpringApplication.run(Application.class, args);
  13     }
  14 }

src/main/java/hello/Greeting.java

   1 package hello;
   2 
   3 public class Greeting {
   4 
   5     private final long id;
   6     private final String content;
   7 
   8     public Greeting(long id, String content) {
   9         this.id = id;
  10         this.content = content;
  11     }
  12 
  13     public long getId() {
  14         return id;
  15     }
  16 
  17     public String getContent() {
  18         return content;
  19     }
  20 }

src/main/java/hello/GreetingController.java

   1 package hello;
   2 
   3 import java.util.concurrent.atomic.AtomicLong;
   4 import org.springframework.web.bind.annotation.RequestMapping;
   5 import org.springframework.web.bind.annotation.RequestParam;
   6 import org.springframework.web.bind.annotation.RestController;
   7 
   8 @RestController
   9 public class GreetingController {
  10 
  11     private static final String template = "Hello, %s!";
  12     private final AtomicLong counter = new AtomicLong();
  13 
  14     @RequestMapping("/greeting")
  15     public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
  16         return new Greeting(counter.incrementAndGet(),
  17                             String.format(template, name));
  18     }
  19 }

Build with

  • mvn clean compile package

Run with:

  • jar -tf target/gs-rest-service-0.1.0.jar # check JAR contents
  • java -jar target/gs-rest-service-0.1.0.jar
  • open URL http://localhost:8080/greeting

Tomcat REST service

Structure

.
|-- pom.xml
|-- src
    `-- main
        `-- java
            `-- hello
                |-- Application.java
                |-- Greeting.java
                `-- GreetingController.java

pom.xml

   1 <project xmlns="http://maven.apache.org/POM/4.0.0" 
   2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   4 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   5     <modelVersion>4.0.0</modelVersion>
   6     <groupId>org.springframework</groupId>
   7     <artifactId>gs-rest-service-tomcat</artifactId>
   8     <version>0.1.0</version>
   9     <packaging>war</packaging>
  10 
  11     <parent>
  12         <groupId>org.springframework.boot</groupId>
  13         <artifactId>spring-boot-starter-parent</artifactId>
  14         <version>1.1.5.RELEASE</version>
  15     </parent>
  16 
  17     <dependencies>
  18         <dependency>
  19             <groupId>org.springframework.boot</groupId>
  20             <artifactId>spring-boot-starter-web</artifactId>
  21             <scope>compile</scope> 
  22         </dependency>
  23     </dependencies>
  24 
  25     <properties>
  26         <start-class>hello.Application</start-class>
  27     </properties>
  28     <build>
  29         <plugins>
  30             <plugin>
  31                 <artifactId>maven-compiler-plugin</artifactId>
  32                 <version>2.3.2</version>
  33             </plugin>
  34         </plugins>
  35     </build>
  36     <repositories>
  37         <repository>
  38             <id>spring-releases</id>
  39             <url>http://repo.spring.io/libs-release</url>
  40         </repository>
  41     </repositories>
  42     <pluginRepositories>
  43         <pluginRepository>
  44             <id>spring-releases</id>
  45             <url>http://repo.spring.io/libs-release</url>
  46         </pluginRepository>
  47     </pluginRepositories>
  48 </project>

src/main/java/hello/Application.java

   1 package hello;
   2 
   3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
   4 import org.springframework.boot.SpringApplication;
   5 import org.springframework.context.annotation.ComponentScan;
   6 import org.springframework.boot.context.web.SpringBootServletInitializer;
   7 import org.springframework.boot.builder.SpringApplicationBuilder;
   8 import org.springframework.context.annotation.Configuration;
   9 
  10 @ComponentScan
  11 @EnableAutoConfiguration
  12 @Configuration
  13 public class Application  extends SpringBootServletInitializer  {
  14 
  15     public static void main(String[] args) {
  16         SpringApplication.run(appClass, args);
  17     }
  18 
  19     @Override
  20     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  21         return application.sources(appClass);
  22     }
  23 
  24     private static Class<Application> appClass = Application.class;
  25 }

src/main/java/hello/Greeting.java

   1 package hello;
   2 
   3 public class Greeting {
   4 
   5     private final long id;
   6     private final String content;
   7 
   8     public Greeting(long id, String content) {
   9         this.id = id;
  10         this.content = content;
  11     }
  12 
  13     public long getId() {
  14         return id;
  15     }
  16 
  17     public String getContent() {
  18         return content;
  19     }
  20 }

src/main/java/hello/GreetingController.java

   1 package hello;
   2 
   3 import java.util.concurrent.atomic.AtomicLong;
   4 import org.springframework.web.bind.annotation.RequestMapping;
   5 import org.springframework.web.bind.annotation.RequestParam;
   6 import org.springframework.web.bind.annotation.RestController;
   7 
   8 @RestController
   9 public class GreetingController {
  10 
  11     private static final String template = "Hello Tomcat, %s!";
  12     private final AtomicLong counter = new AtomicLong();
  13 
  14     @RequestMapping("/greetingTomcat")
  15     public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
  16         return new Greeting(counter.incrementAndGet(), String.format(template, name));
  17     }
  18 }

Build and deploy

  • mvn clean compile package install
  • cp target/gs-rest-service-tomcat-0.1.0.war /usr/local/tomcat/webapps/
  • cp target/gs-rest-service-tomcat-0.1.0.war /opt/apache-tomcat-7.0.53/webapps/ # in alternative
  • Open http://localhost:8080/gs-rest-service-tomcat-0.1.0/greetingTomcat

Spring MVC

Structure:

.
|-- pom.xml
|-- src
    `-- main
        |-- java
        |   `-- hello
        |       |-- Application.java
        |       `-- GreetingController.java
        `-- resources
            `-- templates
                `-- greeting.html
  • mkdir -p src/main/java/hello
  • mkdir -p src/main/resources/templates/
  • nano pom.xml

   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4     <modelVersion>4.0.0</modelVersion>
   5     <groupId>org.springframework</groupId>
   6     <artifactId>gs-serving-web-content</artifactId>
   7     <version>0.1.0</version>
   8     <parent>
   9         <groupId>org.springframework.boot</groupId>
  10         <artifactId>spring-boot-starter-parent</artifactId>
  11         <version>1.1.8.RELEASE</version>
  12     </parent>
  13     <dependencies>
  14         <dependency>
  15             <groupId>org.springframework.boot</groupId>
  16             <artifactId>spring-boot-starter-thymeleaf</artifactId>
  17         </dependency>
  18     </dependencies>
  19     <properties>
  20         <start-class>hello.Application</start-class>
  21     </properties>
  22     <build>
  23         <plugins>
  24             <plugin>
  25                 <groupId>org.springframework.boot</groupId>
  26                 <artifactId>spring-boot-maven-plugin</artifactId>
  27             </plugin>
  28         </plugins>
  29     </build>
  30     <repositories>
  31         <repository>
  32             <id>spring-milestone</id>
  33             <url>http://repo.spring.io/libs-release</url>
  34         </repository>
  35     </repositories>
  36     <pluginRepositories>
  37         <pluginRepository>
  38             <id>spring-milestone</id>
  39             <url>http://repo.spring.io/libs-release</url>
  40         </pluginRepository>
  41     </pluginRepositories>
  42 </project>
  • cd src/main/java/hello/
  • nano GreetingController.java

   1 package hello;
   2 
   3 import org.springframework.stereotype.Controller;
   4 import org.springframework.ui.Model;
   5 import org.springframework.web.bind.annotation.RequestMapping;
   6 import org.springframework.web.bind.annotation.RequestParam;
   7 
   8 @Controller
   9 public class GreetingController {
  10 
  11     @RequestMapping("/greeting")
  12     public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
  13         model.addAttribute("name", name);
  14         return "greeting";
  15     }
  16 
  17 }
  • nano src/main/resources/templates/greeting.html

   1 <!DOCTYPE HTML>
   2 <html xmlns:th="http://www.thymeleaf.org">
   3 <head>
   4     <title>Getting Started: Serving Web Content</title>
   5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   6 </head>
   7 <body>
   8     <p th:text="'Hello, ' + ${name} + '!'" />
   9 </body>
  10 </html>
  • nano src/main/java/hello/Application.java

   1 package hello;
   2 
   3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
   4 import org.springframework.boot.SpringApplication;
   5 import org.springframework.context.annotation.ComponentScan;
   6 
   7 @ComponentScan
   8 @EnableAutoConfiguration
   9 public class Application {
  10 
  11     public static void main(String[] args) {
  12         SpringApplication.run(Application.class, args);
  13     }
  14 
  15 }
  • mvn clean compile package install
  • java -jar target/gs-serving-web-content-0.1.0.jar
  • Open http://localhost:8080/greeting?name=Yooo

testSpringMVCJSP

Structure Maven:

.
|-- pom.xml
|-- src
|   `-- main
|       |-- java
|       |   `-- org
|       |       `-- allowed
|       |           `-- bitarus
|       |               `-- hello
|       |                   `-- HelloController.java
|       `-- webapp
|           `-- WEB-INF
|               |-- mvc-dispatcher-servlet.xml
|               |-- pages
|               |   `-- greeting.jsp
|               `-- web.xml

pom.xml

<?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>org.allowed.bitarus</groupId>
    <artifactId>testSpringMVCJSP</artifactId>
    <version>0.1.0</version>
    <packaging>war</packaging>

    <dependencies>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                        <version>4.1.4.RELEASE</version>
                </dependency>
 
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                        <version>4.1.4.RELEASE</version>
                </dependency>
 
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                        <version>4.1.4.RELEASE</version>
                </dependency>
    </dependencies>
</project>

HelloController.java

package org.allowed.bitarus.hello;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hellox(@RequestParam(value="name", required=false,  defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }

}

mvc-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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">
        <context:component-scan base-package="org.allowed.bitarus.hello" />
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix">
                        <value>/WEB-INF/pages/</value>
                </property>
                <property name="suffix">
                        <value>.jsp</value>
                </property>
        </bean>
</beans>

greeting.jsp

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p>Hello ${name}</p>
</body>
</html>

web.xml

<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>Spring MVC Application + JSP</display-name> 
        <servlet>
                <servlet-name>mvc-dispatcher</servlet-name>
                <servlet-class>
                       org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
                <servlet-name>mvc-dispatcher</servlet-name>
                <url-pattern>/</url-pattern>
        </servlet-mapping>
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
        </context-param>
        <listener>
                <listener-class>
                      org.springframework.web.context.ContextLoaderListener
                </listener-class>
        </listener>
</web-app>
  • mvn clean compile package
  • Access in Tomcat http://localhost:8081/testSpringMVCJSP-0.1.0/hello?name=asd

testSpringThymeleaf ( Spring MVC + Thymeleaf + Glassfish / JBoss )

Maven Structure

.
|-- pom.xml
|-- src
|   `-- main
|       |-- java
|       |   `-- org
|       |       `-- allowed
|       |           `-- bitarus
|       |               `-- hello
|       |                   `-- HelloController.java
|       `-- webapp
|           |-- WEB-INF
|           |   |-- mvc-dispatcher-servlet.xml
|           |   |-- pages
|           |   |   |-- greeting.html
|           |   |-- web.xml
|           |-- css
|           |   `-- bootstrap-3.3.2.min.css
|           `-- js
|               |-- bootstrap-3.3.2.min.js
|               |-- greeting.js
|               `-- jquery-1.11.2.min.js

pom.xml

   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
   3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   6     <modelVersion>4.0.0</modelVersion>
   7     <groupId>org.allowed.bitarus</groupId>
   8     <artifactId>testSpringMVCThymeleaf</artifactId>
   9     <version>0.1.0</version>
  10     <packaging>war</packaging>
  11     <dependencies>
  12         <dependency>
  13                 <groupId>org.springframework</groupId>
  14                 <artifactId>spring-core</artifactId>
  15                 <version>4.1.4.RELEASE</version>
  16         </dependency>
  17         <dependency>
  18                 <groupId>org.springframework</groupId>
  19                 <artifactId>spring-web</artifactId>
  20                 <version>4.1.4.RELEASE</version>
  21         </dependency>
  22         <dependency>
  23                 <groupId>org.springframework</groupId>
  24                 <artifactId>spring-webmvc</artifactId>
  25                 <version>4.1.4.RELEASE</version>
  26         </dependency>
  27         <dependency>
  28             <groupId>org.thymeleaf</groupId>
  29             <artifactId>thymeleaf-spring4</artifactId>
  30             <version>2.1.4.RELEASE</version>
  31         </dependency>
  32         <dependency>
  33             <groupId>org.slf4j</groupId>
  34             <artifactId>slf4j-api</artifactId>
  35             <version>1.7.10</version>
  36         </dependency>
  37         <dependency>
  38             <groupId>org.slf4j</groupId>
  39             <artifactId>slf4j-log4j12</artifactId>
  40             <version>1.7.10</version>
  41         </dependency>
  42     </dependencies>
  43 </project>

HelloController.java

   1 package org.allowed.bitarus.hello;
   2 
   3 import org.springframework.stereotype.Controller;
   4 import org.springframework.ui.Model;
   5 import org.springframework.web.bind.annotation.RequestMapping;
   6 import org.springframework.web.bind.annotation.RequestParam;
   7 
   8 @Controller
   9 public class HelloController {
  10 
  11     @RequestMapping("/hello")
  12     public String hellox(@RequestParam(value="name", required=false,  defaultValue="World") String name, Model model) {
  13         model.addAttribute("name", name);
  14         return "greeting";
  15     }
  16 
  17 }

mvc-dispatcher-servlet.xml

   1 <beans xmlns="http://www.springframework.org/schema/beans"
   2         xmlns:context="http://www.springframework.org/schema/context"
   3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4     xmlns:mvc="http://www.springframework.org/schema/mvc"
   5         xsi:schemaLocation="
   6         http://www.springframework.org/schema/beans     
   7         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   8         http://www.springframework.org/schema/context 
   9         http://www.springframework.org/schema/context/spring-context-3.0.xsd
  10         http://www.springframework.org/schema/mvc
  11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12         <context:component-scan base-package="org.allowed.bitarus.hello" />
  13    <!-- Enabling Spring MVC configuration through annotations -->
  14     <mvc:annotation-driven />
  15     <!--  Mapping Static Resources -->
  16     <mvc:resources mapping="/js/**" location="/js/" />
  17     <mvc:resources mapping="/css/**" location="/css/" />
  18     
  19     <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
  20         <property name="prefix" value="/WEB-INF/pages/" />
  21         <property name="suffix" value=".html" />
  22         <property name="templateMode" value="HTML5" />
  23         <property name="cacheable" value="false" />
  24         <property name="characterEncoding" value="UTF-8" />
  25     </bean>
  26     <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
  27         <property name="templateResolver" ref="templateResolver" />
  28     </bean>
  29     <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
  30         <property name="templateEngine" ref="templateEngine" />
  31         <property name="order" value="1" />
  32         <property name="characterEncoding" value="UTF-8" />
  33     </bean>    
  34 </beans>

greeting.html

   1 <!DOCTYPE HTML>
   2 <html xmlns:th="http://www.thymeleaf.org">
   3     <head>
   4         <title>Getting Started: Serving Web Content</title>
   5         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    
   6         <meta name="viewport" content="width=device-width, initial-scale=1"/>
   7         <script th:src="@{/js/jquery-1.11.2.min.js}"></script>
   8         <script th:src="@{/js/bootstrap-3.3.2.min.js}"></script>        
   9         <script th:src="@{/js/greeting.js}"></script>
  10         <link rel="stylesheet" th:href="@{/css/bootstrap-3.3.2.min.css}"/>        
  11     </head>
  12     <body>      
  13         <nav class="navbar navbar-default navbar-fixed-top">
  14               
  15         <div class="container">
  16         <ul class="nav navbar-nav" style="width: 100%;">
  17         <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
  18         <li><a href="#">Link</a></li>
  19         <li class="dropdown">
  20           <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
  21           <ul class="dropdown-menu" role="menu">
  22             <li><a href="#">Action</a></li>
  23             <li><a href="#">Another action</a></li>
  24           </ul>
  25         </li>
  26         </ul>                
  27             <h1>My First Bootstrap Page</h1>
  28             <p>This part is inside a .container class.</p> 
  29             <p>The .container class provides a responsive fixed width container.</p>           
  30             <p th:text="'Hello, ' + ${name} + '!'" />
  31             <div class="row">
  32                 <div class="col-sm-4">.col-sm-4</div>
  33                 <div class="col-sm-4">.col-sm-4</div>
  34                 <div class="col-sm-4">.col-sm-4</div>
  35             </div>            
  36             <div class="row">
  37                 <div class="col-md-4">.col-md-4</div>
  38                 <div class="col-md-4">.col-md-4</div>
  39                 <div class="col-md-4">.col-md-4</div>
  40             </div>
  41             
  42             <ul class="nav nav-tabs">
  43                 <li role="presentation" class="tabHome"><a href="#">Home</a></li>
  44                 <li role="presentation" class="tabProfile"><a href="#">Profile</a></li>
  45                 <li role="presentation" class="tabMessages"><a href="#">Messages</a></li>
  46             </ul>            
  47             
  48             <div class="panel panel-primary panelHome">
  49                 <div class="panel-heading">
  50                     <h3 class="panel-title">Panel home</h3>
  51                 </div>
  52                 <div class="panel-body">
  53                     This is a Basic panel home
  54                     <form role="form">
  55                         <div class="form-group">
  56                             <label for="email">Email address:</label>
  57                             <input type="email" class="form-control" id="email"/>
  58                         </div>
  59                         <div class="form-group">
  60                             <label for="pwd">Password:</label>
  61                             <input type="password" class="form-control" id="pwd"/>
  62                         </div>
  63                         <div class="checkbox">
  64                             <label><input type="checkbox"/> Remember me</label>
  65                         </div>
  66                         <button id="submitButton" type="submit" class="btn btn-default">Click to show modal</button>
  67                     </form>                    
  68                 </div>
  69             </div>
  70             <div class="panel panel-primary panelProfile">
  71                 <div class="panel-heading">
  72                     <h3 class="panel-title">Panel profile</h3>
  73                 </div>
  74                 <div class="panel-body">
  75                 </div>
  76             </div>
  77             <div class="panel panel-primary panelMessages">
  78                 <div class="panel-heading">
  79                     <h3 class="panel-title">Panel messages</h3>
  80                 </div>
  81                 <div class="panel-body">
  82                 </div>
  83             </div>
  84         </div>
  85         
  86 <div id="myModal" class="modal fade">
  87     <div class="modal-dialog">
  88         <div class="modal-content">
  89             <div class="modal-header">
  90                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  91                 <h4 class="modal-title">Confirmation</h4>
  92             </div>
  93             <div class="modal-body">
  94                 <p>Do you want to save changes you made to document before closing?</p>
  95                 <p class="text-warning"><small>If you don't save, your changes will be lost.</small></p>
  96             </div>
  97             <div class="modal-footer">
  98                 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  99                 <button type="button" class="btn btn-primary">Save changes</button>
 100             </div>
 101         </div>
 102     </div>
 103 </div>
 104         
 105         </nav>
 106     </body>
 107 </html>

web.xml

   1 <web-app id="WebApp_ID" version="2.4"
   2         xmlns="http://java.sun.com/xml/ns/j2ee" 
   3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   5         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   6     <display-name>Spring MVC Application + Thymeleaf</display-name> 
   7     <servlet>
   8         <servlet-name>mvc-dispatcher</servlet-name>
   9         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10         <load-on-startup>1</load-on-startup>
  11     </servlet>
  12     <servlet-mapping>
  13         <servlet-name>mvc-dispatcher</servlet-name>
  14         <url-pattern>/</url-pattern>
  15     </servlet-mapping>
  16     <context-param>
  17         <param-name>contextConfigLocation</param-name>
  18         <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
  19     </context-param>
  20 </web-app>

greeting.js

   1 $(document).ready(greetingReady);
   2 
   3 function greetingReady(){
   4     console.log("greeting ready !!!!");
   5     $('.tabHome').click(homeClicked);
   6     $('.tabProfile').click(profileClicked);
   7     $('.tabMessages').click(messagesClicked);
   8     
   9     $('.tabHome').addClass('active');
  10     $('.panelHome').show();
  11     $('.panelProfile').hide();
  12     $('.panelMessages').hide();
  13     
  14     $('.panel-heading').click(headingClicked);
  15     $('#submitButton').click(submitClicked);
  16 }
  17 
  18 function submitClicked(event){  
  19     $('#myModal').modal('show');    
  20 }
  21 
  22 function headingClicked(){
  23     $('.panel-body').toggle();
  24 }
  25 
  26 function homeClicked(event){
  27     event.preventDefault();
  28     event.stopPropagation();
  29     $('.panelHome').show();
  30     $('.panelProfile').hide();
  31     $('.panelMessages').hide();
  32     $('.tabHome').addClass('active');
  33     $('.tabProfile').removeClass('active');
  34     $('.tabMessages').removeClass('active');
  35 }
  36     
  37 function profileClicked(event){
  38     event.preventDefault();
  39     event.stopPropagation();
  40     $('.panelHome').hide();
  41     $('.panelProfile').show();
  42     $('.panelMessages').hide();    
  43     $('.tabHome').removeClass('active');
  44     $('.tabProfile').addClass('active');
  45     $('.tabMessages').removeClass('active');
  46 }
  47 
  48 function messagesClicked(event){
  49     event.preventDefault();
  50     event.stopPropagation();
  51     $('.panelHome').hide();
  52     $('.panelProfile').hide();
  53     $('.panelMessages').show();    
  54     $('.tabHome').removeClass('active');
  55     $('.tabProfile').removeClass('active');
  56     $('.tabMessages').addClass('active');
  57 }
  • mvn clean compile package
  • Access in Tomcat http://localhost:8081/testSpringMVCThymeleaf-0.1.0/hello?name=agh

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01