Gradle-创建 IDEA SpringMvc Web项目

1.创建 Gradle Java 项目

1.new projectGradle—选择对应SDKJavaNext
 选择gradle项目,自己环境中的SDK(最低版本为JDK1.8),创建JAVA项目。

new project1.png


2.输入GroupId—输入artifictIdNext
 输入groupId,命名请遵循相应命名规范。公司-com;组织-org;个人-pers。

new project1.png


3.选择Use auto-import—选择Use local gradle distributionNext
 选择自动导入,使用本地gradle环境,选择后会自动出现本地配置的GRADLE_HOME路径,然后选择本地的jdk配置即可。

new project3.png


4.输入Project name—选择Project locationFinish
 输入项目名称,选择相对应的项目存储路径,点击Finish,一个gradle java项目创建完成。

new project4.png


5.看到项目中出现文件build.gradle并且Build:Sync无异常,说明gradle java项目已创建成功。

gradle java.png


6.点击filesettingsBuild,Excution,deploymentBuild ToolsGradle—选择Offline
 将gradle设置为离线工作模式,并且可查看到 service directory pathGRADLE_USER_HOME路径,该路径为gradle jar包存放地址。

setting.png


2.Gradle build.gradle配置文件介绍

//创建项目输入groupId
group 'pers.gradle'
//创建项目所输入的版本
version '1.0-SNAPSHOT'
//指定运行环境,java
apply plugin: 'java'
//指定为java web项目
apply plugin: 'war'
//jdk的版本,1.8
sourceCompatibility = 1.8
/**
 * 指定所使用仓库的路径
 * mavenCentral(),中央仓库,项目中所使用的jar包都会从中央仓库下载到本地仓库。
 *                 若本地仓库已经拥有相应的jar包,则不会重复下载
 *                 可以使用命令maven { url "http://maven.aliyun.com/nexus/content/groups/public" }指定maven的远程仓库地址
 * mavenLocal()本地仓库,与GRADLE_USER_HOME配置的路径一致。
 * */
repositories {
    mavenLocal()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
    mavenCentral()
}
/**
 * gradle所有的jar包文件坐标都在dependencies属性内放置
 * 每一个jar包都具备以下特点
 * 1.scope(作用域):gradle支持compile、runtime、testCompile、testRuntime四种scope
 *   compile:jar包在编译期与运行期依赖。
 *   runtime:jar包在运行期依赖。
 *   testCompile:jar包在测试编译期与运行期依赖。
 *   testRuntime:jar包在测试运行期依赖。
 *   补充:
 *   providedCompile:jar包/依赖代码 仅在编译的时候需要,但是在运行时不需要依赖。
 *   providedCompile与compile,runtime区别:
 *   compile: 前提:apply plugin: 'war'或者apply plugin: 'java'
 *   providedCompile:前提:apply plugin: 'war',若前提为'java',则使用compileOnly
 *   runtime:前提:apply plugin: 'war'
 *   以上所说的前提,如果不正确配置的话,就会遇到依赖包无法导入,以及runtime以及providedCompile无法使用的情况。
 * 2. group:与maven的groupId一致。
 *    name:与maven的artifactId一致。
 *    version:与maven的version一致。
 */
dependencies {
    //gradle jar包坐标可以访问,maven中央仓库[https://mvnrepository.com],找到相对应的jar包,选择[gradle]选项卡,复制该地址即可。
    //引入spring依赖
    compile group: 'org.springframework', name: 'spring-context', version: '5.1.5.RELEASE'
    //引入spring-web依赖
    compile group: 'org.springframework', name: 'spring-web', version: '5.1.5.RELEASE'
    //引入spring-webmvc依赖
    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.5.RELEASE'
    //引入servlet依赖
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
    //引入jsp依赖
    providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
    //引入lombok依赖
    //@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
    providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.2'

}


3.Gradle settings.gradle配置文件介绍

//根项目名称
rootProject.name = 'gradle-web'


4.Gradle 项目结构

project structure.png

5.Gradle JAVA SpringMvc Web项目

1.model文件夹下编写实体类User.java

package pers.gradle.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 用户信息实体
 * @Data 添加getter、setter方法
 * @NoArgsConstructor 添加无参构造器
 * @AllArgsConstructor 添加全参构造器
 * @AllArgsConstructor 添加链式调用
 * @ToString 添加toString
 * @author Leo
 * @date 11:53 2019/5/17
 * @param
 * @return
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
public class User {
    private Long id;
    private String name;
    private Integer age;
}

2.service文件夹下编写接口类UserService.java

package pers.gradle.service;

import pers.gradle.model.User;

import java.util.List;

/**
 * 用户信息service
 * @author Leo
 * @date 10:37 2019/5/22
**/
public interface UserService {
    /**
     * getUserList() 获取User列表
     * @author Leo
     * @date 10:27 2019/5/22
     * @return java.util.List<pers.gradle.model.User>
    **/
    List<User> getUserList();
}


3.service文件夹下编写接口实现类UserServiceImpl.java

package pers.gradle.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;
import pers.gradle.dao.UserDao;
import pers.gradle.model.User;

import java.util.List;

/**
 * 用户信息service实现
 * @author Leo
 * @date 13:25 2019/5/22
**/
@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;
    @Override
    public List<User> getUserList() {
        return userDao.getUserList();
    }
}


