Gradle-創(chuàng)建 IDEA SpringMvc Web項(xiàng)目

1.創(chuàng)建 Gradle Java 項(xiàng)目

1.new projectGradle—選擇對應(yīng)SDKJavaNext萍摊。
?選擇gradle項(xiàng)目萝快,自己環(huán)境中的SDK(最低版本為JDK1.8)椰拒,創(chuàng)建JAVA項(xiàng)目笔咽。

new project1.png


2.輸入GroupId—輸入artifictIdNext鳍徽。
?輸入groupId呈础,命名請遵循相應(yīng)命名規(guī)范舆驶。公司-com;組織-org;個(gè)人-pers而钞。

new project1.png


3.選擇Use auto-import—選擇Use local gradle distributionNext沙廉。
?選擇自動(dòng)導(dǎo)入,使用本地gradle環(huán)境臼节,選擇后會(huì)自動(dòng)出現(xiàn)本地配置的GRADLE_HOME路徑,然后選擇本地的jdk配置即可撬陵。

new project3.png


4.輸入Project name—選擇Project locationFinish
?輸入項(xiàng)目名稱巨税,選擇相對應(yīng)的項(xiàng)目存儲(chǔ)路徑粉臊,點(diǎn)擊Finish,一個(gè)gradle java項(xiàng)目創(chuàng)建完成远寸。

new project4.png


5.看到項(xiàng)目中出現(xiàn)文件build.gradle并且Build:Sync無異常驰后,說明gradle java項(xiàng)目已創(chuàng)建成功矗愧。

gradle java.png


6.點(diǎn)擊filesettingsBuild,Excution,deploymentBuild ToolsGradle—選擇Offline
?將gradle設(shè)置為離線工作模式唉韭,并且可查看到 service directory pathGRADLE_USER_HOME路徑夜涕,該路徑為gradle jar包存放地址。

setting.png


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

//創(chuàng)建項(xiàng)目輸入groupId
group 'pers.gradle'
//創(chuàng)建項(xiàng)目所輸入的版本
version '1.0-SNAPSHOT'
//指定運(yùn)行環(huán)境属愤,java
apply plugin: 'java'
//指定為java web項(xiàng)目
apply plugin: 'war'
//jdk的版本女器,1.8
sourceCompatibility = 1.8
/**
 * 指定所使用倉庫的路徑
 * mavenCentral(),中央倉庫春塌,項(xiàng)目中所使用的jar包都會(huì)從中央倉庫下載到本地倉庫。
 *                 若本地倉庫已經(jīng)擁有相應(yīng)的jar包,則不會(huì)重復(fù)下載
 *                 可以使用命令maven { url "http://maven.aliyun.com/nexus/content/groups/public" }指定maven的遠(yuǎn)程倉庫地址
 * mavenLocal()本地倉庫只壳,與GRADLE_USER_HOME配置的路徑一致俏拱。
 * */
repositories {
    mavenLocal()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
    mavenCentral()
}
/**
 * gradle所有的jar包文件坐標(biāo)都在dependencies屬性內(nèi)放置
 * 每一個(gè)jar包都具備以下特點(diǎn)
 * 1.scope(作用域):gradle支持compile、runtime吼句、testCompile锅必、testRuntime四種scope
 *   compile:jar包在編譯期與運(yùn)行期依賴。
 *   runtime:jar包在運(yùn)行期依賴惕艳。
 *   testCompile:jar包在測試編譯期與運(yùn)行期依賴搞隐。
 *   testRuntime:jar包在測試運(yùn)行期依賴。
 *   補(bǔ)充:
 *   providedCompile:jar包/依賴代碼 僅在編譯的時(shí)候需要远搪,但是在運(yùn)行時(shí)不需要依賴劣纲。
 *   providedCompile與compile,runtime區(qū)別:
 *   compile: 前提:apply plugin: 'war'或者apply plugin: 'java'
 *   providedCompile:前提:apply plugin: 'war'癞季,若前提為'java',則使用compileOnly
 *   runtime:前提:apply plugin: 'war'
 *   以上所說的前提,如果不正確配置的話废睦,就會(huì)遇到依賴包無法導(dǎo)入,以及runtime以及providedCompile無法使用的情況净蚤。
 * 2. group:與maven的groupId一致。
 *    name:與maven的artifactId一致橘荠。
 *    version:與maven的version一致哥童。
 */
dependencies {
    //gradle jar包坐標(biāo)可以訪問匀泊,maven中央倉庫[https://mvnrepository.com],找到相對應(yīng)的jar包躲因,選擇[gradle]選項(xiàng)卡大脉,復(fù)制該地址即可。
    //引入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注解在類上,會(huì)為類的所有屬性自動(dòng)生成setter/getter抛杨、equals、canEqual屈嗤、hashCode饶号、toString方法,如為final屬性算谈,則不會(huì)為該屬性生成setter方法。
    providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.2'

}


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

//根項(xiàng)目名稱
rootProject.name = 'gradle-web'


4.Gradle 項(xiàng)目結(jié)構(gòu)

project structure.png

5.Gradle JAVA SpringMvc Web項(xiàng)目

1.model文件夾下編寫實(shí)體類User.java屿岂。

package pers.gradle.model;

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

/**
 * 用戶信息實(shí)體
 * @Data 添加getter、setter方法
 * @NoArgsConstructor 添加無參構(gòu)造器
 * @AllArgsConstructor 添加全參構(gòu)造器
 * @AllArgsConstructor 添加鏈?zhǔn)秸{(diào)用
 * @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文件夾下編寫接口實(shí)現(xiàn)類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實(shí)現(xiàn)
 * @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文件夾下編寫接口實(shí)現(xiàn)類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實(shí)現(xiàn)類
 * @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標(biāo)簽-->
<%@ 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>
    <!--循環(huán)輸入表格內(nèi)容-->
    <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>

    <!--靜態(tài)資源釋放-->
    <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服務(wù)器供炼。

tomcat-1.png

?1.點(diǎn)擊紅框所標(biāo)注地方Edit configuration...配置tomcat冀墨,若無tomcat,請點(diǎn)擊鏈接前往官網(wǎng)進(jìn)行下載蔚出。(=?ω?)? ---===≡≡≡給你鏈接tomcat


tomcat-2.png

?2.點(diǎn)擊+往下找到Tomcat Server選擇Local
tomcat-3.png


?3.點(diǎn)擊Deployment,彈出圖片所顯示界面踏烙,點(diǎn)擊+Fix選擇artifict,彈出下圖所顯示內(nèi)容讨惩。

tomcat-4.png


?4.選擇包含(exploded)內(nèi)容的war包即可浩螺。

tomcat-5.png


?4.輸入tomcatName鸳君,web-8081或颊。
?勾選啟動(dòng)完成后是否自動(dòng)打開index.jsp頁面。
?域名鏈接平挑,http://localhost:8081/唆涝。
?On update action:選擇Update classes and resources,當(dāng)發(fā)現(xiàn)更新時(shí)的操作,自動(dòng)更新classes目錄及resource目錄下內(nèi)容亡驰。
?On frame deactivation: 選擇Update classes and resources,當(dāng)IDEA 切換時(shí)的操作 (比如縮下去隐解、打開網(wǎng)頁等)帕涌,自動(dòng)更新classes目錄及resource目錄下內(nèi)容蚓曼。
?以上兩個(gè)選項(xiàng)可以在當(dāng)jsp頁面修改時(shí)纫版,會(huì)自動(dòng)在網(wǎng)頁更新相關(guān)內(nèi)容癞己。
?HTTP port :8081 Http服務(wù)端口號(hào)。
?JMX port :8081管理工具和平臺(tái)服務(wù)端口號(hào)糊识。


tomcat-6.png

?若配置成功愉耙,界面顯示如圖。


tomcat-7.png

?若配置失敗悯仙,界面顯示如圖沦零。


11.啟動(dòng)TomcatWeb服務(wù)器路操。

tomcat-run.png

?點(diǎn)擊紅色方框三角形圖標(biāo)啟動(dòng)服務(wù)。
tomcat-run-success.png

?啟動(dòng)成功,如上圖所示峰弹。若失敗鞠呈,請檢查相應(yīng)錯(cuò)誤代碼塊,或者tomcat配置情況窘茁。


12.訪問list.jsp頁面庙曙。
?瀏覽器輸入http://localhost:8081/user/list訪問list.jsp頁面。顯示出用戶信息列表砂蔽,如圖左驾。

list.png


6.Github地址

?gradle-springmvc-web←戳這里.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市域那,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌王带,老刑警劉巖刹衫,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件走净,死亡現(xiàn)場離奇詭異蝇摸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)啡专,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慧库,“玉大人,你說我怎么就攤上這事甘磨∏湓螅” “怎么了又厉?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵肺蔚,是天一觀的道長璧诵。 經(jīng)常有香客問我之宿,道長,這世上最難降的妖魔是什么等缀? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上州疾,老公的妹妹穿的比我還像新娘薄嫡。我一直安慰自己,他們只是感情好哑蔫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弧呐,像睡著了一般闸迷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俘枫,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天腥沽,我揣著相機(jī)與錄音,去河邊找鬼鸠蚪。 笑死蘸鲸,一個(gè)胖子當(dāng)著我的面吹牛妙痹,可吹牛的內(nèi)容都是我干的耿芹。 我是一名探鬼主播颠毙,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼霎奢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漆枚?” 一聲冷哼從身側(cè)響起残制,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爽待,沒想到半個(gè)月后疙筹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迟隅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阳准,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浅蚪,到底是詐尸還是另有隱情浊伙,我是刑警寧澤卧蜓,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布凤薛,位于F島的核電站帜矾,受9級(jí)特大地震影響别凤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜层扶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一逸寓、第九天 我趴在偏房一處隱蔽的房頂上張望孤荣。 院中可真熱鬧谤碳,春花似錦、人聲如沸窜锯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犁跪。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婉刀,已是汗流浹背吟温。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留突颊,地道東北人鲁豪。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像律秃,于是被迫代替她去往敵國和親爬橡。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容