文档章节

intellij idea 中使用 gradle 创建 spring mvc 程序

小代码2016
 小代码2016
发布于 2016/03/21 11:51
字数 1180
阅读 2105
收藏 2
点赞 1
评论 0

目录结构及源码:

目录结构

laolang@laolang-Lenovo-G470:~/code/idea/smvcthree$ tree
.
├── build.gradle
├── settings.gradle
├── smvcthree.iml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── mkyong
    │   │           └── helloworld
    │   │               ├── service
    │   │               │   └── HelloWorldService.java
    │   │               └── web
    │   │                   └── WelcomeController.java
    │   ├── resources
    │   │   └── logback.xml
    │   └── webapp
    │       ├── resources
    │       │   └── core
    │       │       ├── css
    │       │       │   ├── bootstrap.min.css
    │       │       │   └── hello.css
    │       │       ├── images
    │       │       └── js
    │       │           ├── bootstrap.min.js
    │       │           └── hello.js
    │       └── WEB-INF
    │           ├── lib
    │           │   ├── aopalliance-1.0.jar
    │           │   ├── commons-logging-1.2.jar
    │           │   ├── jstl-1.2.jar
    │           │   ├── logback-classic-1.1.3.jar
    │           │   ├── logback-core-1.1.3.jar
    │           │   ├── slf4j-api-1.7.7.jar
    │           │   ├── spring-aop-4.1.6.RELEASE.jar
    │           │   ├── spring-beans-4.1.6.RELEASE.jar
    │           │   ├── spring-context-4.1.6.RELEASE.jar
    │           │   ├── spring-core-4.1.6.RELEASE.jar
    │           │   ├── spring-expression-4.1.6.RELEASE.jar
    │           │   ├── spring-web-4.1.6.RELEASE.jar
    │           │   └── spring-webmvc-4.1.6.RELEASE.jar
    │           ├── spring-core-config.xml
    │           ├── spring-mvc-config.xml
    │           ├── views
    │           │   └── jsp
    │           │       └── index.jsp
    │           └── web.xml
    └── test
        ├── java
        └── resources

22 directories, 27 files
laolang@laolang-Lenovo-G470:~/code/idea/smvcthree$



build.gralde


laolang@laolang-Lenovo-G470:~/code/idea/smvcthree$ cat build.gradle 
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply plugin: 'jetty'

// JDK 7
sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'ch.qos.logback:logback-classic:1.1.3'
    compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
    compile 'javax.servlet:jstl:1.2'
}

// Embeded Jetty for testing
jettyRun{
    contextPath = "spring4"
    httpPort = 8080
}

jettyRunWar{
    contextPath = "spring4"
    httpPort = 8080
}

task copyJars(type: Copy) {
    from configurations.compile
    into 'src/main/webapp/WEB-INF/lib' // 目标位置
}laolang@laolang-Lenovo-G470:~/code/idea/smvcthree$

HelloWorldService.java



package com.mkyong.helloworld.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class HelloWorldService {

    private static final Logger logger = LoggerFactory.getLogger(HelloWorldService.class);

    public String getDesc() {

        logger.debug("getDesc() is executed!");

        return "Gradle + Spring MVC Hello World Example";

    }

    public String getTitle(String name) {

        logger.debug("getTitle() is executed! $name : {}", name);

        if(StringUtils.isEmpty(name)){
            return "Hello World";
        }else{
            return "Hello " + name;
        }

    }

}

WelcomeController.java



package com.mkyong.helloworld.web;

import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.mkyong.helloworld.service.HelloWorldService;

@Controller
public class WelcomeController {

    private final Logger logger = LoggerFactory.getLogger(WelcomeController.class);
    private final HelloWorldService helloWorldService;

