Gradle構(gòu)建基本的Web項(xiàng)目結(jié)構(gòu)
一、環(huán)境要求
- 一個好用的IDE編輯工具
- Java環(huán)境(>=8)
- Gradle構(gòu)建工具(>=4.10.3)
二、創(chuàng)建應(yīng)用結(jié)構(gòu)
gradle使用war
插件來進(jìn)行java web項(xiàng)目構(gòu)建,war
插件繼承了Java 插件并添加了對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
中,測試代碼寫在src / test / java
,其他Web資源將放在src / main / webapp
。
三、添加Gradle腳本
在項(xiàng)目根目錄下創(chuàng)建一個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í)不會將其添加到生成的webdemo.war文件中。
再添加war插件時(shí),無需指定版本,war和jar兩個插件的版本,gradle已經(jīng)內(nèi)置進(jìn)行管理了。
四、編寫Servlet
從3.0版本開始,可以使用注解來開發(fā)Servlet,下面就會使用這種方式。在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寫法
② GET請求,返回基本字符串
③ POST請求,獲取name參數(shù)并跳轉(zhuǎn)到JSP頁面
五、添加請求頁面和JSP頁面
首先在src/main/webapp
下添加一個index.html
文件,方便發(fā)送GET
和POST
請求。
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
下添加一個response.jsp
文件,也就是當(dāng)接收到post請求時(shí)跳轉(zhuǎn)的頁面。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插件存儲庫中找到。該插件支持在Jetty或Tomcat上運(yùn)行或測試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說明已經(jīng)運(yùn)行成功了, 訪問這個地址出現(xiàn)index.html所呈現(xiàn)的頁面,點(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)目的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用
這篇文章主要介紹了詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用的相關(guān)資料,需要的朋友可以參考下2017-02-02Java開發(fā)者結(jié)合Node.js編程入門教程
這篇文章主要介紹了Java開發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個簡單的Rest服務(wù)來讀取 MongoDB數(shù)據(jù)庫。然后我會用node.js來實(shí)現(xiàn)相同的功能,需要的朋友可以參考下2014-09-09基于Spring Boot應(yīng)用ApplicationEvent案例場景
這篇文章主要介紹了基于Spring Boot應(yīng)用ApplicationEvent,利用Spring的機(jī)制發(fā)布ApplicationEvent和監(jiān)聽ApplicationEvent,需要的朋友可以參考下2023-03-03Spring通過配置文件和注解實(shí)現(xiàn)屬性賦值
這篇文章主要介紹了Spring通過配置文件和注解實(shí)現(xiàn)屬性賦值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04mybatisplus實(shí)現(xiàn)自動創(chuàng)建/更新時(shí)間的項(xiàng)目實(shí)踐
Mybatis-Plus提供了自動填充功能,可以通過實(shí)現(xiàn)MetaObjectHandler接口來實(shí)現(xiàn)自動更新時(shí)間的功能,本文就來介紹一下mybatisplus實(shí)現(xiàn)自動創(chuàng)建/更新時(shí)間的項(xiàng)目實(shí)踐,感興趣的可以了解下2024-01-01Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊(duì)列
這篇文章主要介紹了Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊(duì)列,工作中遇到項(xiàng)目使用Disruptor做消息隊(duì)列,對你沒看錯,不是Kafka,也不是rabbitmq。Disruptor有個最大的優(yōu)點(diǎn)就是快,還有一點(diǎn)它是開源的哦,下面做個簡單的記錄2022-06-06Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式
這篇文章主要介紹了Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式,本文通過兩種方式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07springBoot項(xiàng)目打包idea的多種方法
這篇文章主要介紹了springBoot項(xiàng)目打包idea的多種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07