4.dao文件夹下编写接口类UserDao.java

package pers.gradle.dao;

import org.springframework.stereotype.Repository;
import pers.gradle.model.User;

import java.util.List;

/**
 * 用户信息dao
 * @author Leo
 * @date 13:25 2019/5/22
**/
@Repository
public interface UserDao {
    /**
     * getUserList() 获取用户信息列表
     * @author Leo
     * @date  2019/5/22
     * @return java.util.List<pers.gradle.model.User>
     **/
    List<User> getUserList();
}

5.dao文件夹下编写接口实现类UserDaoImpl.java

package pers.gradle.dao;

import org.springframework.stereotype.Component;
import pers.gradle.model.User;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户信息dao实现类
 * @author Leo
 * @date 13:23 2019/5/22
 * @param
 * @return
**/
@Component
public class UserDaoImpl implements UserDao {


    @Override
    public List<User> getUserList() {
        List<User> userList=new ArrayList<>();
        User userZs=new User().setId(1L).setName("张三").setAge(18);
        userList.add(userZs);
        User userLs=new User().setId(2L).setName("李四").setAge(20);
        userList.add(userLs);
        User userWw=new User().setId(3L).setName("王五").setAge(30);
        userList.add(userWw);
        return userList;
    }
}


6.controller文件夹下编写类UserController.java

package pers.gradle.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pers.gradle.model.User;
import pers.gradle.service.UserService;

import java.util.List;

/**
 * 获取用户列表
 * @author Leo
 * @date 18:48 2019/5/22
**/
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    /**
     * getUserList()
     * @author Leo
     * @date 18:49 2019/5/22
     * @param model
     * @return java.lang.String
    **/
    @RequestMapping("/list")
    public String toList(Model model){
        List<User> users=userService.getUserList();
        model.addAttribute("users",users);
        return "list";
    }
}

7.webpages文件夹下编写页面list.jsp

<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2019/5/22
  Time: 18:50
  To change this template use File | Settings | File Templates.
--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--引入jstl标签-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>用户列表</title>

    <!-- 表格样式-->
    <style type="text/css">
        table.gridtable {
            font-family: verdana,arial,sans-serif;
            font-size:11px;
            color:#333333;
            border: 1px #666666;
            border-collapse: collapse;
        }
        table.gridtable th {
            padding: 8px;
            border: 1px solid #666666;
            background-color: #dedede;
        }
        table.gridtable td {
            padding: 8px;
            border: 1px solid #666666;
            background-color: #ffffff;
        }
    </style>
</head>
<body>
<div>
<table class="gridtable">
    <tr>
        <th>id</th>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <!--循环输入表格内容-->
    <c:forEach items="${users}" var="user">
    <tr>
        <td>${user.id}</td>
        <td>${user.name}</td>
        <td>${user.age}</td>
    </tr>
    </c:forEach>
</table>
</div>
</body>
</html>


8.resources文件夹下编写配置文件springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置组件扫描-->
    <context:component-scan base-package="pers.gradle"/>
    <!--处理器映射器,处理器解析器-->
    <mvc:annotation-driven />
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--视图所在文件路径-->
        <property name="prefix" value="/WEB-INF/webpages/" />
        <!--视图文件类型-->
        <property name="suffix" value=".jsp" />
    </bean>

    <!--静态资源释放-->
    <mvc:default-servlet-handler />

</beans>

9.WEB-INF文件夹下编写配置文件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">

    <!--配置springmvc核心servlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

10.配置TomcatWeb服务器。

tomcat-1.png

 1.点击红框所标注地方Edit configuration...配置tomcat,若无tomcat,请点击链接前往官网进行下载。(=゚ω゚)ノ ---===≡≡≡给你链接tomcat


tomcat-2.png

 2.点击+往下找到Tomcat Server选择Local
tomcat-3.png


 3.点击Deployment,弹出图片所显示界面,点击+Fix选择artifict,弹出下图所显示内容。

tomcat-4.png


 4.选择包含(exploded)内容的war包即可。

tomcat-5.png


 4.输入tomcatNameweb-8081
 勾选启动完成后是否自动打开index.jsp页面。
 域名链接,http://localhost:8081/
On update action:选择Update classes and resources,当发现更新时的操作,自动更新classes目录及resource目录下内容。
On frame deactivation: 选择Update classes and resources,当IDEA 切换时的操作 (比如缩下去、打开网页等),自动更新classes目录及resource目录下内容。
 以上两个选项可以在当jsp页面修改时,会自动在网页更新相关内容。
HTTP port :8081 Http服务端口号。
JMX port :8081管理工具和平台服务端口号。


tomcat-6.png

 若配置成功,界面显示如图。


tomcat-7.png

 若配置失败,界面显示如图。


11.启动TomcatWeb服务器。

tomcat-run.png

 点击红色方框三角形图标启动服务。
tomcat-run-success.png

 启动成功,如上图所示。若失败,请检查相应错误代码块,或者tomcat配置情况。


12.访问list.jsp页面。
 浏览器输入http://localhost:8081/user/list访问list.jsp页面。显示出用户信息列表,如图。

list.png


6.Github地址

gradle-springmvc-web←戳这里.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容