【发布时间】:2011-04-27 13:07:47
【问题描述】:
我正在尝试一个带有 Java Servlet 的简单程序,其中将显示一个带有文本框和提交按钮的 HTML 页面。用户输入数据并提交后,下一页将显示 Hello 。直接用GET参数调用servlet URL就可以了。但是当我打开 HTML 文件并从那里提交数据时,GET 请求的格式不正确,即参数没有在“操作”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。
【问题讨论】: