如何在Glassfish上运行Tutorialpoint的Servlet发布示例?
我开始学习Java Servlets,因为很多人建议我在转向Spring和其他JavaEE框架和技术之前先从Servlets开始。 Tutorialspoint有很多例子,但是我不能在Tomcat以外的任何地方运行它们。我正在使用Netbeans IDE,Maven和Glassfish。我如何使用这些软件包运行基本的POST示例? 链接的例子:如何在Glassfish上运行Tutorialpoint的Servlet发布示例?
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目录/主/ web应用 有关包目录结构一个很好的解释可以在这里找到在3.1: package structure
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>
2.将index.html的 创建将index.html放入mavenproject/src/main/webapp并复制这个codesnippet。请注意,表单标签的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 manager手动部署它。 你可以用命令行来构建它。
mvn clean package
5.部署 打开命令行并使用该命令。它将启动glassfish服务器,并且会记录很多。
asadmin start-domain --verbose
打开浏览器并输入此URI。我假设你正在使用glassfish的默认设置。默认端口等...
在 “常规任务”,你可以找到 “应用程序”。点击它。然后点击部署。如果有的话,它高于列出的应用程序。现在你必须输入你创建的war文件的位置。或者你可以拖拽。它的位置是 mavenproject/target/yourwarfile.war
在glassfish管理器中单击“确定”之前,为“上下文根”提供一个简单的文本,如“myservlet”。你必须记住这一点。 如果你做的一切很好,你可以通过使用这个链接运行在浏览器中的例子: http://localhost:8080/myservlet
在这种情况下,“myservlet”是您在GlassFish的经理设置上下文根。
您还没有告诉我们您是如何在Glassfish上部署应用程序的。你有没有例外? – ujulu
请阅读供应商自己的官方教程(因此,在oracle.com网站)和权威书籍(因此,您可以在amazon.com上购买真正的纸质版本),而不是在印度托管的随机教程网站,主要关注SEO滥用和赚钱的业余爱好者,而不是真正帮助其他开发者。 – BalusC
感谢您的建议。我打算根据自己的研究(包括来自oracle.com的文档和教程)自己回答这个问题。我花了一点时间才弄清楚这一点,我认为其他初学者可能会从我的答案中受益。 – Chase