2011-04-27 145 views
1

我正在尝试使用Java Servlet的简单程序,其中带有文本框和提交按钮的HTML页面将显示。一旦用户输入数据并提交数据,下一页将显示一个Hello。使用GET参数直接调用servlet URL显示它工作正常。但是,当我打开HTML文件并从那里提交数据时,GET请求没有正确形成,即参数未传递到“action”URL的地址中。HTML文件未发布GET请求中的GET参数

下面是HTML代码:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Hello</title> 
</head> 
<body> 
    <form action="/TestServlt/TestClass" name="myform" method="get"> 
    Enter your name: <input type="text name="username"> 
    <br /> 
    <input type="submit" value="Go"> 
    </form> 
</body> 
</html> 

和servlet代码:

package in.lguruprasad; 

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class TestClass extends HttpServlet implements Servlet { 
static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    PrintWriter output = response.getWriter(); 
    response.setContentType("text/html"); 
    String name = request.getParameter("username"); 
    output.println("Hello "+name+"!"); 
    output.flush(); 
    output.close(); 
} 
} 

该servlet被映射到/TestServlt/TestClass URL和表单提交重定向http://localhost:8080/TestServlt/TestClass而不是http://localhost:8080/TestServlt/TestClass?username=<user input>这将很好地工作。我得到的输出是'Hello null!'。

在所有浏览器中,表单提交时没有get参数。我试着写了一个类似的doPost方法,但那并没有起作用。

这里有什么问题,以及如何解决它?

我使用的是Eclipse 3.1.2,Apache Tomcat 5.5,JDK 1.6.25(如果有帮助的话)。

回答

4

你缺少一个报价在HTML输入:

Enter your name: <input type="text name="username"> 

应该

Enter your name: <input type="text" name="username"> 
+0

噢,是我不好! :-( – Guruprasad 2011-04-27 13:40:40