【问题标题】:Returning a blank page in hello world java servlet when submit button is clicked单击提交按钮时在hello world java servlet中返回一个空白页面
【发布时间】:2016-10-19 14:31:22
【问题描述】:

我已经尽一切努力让这个 servlet 工作,在下载了几个旧的 JRE 和几个旧版本的 Apache tomcat 之后,它仍然没有工作。现在我正在使用带有 JRE v1.7 和 Tomcat v7 的 Kepler for Java EE。下面是我的 java 源代码和 html——我怀疑问题出在 doGet 方法本身,因为我认为我的文件路径命名正确,但我仍然返回一个空白页。尽管问题可能出在表单操作上——我对 eclipse 完全陌生。

<!DOCTYPE html> 
   <html>
       <head> <meta charset="ISO-8859-1">
          <title>Insert title here</title> 
       </head> 
     <body> 
        <form  action="/HelloWorld/HelloServlet" method="get">
            <input type="submit"  value="go to hello servlet"/>
        </form> 
     </body> 
   </html>`

HelloServaled.java

package com.tutorials.servlets;

import java.io.IOException;
import java.io.PrintWriter;

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

/**
 * Servlet implementation class HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
  /* @see Servlet#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#service(HttpServletRequest request,                                                                                                           >        HttpServletResponse response)
     */
    protected void service(HttpServletRequest request, HttpServletResponse  >      response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request,                           >        HttpServletResponse response)
     */

    protected void doGet(HttpServletRequest request, HttpServletResponse           >             response) throws ServletException, IOException {


             PrintWriter out = response.getWriter();
             out.println("I am in go get mehtod" );

        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request,                                            >       HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse               >       response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse)
     */
    protected void doPut(HttpServletRequest request, HttpServletResponse                    >       response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

【问题讨论】:

  • 把这个
    替换成
    即从表单动作标签中删除 HelloWorld。

标签: java html tomcat servlets


【解决方案1】:

您的主要问题在于表单的 action 属性与 servlet 的映射不同。

您的注解:(@WebServlet("/HelloServlet")) 是在告诉应用服务器侦听对“/HelloServlet”的请求,例如:http://eample.com/HelloServlet

另一方面,您的表单将其操作设置为/HelloWorld/HelloServlet,这意味着发布请求转到http://example.com/HelloWorld/HelloServlet

因此,当您的浏览器在那里发布消息时,应用程序会按应有的方式处理它,但它不会,因为您的 servlet 没有在那里监听任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多