当前位置:   article > 正文

Gradle – Spring 4 MVC Hello World示例

gradle spring hello word
gradle-spring-logo

在本教程中,我们将向您展示Gradle + Spring 4 MVC,Hello World示例(JSP视图),XML配置。

使用的技术:

  1. Gradle 2.0
  2. 春天4.1.6.RELEASE
  3. Eclipse 4.4
  4. JDK 1.7
  5. 登入1.1.3
  6. Boostrap 3

1.项目结构

下载项目源代码并查看项目文件夹结构:

spring4-mvc-gradle-project

2. Gradle构建

2.1查看build.gradle文件,这应该是不言自明的。

build.gradle
  1. apply plugin: 'java'
  2. apply plugin: 'war'
  3. apply plugin: 'eclipse-wtp'
  4. apply plugin: 'jetty'
  5. // JDK 7
  6. sourceCompatibility = 1.7
  7. targetCompatibility = 1.7
  8. repositories {
  9. mavenLocal()
  10. mavenCentral()
  11. }
  12. dependencies {
  13. compile 'ch.qos.logback:logback-classic:1.1.3'
  14. compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
  15. compile 'javax.servlet:jstl:1.2'
  16. }
  17. // Embeded Jetty for testing
  18. jettyRun{
  19. contextPath = "spring4"
  20. httpPort = 8080
  21. }
  22. jettyRunWar{
  23. contextPath = "spring4"
  24. httpPort = 8080
  25. }
  26. //For Eclipse IDE only
  27. eclipse {
  28. wtp {
  29. component {
  30. //define context path, default to project folder name
  31. contextPath = 'spring4'
  32. }
  33. }
  34. }

2.2为了使该项目支持Eclipse IDE,发出gradle eclipse

your-project$ gradle eclipse

3. Spring MVC

Spring MVC相关的东西。

3.1 Spring Controller – @Controller@RequestMapping

WelcomeController.java
  1. package com.mkyong.helloworld.web;
  2. import java.util.Map;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.PathVariable;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.servlet.ModelAndView;
  11. import com.mkyong.helloworld.service.HelloWorldService;
  12. @Controller
  13. public class WelcomeController {
  14. private final Logger logger = LoggerFactory.getLogger(WelcomeController.class);
  15. private final HelloWorldService helloWorldService;
  16. @Autowired
  17. public WelcomeController(HelloWorldService helloWorldService) {
  18. this.helloWorldService = helloWorldService;
  19. }
  20. @RequestMapping(value = "/", method = RequestMethod.GET)
  21. public String index(Map<String, Object> model) {
  22. logger.debug("index() is executed!");
  23. model.put("title", helloWorldService.getTitle(""));
  24. model.put("msg", helloWorldService.getDesc());
  25. return "index";
  26. }
  27. @RequestMapping(value = "/hello/{name:.+}", method = RequestMethod.GET)
  28. public ModelAndView hello(@PathVariable("name") String name) {
  29. logger.debug("hello() is executed - $name {}", name);
  30. ModelAndView model = new ModelAndView();
  31. model.setViewName("index");
  32. model.addObject("title", helloWorldService.getTitle(name));
  33. model.addObject("msg", helloWorldService.getDesc());
  34. return model;
  35. }
  36. }

3.2生成消息的服务。

HelloWorldService.java
  1. package com.mkyong.helloworld.service;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.util.StringUtils;
  6. @Service
  7. public class HelloWorldService {
  8. private static final Logger logger = LoggerFactory.getLogger(HelloWorldService.class);
  9. public String getDesc() {
  10. logger.debug("getDesc() is executed!");
  11. return "Gradle + Spring MVC Hello World Example";
  12. }
  13. public String getTitle(String name) {
  14. logger.debug("getTitle() is executed! $name : {}", name);
  15. if(StringUtils.isEmpty(name)){
  16. return "Hello World";
  17. }else{
  18. return "Hello " + name;
  19. }
  20. }
  21. }

3.3视图– JSP + JSTL +引导程序。 一个简单的JSP页面来显示模型,并包含诸如CSS和JS之类的静态资源。

/WEB-INF/views/jsp/index.jsp
  1. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <title>Gradle + Spring MVC</title>
  7. <spring:url value="/resources/core/css/hello.css" var="coreCss" />
  8. <spring:url value="/resources/core/css/bootstrap.min.css" var="bootstrapCss" />
  9. <link href="${bootstrapCss}" rel="stylesheet" />
  10. <link href="${coreCss}" rel="stylesheet" />
  11. </head>
  12. <nav class="navbar navbar-inverse navbar-fixed-top">
  13. <div class="container">
  14. <div class="navbar-header">
  15. <a class="navbar-brand" href="#">Project Name</a>
  16. </div>
  17. </div>
  18. </nav>
  19. <div class="jumbotron">
  20. <div class="container">
  21. <h1>${title}</h1>
  22. <p>
  23. <c:if test="${not empty msg}">
  24. Hello ${msg}
  25. </c:if>
  26. <c:if test="${empty msg}">
  27. Welcome Welcome!
  28. </c:if>
  29. </p>
  30. <p>
  31. <a class="btn btn-primary btn-lg"
  32. href="#" role="button">Learn more</a>
  33. </p>
  34. </div>
  35. </div>
  36. <div class="container">
  37. <div class="row">
  38. <div class="col-md-4">
  39. <h2>Heading</h2>
  40. <p>ABC</p>
  41. <p>
  42. <a class="btn btn-default" href="#" role="button">View details</a>
  43. </p>
  44. </div>
  45. <div class="col-md-4">
  46. <h2>Heading</h2>
  47. <p>ABC</p>
  48. <p>
  49. <a class="btn btn-default" href="#" role="button">View details</a>
  50. </p>
  51. </div>
  52. <div class="col-md-4">
  53. <h2>Heading</h2>
  54. <p>ABC</p>
  55. <p>
  56. <a class="btn btn-default" href="#" role="button">View details</a>
  57. </p>
  58. </div>
  59. </div>
  60. <hr>
  61. <footer>
  62. <p>&copy; Mkyong.com 2015</p>
  63. </footer>
  64. </div>
  65. <spring:url value="/resources/core/css/hello.js" var="coreJs" />
  66. <spring:url value="/resources/core/css/bootstrap.min.js" var="bootstrapJs" />
  67. <script src="${coreJs}"></script>
  68. <script src="${bootstrapJs}"></script>
  69. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  70. </body>
  71. </html>

3.4日志记录–将所有日志发送到控制台。

logback.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  4. <layout class="ch.qos.logback.classic.PatternLayout">
  5. <Pattern>
  6. %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
  7. </Pattern>
  8. </layout>
  9. </appender>
  10. <logger name="org.springframework" level="debug"
  11. additivity="false">
  12. <appender-ref ref="STDOUT" />
  13. </logger>
  14. <logger name="com.mkyong.helloworld" level="debug"
  15. additivity="false">
  16. <appender-ref ref="STDOUT" />
  17. </logger>
  18. <root level="debug">
  19. <appender-ref ref="STDOUT" />
  20. </root>
  21. </configuration>

4. Spring XML配置

Spring XML配置文件。

4.1 Spring根上下文。

spring-core-config.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.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd ">
  10. <context:component-scan base-package="com.mkyong.helloworld.service" />
  11. </beans>

4.2 Spring Web或Servlet上下文。

spring-web-config.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.xsd
  8. http://www.springframework.org/schema/mvc
  9. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context.xsd ">
  12. <context:component-scan base-package="com.mkyong.helloworld.web" />
  13. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  14. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  15. <property name="prefix" value="/WEB-INF/views/jsp/" />
  16. <property name="suffix" value=".jsp" />
  17. </bean>
  18. <mvc:resources mapping="/resources/**" location="/resources/" />
  19. <mvc:annotation-driven />
  20. </beans>

4.3经典web.xml

web.xml
  1. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  4. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. version="2.5">
  6. <display-name>Gradle + Spring MVC Hello World + XML</display-name>
  7. <description>Spring MVC web application</description>
  8. <!-- For web context -->
  9. <servlet>
  10. <servlet-name>hello-dispatcher</servlet-name>
  11. <servlet-class>
  12. org.springframework.web.servlet.DispatcherServlet
  13. </servlet-class>
  14. <init-param>
  15. <param-name>contextConfigLocation</param-name>
  16. <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
  17. </init-param>
  18. <load-on-startup>1</load-on-startup>
  19. </servlet>
  20. <servlet-mapping>
  21. <servlet-name>hello-dispatcher</servlet-name>
  22. <url-pattern>/</url-pattern>
  23. </servlet-mapping>
  24. <!-- For root context -->
  25. <listener>
  26. <listener-class>
  27. org.springframework.web.context.ContextLoaderListener
  28. </listener-class>
  29. </listener>
  30. <context-param>
  31. <param-name>contextConfigLocation</param-name>
  32. <param-value>/WEB-INF/spring-core-config.xml</param-value>
  33. </context-param>
  34. </web-app>

5.演示

5.1 gradle.build文件定义为嵌入式Jetty容器。 gradle jettyRun启动项目。

Terminal
  1. your-project$ gradle jettyRun
  2. :compileJava
  3. :processResources
  4. :classes
  5. :jettyRun
  6. //...SLF4j logging
  7. > Building 75% > :jettyRun > Running at http://localhost:8080/spring4

5.2 http:// localhost:8080 / spring4 /

春天4-mvc-gradle-demo1

5.3 http:// localhost:8080 / spring4 / hello / mkyong.com

spring4-mvc-gradle-demo2

6. WAR文件

要创建用于部署的WAR文件:

Terminal
your-project$ gradle war

将在project\build\libs文件夹中创建一个WAR文件。

${Project}\build\libs\spring-web-gradle-xml.war

下载源代码

下载它– spring4-mvc-gradle-xml.zip (61 KB)

Github链接– spring4-mvc-gradle-xml-hello-world.git

参考文献

  1. Spring Web MVC参考
  2. Gradle – EclipseWtp
  3. Gradle – Eclipse插件
  4. Gradle –战争插件
  5. Gradle –码头插件

翻译自: https://mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/305869
推荐阅读
相关标签
  

闽ICP备14008679号