我正在尝试使用Java Servlet的简单程序,其中将显示带有文本框和提交按钮的HTML页面。一旦用户输入数据并提交数据,下一页将显示Hello。使用GET参数直接调用servlet URL表明它工作正常。但是当我打开HTML文件并从那里提交数据时,GET请求没有正确形成,即参数没有传递到'action'URL的地址中。
以下是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。
答案 0 :(得分:4)
您在html输入中缺少引号:
Enter your name: <input type="text name="username">
应该是
Enter your name: <input type="text" name="username">