如何在 Glassfish 上运行 Tutorialpoint 的 Servlet 发布示例? [复制]

Posted

技术标签:

【中文标题】如何在 Glassfish 上运行 Tutorialpoint 的 Servlet 发布示例? [复制]【英文标题】:How to run Tutorialpoint's Servlet Post Example on Glassfish? [duplicate] 【发布时间】:2018-01-05 10:15:24 【问题描述】:

我开始学习 Java Servlet 是因为很多人建议我先从 Servlet 开始,然后再转向 Spring 和其他 JavaEE 框架和技术。 Tutorialspoint 有很多例子,但我不能在 Tomcat 以外的任何东西上运行它们。我正在使用 Netbeans IDE、Maven 和 Glassfish。如何使用这些软件包运行基本的 POST 示例? 示例链接:

Tutorialspoint post example can be found here.

【问题讨论】:

您还没有告诉我们您是如何尝试在 Glassfish 上部署您的应用程序的。你有什么例外吗? 请阅读供应商自己的官方教程(因此,在 oracle.com 网站上)和权威书籍(因此,您可以在 amazon.com 上购买的真正纸质书籍),而不是在印度托管的随机教程网站充满了由业余爱好者维护的令人不安的广告横幅,主要关注 SEO 滥用和赚钱,而不是真正帮助其他开发人员。 感谢您的建议。我打算根据自己的研究(包括来自 oracle.com 的文档和教程)自己回答这个问题。我花了一些时间才弄清楚这一点,我认为其他初学者可能会从我的回答中受益。 【参考方案1】:

1.设置 pom.xml:

在 Netbeans IDE 中创建一个新的 maven 项目。将 pom.xml 中的打包改为war。

<packaging>war</packaging>

将此依赖项添加到 pom.xml 中的依赖项中。 这会将必要的 servlet 类添加到类路径中。

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

设置 maven-war-plugin 版本。对于 3.0.0 或更高版本,您不必创建 ServletRoot/WEB-INF/web.xml。如果你跳过这一步,不配置 web.xml 项目将无法编译。 我将此路径称为“ServletRoot”:mavenproject/src/main/webapp 关于包目录结构的一个很好的解释可以在这里找到 3.1: package structure

<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
        </plugin>
    </plugins>
</build>

2。把 index.html 在 mavenproject/src/main/webapp 中创建 index.html 并将此代码复制到那里。请注意,表单标签的 action 属性值必须与您的 servlet 的 WebServlet 注释的值相匹配。在这种情况下,它将是这样的:

@WebServlet("/postexample")

index.html:

<html>
    <body>
        <form action = "postexample" method = "POST">
            First Name: <input type = "text" name = "first_name">
            <br />
            Last Name: <input type = "text" name = "last_name" />
            <input type = "submit" value = "Submit" />
        </form>
    </body>
</html>

3.在你的包中创建一个新类。不要使用默认包。

我将其命名为 POSTExample。这是代码没有包声明

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

// Extend HttpServlet class
@WebServlet("/postexample")
public class POSTExample extends HttpServlet 

    // Method to handle GET method request.
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse         response)
    throws ServletException, IOException 

        // Set response content type
        response.setContentType("text/html");

        PrintWriter out = response.getWriter();
        String title = "Using GET Method to Read Form Data";
        String docType =
            "<!doctype html public \"-//w3c//dtd html 4.0 " +
            "transitional//en\">\n";

        out.println(docType +
            "<html>\n" +
                "<head><title>" + title + "</title></head>\n" +
                "<body bgcolor = \"#f0f0f0\">\n" +
                    "<h1 align = \"center\">" + title + "</h1>\n" +
                    "<ul>\n" +
                        "  <li><b>First Name</b>: "
                        + request.getParameter("first_name") + "\n" +
                        "  <li><b>Last Name</b>: "
                        + request.getParameter("last_name") + "\n" +
                    "</ul>\n" +
                "</body>\n" +
            "</html>"
        );
    
    // Method to handle POST method request.
    @Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 

        doGet(request, response);
    

4.构建 Maven 项目 在 Netbeans IDE 中,您有一个按钮。 Neteans 也可以将其自动部署到 glassfish,但我没有尝试过。因此,我将向您展示如何使用 glassfish 管理器手动部署它。 您可以在命令行中构建它。

mvn clean package

5.部署 打开命令行并使用此命令。它会启动 glassfish 服务器,并且会记录很多。

asadmin start-domain --verbose 

打开浏览器并输入此 URI。我假设您使用的是 glassfish 的默认设置。默认端口等...

http://localhost:4848/

在“常见任务”下,您可以找到“应用程序”。点击它。然后单击部署。如果有的话,它在列出的应用程序之上。现在你必须输入你创建的war文件的位置。或者你可以拖放。它的位置是 mavenproject/target/yourwarfile.war

在 glassfish 管理器中单击“确定”之前,为“上下文根”提供一个简单的文本,例如“myservlet”。你必须记住这一点。 如果一切顺利,您可以使用以下链接在浏览器中运行示例: http://localhost:8080/myservlet

在这种情况下,“myservlet”是您在 glassfish 管理器中设置的上下文根。

【讨论】:

以上是关于如何在 Glassfish 上运行 Tutorialpoint 的 Servlet 发布示例? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用较新版本的jna库在Glassfish上运行Web应用程序

如何使用 Netbeans IDE 在 glassfish 的特定端口上部署 Web 应用程序?

我可以在一台服务器机器上运行 apache 和 glassfish 吗?

JDBC连接池设置无法在Glassfish5上运行

如何在不安装GlassFish的情况下下载最新的Java EE jar?

您如何比较 Apache Tomcat 和 Glassfish 作为生产服务器?