2017-07-29 38 views
0

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

Tutorialspoint post example can be found here.

+0

您还没有告诉我们您是如何在Glassfish上部署应用程序的。你有没有例外? – ujulu

+1

请阅读供应商自己的官方教程(因此,在oracle.com网站)和权威书籍(因此,您可以在amazon.com上购买真正的纸质版本),而不是在印度托管的随机教程网站,主要关注SEO滥用和赚钱的业余爱好者,而不是真正帮助其他开发者。 – BalusC

+0

感谢您的建议。我打算根据自己的研究(包括来自oracle.com的文档和教程)自己回答这个问题。我花了一点时间才弄清楚这一点,我认为其他初学者可能会从我的答案中受益。 – Chase

回答

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目录/主/ 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的默认设置。默认端口等...

http://localhost:4848/

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

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

在这种情况下,“myservlet”是您在GlassFish的经理设置上下文根。

相关问题