简体   繁体   English

对Spring MVC Controller的Java HTTP POST请求

[英]Java HTTP POST request to Spring MVC Controller

I have a Spring MVC Controller with the following method definition: 我有一个具有以下方法定义的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());
}

I need to send data to this controller from a Java program, by producing a POST HTTP request. 我需要通过产生POST HTTP请求将数据从Java程序发送到此控制器。

I tried the following code: 我尝试了以下代码:

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();

The Java code failed to reach the controller. Java代码无法到达控制器。 Is the URL I'm using is the correct one, assuming that my web project is "WebApp"? 假设我的Web项目是“ WebApp”,我使用的URL是否正确?

  • web.xml : 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 : 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> 

It does work now. 现在可以正常工作。 I'm not sure what caused the problem before. 我不确定以前是什么引起了问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 对Java Spring Controller的Angular 4 http POST请求 - Angular 4 http POST request to java Spring Controller Spring MVC将HTTP POST请求作为HTTP GET转发到另一个控制器 - Spring MVC forwarding HTTP POST request as a HTTP GET to another controller Java AngularJS Spring MVC - 将 bean 发送到控制器时,$http.post 400 错误请求在语法上不正确 - Java AngularJS Spring MVC - $http.post 400 bad request syntactically incorrect when sending bean to controller Spring MVC将HTTP POST请求转发给另一个控制器中的GET请求处理程序 - Spring MVC forwarding HTTP POST request to GET request handler in another controller 到Spring MVC控制器的出站网关发布请求 - Outbound Gateway post request to spring MVC controller 在Spring MVC中发送HTTP POST请求 - Send HTTP POST request in Spring MVC HTTP 500 作为对使用 Spring 控制器的 HTTP Post 请求的响应 - HTTP 500 as response to an HTTP Post request using a Spring Controller Java Spring Boot HTTP POST请求不起作用 - java spring boot HTTP POST request not working Java Spring MVC Webform POST请求方法 - Java Spring MVC Webform POST Request Method Spring MVC不会在HTTP POST中自动装配,而是在同一控制器上的Ajax中装配 - Spring MVC not autowiring in HTTP POST, but doing in Ajax on the same controller
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM