- gradle-2.2.1-all.zip
- Spring 4.0.6.RELEASE
- STS
Step 1. Add Gradle plugin to STS IDE
Step 2. Create Project Structure for Dynamic Web Project As following.
Step 3. Gradle Build File
Build.gradle
apply plugin: 'java' apply plugin: 'war' apply plugin: 'eclipse' repositories { mavenCentral() } dependencies { providedCompile 'javax.servlet:servlet-api:2.5' compile 'org.springframework:spring-webmvc:4.0.0.RELEASE' compile 'org.thymeleaf:thymeleaf-spring4:2.1.4.RELEASE' compile 'org.thymeleaf:thymeleaf:2.1.4.RELEASE' runtime 'javax.servlet:jstl:1.1.2' }
Step 4. Go to the project folder, same level with build.gradle, issue the following command :
$ gradle cleanEclipse eclipse
Now, you can import the project into STS IDE.
or
Step 4. Right click on the project and goto the configure and click convert gradle project.
Step 5. Spring MVC Files Code
HomeController.java
package com.doj.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value="/", method = RequestMethod.GET) public String printWelcome(ModelMap model) { model.addAttribute("message", "Spring 4 MVC Hello Gradle World!!! This is a Thymeleaf template "); return "home"; } }
home.jsp
<html> <body> <h1>Message : ${message}</h1> </body> </html>
mygradleapp-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.doj.controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/view/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>mygradleapp</display-name> <servlet> <servlet-name>mygradleapp</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mygradleapp</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Step 6: Run It
Start and deploy above web project.
http://localhost:8080/mygradleapp/
Step 7. Create WAR File
Clean and build a WAR file with the following command :
$ gradle clean build
:clean
:compileJava
:processResources
:classes
:war
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 4.012 secs
The generated WAR file is located at the buildlibs folder.
${Project}buildlibsmygradleapp.war
Download Source Code
JSP is long gone anyways and not being actively developed. JEE uses JSF as view technology now.
I tried Thymeleaf on couple of pet projects, and it amazed me with the simplicity and modularity. You can always write your own dialects to implement custom tags. It fits very well with spring ecosystem.
On the other hand, it's still not complete in my openion specially lack of out of the box decorating support.
Better to avoid Thymeleaf with AngularJS reason being it's not required.
Thanks Ashay for keep your point of view. It help to other making decision to choose view technologies in the projects. Thanks!!!!
can u post Cache design pattern with best approach
while I was running this code on wildfly 14 I was getting forbidden error. Could you please help.