Gradle教程

原创 KimZing 2020-03-25 19:42

通过Gretty插件内嵌jetty/tomcat容器启动Java web项目

一、环境要求

  1. 一个好用的IDE编辑工具
  2. Java环境(>=8)
  3. Gradle构建工具(>=4.10.3)

二、创建应用结构

gradle使用war插件来进行java web项目构建,war插件继承了Java 插件并添加了对web应用程序的支持。默认情况下,使用src/main/webapp目录作为web的资源目录。

webdemo项目建立如下目录结构

1
2
3
4
5
6
7
webdemo/
src/
main/
java/
webapp/
test
java/

servlet或其他Java类都将放在src / main / java中,测试代码写在src / test / java,其他Web资源将放在src / main / webapp

三、添加Gradle脚本

在项目根目录下创建一个build.gradle文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
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,类似于常规Java应用程序中的compile和runtime。providerCompile表示本地运行时所需的依赖关系,但打包时不会将其添加到生成的webdemo.war文件中。

再添加war插件时,无需指定版本,war和jar两个插件的版本,gradle已经内置进行管理了。

四、编写Servlet

从3.0版本开始,可以使用注解来开发Servlet,下面就会使用这种方式。在src/main/java下创建包org/gradle/demo,添加servlet文件HelloServlet.java,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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参数并跳转到JSP页面

五、添加请求页面和JSP页面

首先在src/main/webapp下添加一个index.html文件,方便发送GETPOST请求。

index.html内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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文件,也就是当接收到post请求时跳转的页面。response.jsp内容如下

1
2
3
4
5
6
7
8
9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h2>Hello, ${user}!</h2>
</body>
</html>

六、添加gretty插件,以便于直接运行程序

gretty插件是社区支持的杰出插件,可以在Gradle插件存储库中找到。该插件支持在Jetty或Tomcat上运行或测试Web应用程序。

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

1
2
3
4
plugins {
id 'war'
id 'org.gretty' version '2.2.0'
}

现在可以使用appRun任务运行我们的程序了,默认是使用Jetty容器。运行输出如下

1
2
3
4
5
6
7
8
9
$ 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

出现http://localhost:8080/webdemo说明已经运行成功了, 访问这个地址出现index.html所呈现的页面,点击一下试试吧。

补充、切换Servlet容器及更多配置

gretty目前支持的容器如下

Jetty

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

Tomcat

‘tomcat7’, ‘tomcat8’

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

1
2
3
4
5
gretty {
httpPort = 8083 // 端口
contextPath = '/demo' // 容器路径
servletContainer = 'tomcat8' // 容器类型
}
#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×