//jspPost.jsp
/*
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<c:set var="mapParams" value="${param}" />
<jsp:useBean id="postBean" class="com.java2s.PostBean" >
<jsp:setProperty name="parameters" value="${mapParams}" />
<jsp:setProperty name="url" value="http://localhost:8080/home/viewPost.jsp" />
</jsp:useBean>
<jsp:getProperty id="postBean" property="post"/>
*/
//viewPost.jsp
/*
<%@page contentType="text/html"%><%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head><title>Post Data Viewer</title></head>
<body>
<h2>Here is your posted data</h2>
<c:forEach var="map_entry" items="${param}">
<strong><c:out value="${map_entry.key}" /></strong>:
<c:out value="${map_entry.value}" /><br><br>
</c:forEach>
</body>
</html>
*/
package com.java2s;
import java.util.Map;
import java.util.Iterator;
import java.util.Map.Entry;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.HttpException;
public class PostBean implements java.io.Serializable {
private Map parameters;
private String url;
public PostBean(){
}
public void setParameters(Map param){
if (param != null)
parameters = param;
}
public Map getParameters(){
return parameters;
}
public void setUrl(String url){
if (url != null && !(url.equals("")))
this.url=url;
}
public String getUrl(){
return url;
}
public String getPost() throws java.io.IOException,HttpException{
if (url == null || url.equals("") || parameters == null)
throw new IllegalStateException("Invalid url or parameters in PostBean.getPost method.");
String returnData = "";
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
//convert the Map passed into the bean to a NameValuePair[] type
NameValuePair[] postData = getParams(parameters);
//the 2.0 beta1 version has a
//PostMethod.setRequestBody(NameValuePair[])
//method, as addParameters is deprecated
postMethod.addParameters(postData);
httpClient.executeMethod(postMethod);
//A "200 OK" HTTP Status Code
if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
returnData= postMethod.getResponseBodyAsString();
} else {
returnData= "The POST action raised an error: " + postMethod.getStatusLine();
}
//release the connection used by the method
postMethod.releaseConnection();
return returnData;
}//end getPost
private NameValuePair[] getParams(Map map){
NameValuePair[] pairs = new NameValuePair[map.size()];
//Use an Iterator to put name/value pairs from the Map
//into the array
Iterator iter = map.entrySet().iterator();
int i = 0;
while (iter.hasNext()){
Map.Entry me = (Map.Entry) iter.next();
pairs[i] = new NameValuePair(
(String)me.getKey(),((String[]) me.getValue())[0]);
i++;
}
return pairs;
}//end getParams
}
|