我开始学习Java Servlets,因为很多人建议我在迁移到Spring和其他JavaEE框架和技术之前先从Servlet开始。 Tutorialspoint有很多例子,但我不能在除Tomcat之外的任何东西上运行它们。我正在使用Netbeans IDE,Maven和Glassfish。我怎么能用这些软件包运行一个基本的POST示例? 链接到示例:
答案 0 :(得分:1)
<强> 1。设置pom.xml:
在Netbeans IDE中创建一个新的maven项目。在pom.xml中将包装更改为war。
<packaging>war</packaging>
将此依赖项添加到pom.xml中的依赖项。 这将为classpath添加必要的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的默认设置。默认端口等...
在“常见任务”下,您可以找到“应用程序”。点击它。然后单击“部署”。它位于列出的应用程序之上,如果有的话。现在您必须输入创建的war文件的位置。或者你可以拖拽。它的位置是 mavenproject /目标/ yourwarfile.war
在glassfish管理器中单击“确定”之前,为“上下文根”提供一个简单的文本,例如“myservlet”。你必须记住这一点。 如果您做得很好,可以使用以下链接在浏览器中运行该示例: http://localhost:8080/myservlet
在这种情况下,“myservlet”是您在glassfish管理器中设置的上下文根。