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

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Revision 19 as of 2015-02-13 23:27:35
  • 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 + Bootstrap + JQuery + Tomcat )

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
  • Deploy in Tomcat listening in 8081. Access in Tomcat http://localhost:8081/testSpringMVCThymeleaf-0.1.0/hello?name=agh

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