1. 程式人生 > >IDEA community + Gradle + Gretty 調試 servlet 應用

IDEA community + Gradle + Gretty 調試 servlet 應用

pac eth tty 項目結構 () oca ann con getwriter

---恢復內容開始---

參考:https://guides.gradle.org/building-java-web-applications

打包war只需要Gradle面板中選擇build.build任務即可,就不詳細說了,下面主要說如何調試

IDEA創建gradle項目,項目結構如下

技術分享圖片

各個文件:

build.gradle

// https://guides.gradle.org/building-java-web-applications
plugins {
    id ‘java‘
    id ‘war‘
    id ‘org.akhikhl.gretty‘ version ‘1.4.2‘
}

group 
‘ServletDemo‘ version ‘1.0-SNAPSHOT‘ sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api providedCompile group: ‘javax.servlet‘, name: ‘javax.servlet-api‘, version: ‘3.1.0‘ testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘ }

HelloServlet.java

package servlets;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name 
= "HelloServlet", urlPatterns = {"hello"}, loadOnStartup = 1) public class HelloServlet extends HttpServlet { int i = 0; // Servlet "persistence" protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.getWriter().print("Hello, World! " + i++); } 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); } } ///:~

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Servlet 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>

response.jsp

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

然後點擊左側的Gradle面板,選擇任務gretty.appRun就可以啟動app,通過localhost:8080訪問

如果要 調試,那麽在Gradle面板中選擇任務gretty.appRunDebug,啟動該任務後,選擇Run->Edit Configurations 然後添加一個Remote Run/Debug,如下圖,名為DebugServletDemo,根據gretty官方文檔,默認debug port是5005,所以這裏填好host和port

技術分享圖片

然後在Gradle面板中啟動任務gretty.appRunDebug,如下圖Run選項卡中所示,在5005端口等待Debugger的連接

技術分享圖片

接下來再啟動Run->Debug->DebugServletDemo,如下圖Debug選項卡中所示,Debugger已連接上5005端口

技術分享圖片

此時再次查看Run選項卡,會發現其中內容如下,點擊該http鏈接開始調試

技術分享圖片

IDEA community + Gradle + Gretty 調試 servlet 應用