最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Gradle構(gòu)建基本的Web項(xiàng)目結(jié)構(gòu)

 更新時(shí)間:2022年03月23日 08:50:14   作者:KimZing  
這篇文章主要為大家介紹了Gradle創(chuàng)建Web項(xiàng)目基本的框架結(jié)構(gòu)搭建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、環(huán)境要求

  • 一個(gè)好用的IDE編輯工具
  • Java環(huán)境(>=8)
  • Gradle構(gòu)建工具(>=4.10.3)

二、創(chuàng)建應(yīng)用結(jié)構(gòu)

gradle使用war插件來(lái)進(jìn)行java web項(xiàng)目構(gòu)建,war插件繼承了Java 插件并添加了對(duì)web應(yīng)用程序的支持。默認(rèn)情況下,使用src/main/webapp目錄作為web的資源目錄。

webdemo項(xiàng)目建立如下目錄結(jié)構(gòu)

webdemo/
    src/
        main/
            java/
            webapp/
        test
            java/

servlet或其他Java類都將放在src / main / java中,測(cè)試代碼寫(xiě)在src / test / java,其他Web資源將放在src / main / webapp

三、添加Gradle腳本

在項(xiàng)目根目錄下創(chuàng)建一個(gè)build.gradle文件,內(nèi)容如下:

plugins {
    id 'war'  // ①
}
repositories {
    jcenter()
}
dependencies {
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0' // ②
    testCompile 'junit:junit:4.12'
}

① 添加并使用war插件

② 引入servlet依賴包,版本為3.1.0或更高

war插件添加了providerCompile和providerRuntime,類似于常規(guī)Java應(yīng)用程序中的compile和runtime。providerCompile表示本地運(yùn)行時(shí)所需的依賴關(guān)系,但打包時(shí)不會(huì)將其添加到生成的webdemo.war文件中。

再添加war插件時(shí),無(wú)需指定版本,war和jar兩個(gè)插件的版本,gradle已經(jīng)內(nèi)置進(jìn)行管理了。

四、編寫(xiě)Servlet

從3.0版本開(kāi)始,可以使用注解來(lái)開(kāi)發(fā)Servlet,下面就會(huì)使用這種方式。在src/main/java下創(chuàng)建包org/gradle/demo,添加servlet文件HelloServlet.java,內(nèi)容如下:

package org.gradle.demo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "HelloServlet", urlPatterns = {"/hello"}, loadStartup = 1) // ①
public class HelloServlet extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.getWriter().print("Hello, World!");  // ②
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String name = request.getParameter("name");
    if (name == null) name = "World";
    request.setAttribute("user", name);
    request.getRequestDispatcher("response.jsp").forward(request, response); // ③
  }
}

① 基于注解的Servlet寫(xiě)法

② GET請(qǐng)求,返回基本字符串

③ POST請(qǐng)求,獲取name參數(shù)并跳轉(zhuǎn)到JSP頁(yè)面

五、添加請(qǐng)求頁(yè)面和JSP頁(yè)面

首先在src/main/webapp下添加一個(gè)index.html文件,方便發(fā)送GETPOST請(qǐng)求。

index.html內(nèi)容如下

<html>
<head>
  <title>Web Demo</title>
</head>
<body>
<p>Say <a href="hello">Hello</a></p> 

<form method="post" action="hello">  
  <h2>Name:</h2>
  <input type="text" id="say-hello-text-input" name="name" />
  <input type="submit" id="say-hello-button" value="Say Hello" />
</form>
</body>
</html>

然后在src/main/webapp下添加一個(gè)response.jsp文件,也就是當(dāng)接收到post請(qǐng)求時(shí)跳轉(zhuǎn)的頁(yè)面。response.jsp內(nèi)容如下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Hello Page</title>
    </head>
    <body>
        <h2>Hello, ${user}!</h2>
    </body>
</html>

六、添加gretty插件,以便于直接運(yùn)行程序

gretty插件是社區(qū)支持的杰出插件,可以在Gradle插件存儲(chǔ)庫(kù)中找到。該插件支持在Jetty或Tomcat上運(yùn)行或測(cè)試Web應(yīng)用程序。

build.gradle腳本的plugins中添加如下

plugins {    id 'war'    id 'org.gretty' version '2.2.0' }

現(xiàn)在可以使用appRun任務(wù)運(yùn)行我們的程序了,默認(rèn)是使用Jetty容器。運(yùn)行輸出如下

$ gradle appRun
00:32:30 INFO  Jetty 9.2.24.v20180105 started and listening on port 8080
00:32:30 INFO  webdemo runs at:
00:32:30 INFO    http://localhost:8080/webdemo