    @Autowired
    public WelcomeController(HelloWorldService helloWorldService) {
        this.helloWorldService = helloWorldService;
    }

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Map<String, Object> model) {

        logger.debug("index() is executed!");

        model.put("title", helloWorldService.getTitle(""));

        model.put("msg", helloWorldService.getDesc());

        return "index";
    }

    @RequestMapping(value = "/hello/{name:.+}", method = RequestMethod.GET)
    public ModelAndView hello(@PathVariable("name") String name) {

        logger.debug("hello() is executed - $name {}", name);

        ModelAndView model = new ModelAndView();
        model.setViewName("index");

        model.addObject("title", helloWorldService.getTitle(name));
        model.addObject("msg", helloWorldService.getDesc());

        return model;

    }

}




logback.xml


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

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">

            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>

        </layout>
    </appender>

    <logger name="org.springframework" level="debug"
            additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="com.mkyong.helloworld" level="debug"
            additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

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

    <context:component-scan base-package="com.mkyong.helloworld.service" />

</beans>

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

    <context:component-scan base-package="com.mkyong.helloworld.web" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <mvc:resources mapping="/resources/**" location="/resources/" />

    <mvc:annotation-driven />

</beans>

index.jsp



<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Gradle + Spring MVC</title>

    <spring:url value="/resources/core/css/hello.css" var="coreCss" />
    <spring:url value="/resources/core/css/bootstrap.min.css" var="bootstrapCss" />
    <link href="${bootstrapCss}" rel="stylesheet" />
    <link href="${coreCss}" rel="stylesheet" />
</head>

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <a class="navbar-brand" href="#">Project Name</a>
        </div>
    </div>
</nav>

<div class="jumbotron">
    <div class="container">
        <h1>${title}</h1>
        <p>
            <c:if test="${not empty msg}">
            Hello ${msg}
            </c:if>

            <c:if test="${empty msg}">
            Welcome Welcome!
            </c:if>
        <p>
            <a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a>
        </p>
    </div>
</div>

<div class="container">

    <div class="row">
        <div class="col-md-4">
            <h2>Heading</h2>
            <p>ABC</p>
            <p>
                <a class="btn btn-default" href="#" role="button">View details</a>
            </p>
        </div>
        <div class="col-md-4">
            <h2>Heading</h2>
            <p>ABC</p>
            <p>
                <a class="btn btn-default" href="#" role="button">View details</a>
            </p>
        </div>
        <div class="col-md-4">
            <h2>Heading</h2>
            <p>ABC</p>
            <p>
                <a class="btn btn-default" href="#" role="button">View details</a>
            </p>
        </div>
    </div>


    <hr>
    <footer>
        <p>&copy; Mkyong.com 2015</p>
    </footer>
</div>

<spring:url value="/resources/core/css/hello.js" var="coreJs" />
<spring:url value="/resources/core/css/bootstrap.min.js" var="bootstrapJs" />

<script src="${coreJs}"></script>
<script src="${bootstrapJs}"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

</body>
</html>

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <display-name>Gradle + Spring MVC Hello World + XML</display-name>
    <description>Spring MVC web application</description>

    <!-- For web context -->
    <servlet>
        <servlet-name>hello-dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>hello-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- For root context -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-core-config.xml</param-value>
    </context-param>

</web-app>


来源:

这个例子的源码来自:

http://www.mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example/#

不过原文中有一个错误,那就是spring-web-config.xml应该改为spring-mvc-config.xml

原文中提供了下载地址

https://github.com/mkyong/spring4-mvc-gradle-xml-hello-world

还有就是build.gradle是正确的,但是如果你就这样导入idea,会有错误提示,所以还需要处理idea的jar包问题,这个问题的解决参考自:

http://www.cnblogs.com/wenjingu/p/3822989.html

idea导入jar包参考自:

http://www.cnblogs.com/lonelyxmas/archive/2011/07/17/2108895.html


具体操作步骤:

1、idea中新建好gradle项目,并把各部分代码按照正确的位置copy进去

2、在命令行中运行:

gradle build

gradle copyJars

