2014-01-08 46 views
0

我有一个Spring MVC控制器,具有以下的方法定义:爪哇HTTP POST请求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()); 
} 

我需要将数据从一个Java程序发送到该控制器,通过产生POST HTTP请求。

我尝试下面的代码:

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> 
    
+0

为了以防万一,它是否适用于该方法的“公共”修饰符? –

+0

你可以发布你的'web.xml'和'dispatcher-servlet.xml' –

+0

我试过更改为public。它没有帮助。 – arsenalfan

回答

0

现在做的工作。 我不确定是什么原因导致了问题。