我正在研究一个简单的java服务器小程序。似乎服务器没有获取参数。这是我的doPost()代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String a = request.getParameter("a");
String b = request.getParameter("b");
System.out.println("I started doing something " + a + " " + b);
}
这是我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>AutoPresServerlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>Main</display-name>
<servlet-name>Main</servlet-name>
<servlet-class>com.altechwebdesign.java.autopres.Main</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/Main</url-pattern>
</servlet-mapping>
</web-app>
我正在使用Chrome的Advanced Rest Client发送POST请求。
答案 0 :(得分:0)
您需要一个表单或jsp页面来携带html输入类型值并触发servlet。
那么只有你的servlet才能得到值
我建议在index.jsp
中编写表单代码,从form
编写调用操作/主。
流程应该像
index.jsp-&gt; submitform-&gt; main servlet
答案 1 :(得分:0)
您使用的证据中没有任何内容可以解释为什么参数为空。
好像服务器没有获取参数。
我认为这意味着您有证据表明您的doPost
方法实际上已被调用。这表明web.xml正确地将请求指向您的servlet代码。
这意味着参数没有显示的原因是它们没有被提供(正确)。但这种情况发生在客户端代码和/或它发送的请求中,而且您还没有向我们展示。
(也有可能你没有任何证据和你的&#34;如果似乎......&#34; 只是一个猜测。如果是这样的话,你需要找出正在发生的事情,并且/或者向我们展示你实际拥有的证据。)
我也不明白为什么你在这里提到了JSP。您还没有向我们展示任何JSP代码,它不太可能与您的问题直接相关。
答案 2 :(得分:0)
Servlet可以在您的代码中获取参数当且仅当您的操作被以下数据触发时(无论是获取还是发布) 的 A = test_for_a和b = test_for_b 强>
你可以添加一些输入/选择/ textarea 名称 (这将是你在servlet中使用的参数名,即a和b)。
嗯,ajax将是另一个解决方案,我打赌,这超出了我们的范围。
答案 3 :(得分:0)
您可以通过以下方法测试请求和响应是否正常运行: PrintWriter writer = response.getWriter(); writer.write(“这是我的帖子”); , 您必须具有html表单才能提交a和b值。检查那里的操作和方法是否正确,或者重新启动服务器,然后重试。