【发布时间】:2014-01-08 10:10:31
【问题描述】:
我有一个带有以下方法定义的 Spring MVC 控制器:
@RequestMapping(value="SaveReading.htm",method=RequestMethod.POST)
protected void saveReading(Reading reading) throws ServletException, IOException {
logger.debug("Received reading for id: " + reading.getMonitorId());
}
我需要通过生成POST HTTP 请求,从 Java 程序向该控制器发送数据。
我尝试了以下代码:
try {
url = new URL("http://localhost:8080/WebApp/SaveReading.htm");
} catch (MalformedURLException e) {
logger.error("Malformed URL ", e);
return;
}
try {
conn = (HttpURLConnection)url.openConnection();
logger.debug("Opened Connection. " + conn.getURL());
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.connect();
writer = new OutputStreamWriter(conn.getOutputStream());
} catch (IOException e) {
logger.error("Error setting up URL connection: ", e);
}
String data = "";
try {
data = URLEncoder.encode("monitorId", "UTF-8") + "=" + URLEncoder.encode(id, "UTF-8");
data += "&" + URLEncoder.encode("timeStamp", "UTF-8") + "=" + URLEncoder.encode(""+new Date().getTime(), "UTF-8");
} catch (UnsupportedEncodingException e) {
logger.error("Encoding problem ", e);
}
System.out.println("Sending HTTP message: \n" + data);
// Send data
try {
writer.write(data);
writer.flush();
Java 代码未能到达控制器。 假设我的 Web 项目是“WebApp”,我使用的 URL 是否正确?
-
web.xml:<display-name>Web Application</display-name> <servlet> <servlet-name>ReadingsServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ReadingsServlet</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/ReadingsServlet-servlet.xml </param-value> </context-param> -
ReadingsServlet-servlet.xml:<context:annotation-config /> <context:component-scan base-package="com.myapp.familycare"/> <context:component-scan base-package="miscillaneous.property_placeholder" /> <mvc:annotation-driven /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
【问题讨论】:
-
以防万一,它是否与方法的“公共”修饰符一起使用?
-
你能发布你的
web.xml和dispatcher-servlet.xml -
我尝试更改为公开。它没有帮助。
-
另外,我忘记了 URL 中的 Tomcat 端口,但添加它也不起作用。
-
如果您将localhost:8080/WebApp/SaveReading.htm 粘贴到浏览器中,您会在 Tomcat 日志中看到请求命中吗?
标签: java http spring-mvc post httprequest