> Task :appRun
Press any key to stop the server.
<===========--> 87% EXECUTING [10s]
> :appRun

出現(xiàn)http://localhost:8080/webdemo說(shuō)明已經(jīng)運(yùn)行成功了, 訪問(wèn)這個(gè)地址出現(xiàn)index.html所呈現(xiàn)的頁(yè)面,點(diǎn)擊一下試試吧。

補(bǔ)充、切換Servlet容器及更多配置

gretty目前支持的容器如下

Jetty

‘jetty7’, ‘jetty8’, ‘jetty9’, ‘jetty93’, ‘jetty94’

Tomcat

‘tomcat7’, ‘tomcat8’

只需要在build.gradle文件中添加如下block即可

gretty {
  httpPort = 8083 // 端口
  contextPath = '/demo'  // 容器路徑
  servletContainer = 'tomcat8' // 容器類型
}

以上就是Gradle創(chuàng)建基本的Web項(xiàng)目的詳細(xì)內(nèi)容,更多關(guān)于Gradle創(chuàng)建基本的Web項(xiàng)目的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Security如何在Servlet中執(zhí)行

    Spring Security如何在Servlet中執(zhí)行

    這篇文章主要介紹了Spring Security如何在Servlet中執(zhí)行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringMVC使用@ExceptionHandler注解在Controller中處理異常

    SpringMVC使用@ExceptionHandler注解在Controller中處理異常

    這篇文章主要為大家介紹了SpringMVC使用@ExceptionHandler注解在Controller中處理異常示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 解決SpringBoot運(yùn)行Test時(shí)報(bào)錯(cuò):SpringBoot Unable to find

    解決SpringBoot運(yùn)行Test時(shí)報(bào)錯(cuò):SpringBoot Unable to find

    這篇文章主要介紹了SpringBoot運(yùn)行Test時(shí)報(bào)錯(cuò):SpringBoot Unable to find a @SpringBootConfiguration,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列詳解

    Java常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列詳解

    這篇文章主要介紹了Java常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列詳解,棧(Stack) 是一種基本的數(shù)據(jù)結(jié)構(gòu),具有后進(jìn)先出(LIFO)的特性,類似于現(xiàn)實(shí)生活中的一疊盤(pán)子,棧用于存儲(chǔ)一組元素,但只允許在棧頂進(jìn)行插入(入棧)和刪除(出棧)操作,需要的朋友可以參考下
    2023-10-10
  • SpringBoot整合TKMyBatis實(shí)現(xiàn)單表增刪改查操作

    SpringBoot整合TKMyBatis實(shí)現(xiàn)單表增刪改查操作

    據(jù)說(shuō)tk.mybatis能夠讓我不寫(xiě)sql代碼就可以所有單表操作問(wèn)題,作為熱愛(ài)偷懶的我,怎么能放過(guò)這種機(jī)會(huì)。talk is cheap, show me the code。趕緊搞個(gè)例子爽一把先
    2023-01-01
  • Java容器類源碼詳解 Deque與ArrayDeque

    Java容器類源碼詳解 Deque與ArrayDeque

    這篇文章主要介紹了Java容器類源碼詳解 Deque與ArrayDeque,Deque 接口繼承自 Queue接口,但 Deque 支持同時(shí)從兩端添加或移除元素,因此又被成為雙端隊(duì)列。,需要的朋友可以參考下
    2019-06-06
  • Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼

    Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼

    本篇文章主要介紹了Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Java實(shí)現(xiàn)兩人五子棋游戲(二) 畫(huà)出棋盤(pán)

    Java實(shí)現(xiàn)兩人五子棋游戲(二) 畫(huà)出棋盤(pán)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)兩人五子棋游戲,畫(huà)出五子棋的棋盤(pán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java編程guava RateLimiter實(shí)例解析

    Java編程guava RateLimiter實(shí)例解析

    這篇文章主要介紹了Java編程guava RateLimiter實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java生成指定范圍的隨機(jī)日期

    java生成指定范圍的隨機(jī)日期

    這篇文章主要為大家詳細(xì)介紹了java生成指定范圍的隨機(jī)日期,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論

英德市| 仁化县| 比如县| 宕昌县| 塘沽区| 文安县| 彰化县| 宕昌县| 东明县| 福海县| 赣榆县| 旬阳县| 诸暨市| 鲁山县| 卫辉市| 章丘市| 德钦县| 彰化市| 班戈县| 栾城县| 措勤县| 阿克苏市| 孝昌县| 哈尔滨市| 饶阳县| 德钦县| 莱芜市| 淅川县| 旌德县| 鲜城| 大名县| 碌曲县| 济南市| 奈曼旗| 重庆市| 兴山县| 伊吾县| 化德县| 绩溪县| 琼海市| 南涧|