这一步的目的是把所需要的jar提取出来,放到WEB-INF/lib中,当然,在idea中,你在这个目录中放入jar包是没有用的,不过这不是问题

3、idea导入jar包

idea中导入jar包是和eclipse不同的,这个我已经说明的所参考的地方

4、运行项目

gradle jettyRun

5、一些注意事项

1、网速要快  2、网络要稳定  3、要有耐心


© 著作权归作者所有

共有 人打赏支持
小代码2016
粉丝 35
博文 311
码字总数 153495
作品 0
安阳
程序员
IntelliJ IDEA 2018.2 EAP 发布,支持 Touch Bar

IntelliJ IDEA 2018.2 EAP 已发布:包含对 MacBook Touch Bar 的支持,对 Gradle 支持的改进,新图标,Spring Boot 及一些更新。 支持 Touch Bar 即将推出的 IntelliJ IDEA 2018.2 引入了 To...

达尔文 ⋅ 05/18 ⋅ 0

IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

温馨提示:本教程的 GitHub 地址为「intellij-idea-tutorial」,欢迎感兴趣的童鞋、,纠错。 在「详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法」一文中,我们已经将 Intell...

qq_35246620 ⋅ 04/23 ⋅ 0

Spring Boot干货系列: (一)优雅的入门篇

     前言   Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备。   正文   首先声明,Spr...

后端编程嘟 ⋅ 2017/03/12 ⋅ 0

IntelliJ IDEA 2018.1.4 发布,带来大量实用改进

IntelliJ IDEA 2018.1.4 已发布,该版本包含一些实用的改进,可通过下载或 Toolbox App 获取更新。 在 IntelliJ IDEA 中,你可以为每个运行配置指定正在运行的应用使用的目录,可以直接输入它...

淡漠悠然 ⋅ 05/22 ⋅ 0

IntelliJ IDEA 2018.1.3 发布,错误修复和小改进

IntelliJ IDEA 2018.1.3 已发布,该版本带来了一些错误修复和小改进,可通过 Toolbox App 获取更新。 现在,你可以在 Run/Debug 配置下拉菜单中预览 Run Configuration 的全名(默认为 80 个...

局长 ⋅ 05/09 ⋅ 0

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

02:WebFlux 快速入门实践 ## Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot (Boot 顾名思义,是引导的意思)框架是用于简化 Spring 应用从...

泥沙砖瓦浆木匠 ⋅ 04/15 ⋅ 0

小白用IntelliJ IDEA无脑搭建Spring Boot工程

这里不讲解什么是spring,什么是spring boot。只需要知道这是一个目前比较流行的java后端框架,而作为入门者,前期只需要依葫芦画瓢,利用idea搭建spring boot 的hello world工程。 01 Intel...

Sunny玄子 ⋅ 05/20 ⋅ 0

基于 Spring Boot 的个人博客 - FS-Blog

基于 Spring Boot 的个人博客 1. 涉及技术及工具 核心框架:SpringBoot ORM 框架:MyBatis MyBatis 工具:MyBatis Mapper MVC 框架:Spring MVC 模板引擎:Freemarker 编译辅助插件:Lombok ...

摆码王子 ⋅ 04/25 ⋅ 0

IntelliJ IDEA 2018.1.2 发布,改进对 Spring Boot 的支持

IntelliJ IDEA 2018.1.2 已发布,这是 IntelliJ IDEA 2018.1 系列的第二次小更新。 针对 IntelliJ IDEA 2018.1 推出的新功能 partial Git commits ,新版本做了几个修复和完善: Fix for wr...

王练 ⋅ 04/25 ⋅ 1

Spring Boot干货系列:(十)开发常用的热部署方式汇总

文章来源:点击打开链接 前言 平时开发Sprig Boot的时候,经常改动个小小的地方就要重新启动项目,这无疑是一种很差的体验。在此,博主收集了3种热部署的方案供大家选择。 正文 目前博主用过...

u012843873 ⋅ 05/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 58分钟前 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部