Java/Servlets/Do Get Do Post
Версия от 18:01, 31 мая 2010; (обсуждение)
Содержание
Get Request Parameters in a Servlet
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Main extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
out.println(paramName + " = " + request.getParameter(paramName) + "<br/>");
}
}
}
Print all header information available from the client
/*
* <servlet> <servlet-name>PrintHeader </servlet-name>
* <servlet-class>PrintHeader </servlet-class> </servlet>
*
* <servlet-mapping> <servlet-name>PrintHeader </servlet-name>
* <url-pattern>/PrintHeader </url-pattern> </servlet-mapping>
*
*
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PrintHeader extends HttpServlet {
/**
* doGet implementation, calls printHeader function
*
* @param request
* @param response
* @throws IOException
* @throws ServletException
*
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
printHeader(request, response);
}
/**
* doPost implementation, calls printHeader function
*
* @param request
* @param response
* @throws IOException
* @throws ServletException
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
printHeader(request, response);
}
/**
* Prints client header information that is available
*
* @param request
* @param response
* @throws IOException
* @throws ServletException
*
*/
public void printHeader(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String headers = null;
String htmlHeader = "<HTML><HEAD><TITLE> Request Headers</TITLE></HEAD><BODY>";
String htmlFooter = "</BODY></HTML>";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Enumeration e = request.getHeaderNames();
out.println(htmlHeader);
out.println("<TABLE ALIGN=CENTER BORDER=1>");
out.println("<tr><th> Header </th><th> Value </th>");
while (e.hasMoreElements()) {
headers = (String) e.nextElement();
if (headers != null) {
out.println("<tr><td align=center><b>" + headers + "</td>");
out.println("<td align=center>" + request.getHeader(headers)
+ "</td></tr>");
}
}
out.println("</TABLE><BR>");
out.println(htmlFooter);
}
}
Print various CGI variables that have been requested by the servlet
//*
* <servlet>
* <servlet-name>PrintCGI </servlet-name>
* <servlet-class>PrintCGI
* </servlet-class>
* </servlet>
*
* <servlet-mapping>
* <servlet-name>PrintCGI </servlet-name>
* <url-pattern>/PrintCGI </url-pattern>
* </servlet-mapping>
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PrintCGI extends HttpServlet {
/**
* doGet implementation, calls printCGIValues
*
* @param request
* @param response
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
printCGIValues(request, response);
}
/**
* doPost implementation, calls printCGIValues
*
* @param request
* @param response
* @throws IOException
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
printCGIValues(request, response);
}
/**
* Prints CGI Environment Variables in a table
*
* @param request
* @param response
* @throws IOException
*/
public void printCGIValues(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String headers = null;
String htmlHeader = "<HTML><HEAD><TITLE> CGI Environment Variables </TITLE></HEAD><BODY>";
String htmlFooter = "</BODY></HTML>";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(htmlHeader);
out.println("<TABLE ALIGN=CENTER BORDER=1>");
out.println("<tr><th> CGI Variable </th><th> Value </th>");
out.println("<tr><td align=center>Authentication Type</td>");
out.println("<td align=center>" + request.getAuthType() + "</td></tr>");
out.println("<tr><td align=center>Content Type</td>");
out.println("<td align=center>" + request.getContentType()
+ "</td></tr>");
out.println("<tr><td align=center>Content Type Length</td>");
out.println("<td align=center>" + request.getContentLength()
+ "</td></tr>");
out.println("<tr><td align=center>Query String</td>");
out.println("<td align=center>" + request.getMethod() + "</td></tr>");
out.println("<tr><td align=center>IP Address</td>");
out.println("<td align=center>" + request.getRemoteAddr()
+ "</td></tr>");
out.println("<tr><td align=center>Host Name</td>");
out.println("<td align=center>" + request.getRemoteHost()
+ "</td></tr>");
out.println("<tr><td align=center>Request URL</td>");
out.println("<td align=center>" + request.getRequestURI()
+ "</td></tr>");
out.println("<tr><td align=center>Servlet Path</td>");
out.println("<td align=center>" + request.getServletPath()
+ "</td></tr>");
out.println("<tr><td align=center>Server"s Name</td>");
out.println("<td align=center>" + request.getServerName()
+ "</td></tr>");
out.println("<tr><td align=center>Server"s Port</td>");
out.println("<td align=center>" + request.getServerPort()
+ "</td></tr>");
out.println("</TABLE><BR>");
out.println(htmlFooter);
}
}
Request binder
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestBinder extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
//bind an object to the servlet context
ContextObject contextObj = new ContextObject();
contextObj.put(request.getRemoteAddr(), "" + new java.util.Date());
request.setAttribute("com.jexp.RequestObject", contextObj);
//better display something
RequestDispatcher dispatcher = request
.getRequestDispatcher("/displayAttr");
dispatcher.forward(request, response);
} //end doGet
}
//ContextObject.java
class ContextObject {
private Map map;
public ContextObject() {
map = Collections.synchronizedMap(new HashMap());
}
public void put(Object key, Object value) {
if (key == null || value == null)
throw new IllegalArgumentException(
"Invalid parameters passed to ContextObject.put");
map.put(key, value);
}
public Map getMap() {
return map;
}
public String getValues() {
StringBuffer buf = new StringBuffer("");
Set set = map.keySet();
synchronized (map) {
Iterator i = set.iterator();
while (i.hasNext())
buf.append((String) i.next() + "<br>");
}
return buf.toString();
}
public String toString() {
return getClass().getName() + "[ " + map + " ]";
}
}
Request display
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestDisplay extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
ContextObject obj = (ContextObject) request
.getAttribute("com.jexp.RequestObject");
//display the attribute"s Map keys
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
out
.println("<html><head><title>Request Attribute</title></head><body>");
out.println("<h2>Request attribute values</h2>");
if (obj != null)
out.println(obj.getValues());
out.println("</body></html>");
} //end doGet
}
//ContextObject.java
class ContextObject {
private Map map;
public ContextObject() {
map = Collections.synchronizedMap(new HashMap());
}
public void put(Object key, Object value) {
if (key == null || value == null)
throw new IllegalArgumentException(
"Invalid parameters passed to ContextObject.put");
map.put(key, value);
}
public Map getMap() {
return map;
}
public String getValues() {
StringBuffer buf = new StringBuffer("");
Set set = map.keySet();
synchronized (map) {
Iterator i = set.iterator();
while (i.hasNext())
buf.append((String) i.next() + "<br>");
}
return buf.toString();
}
public String toString() {
return getClass().getName() + "[ " + map + " ]";
}
}
Request header viewer
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestHeaderView extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
//get an Enumeration of all the request header names
Enumeration e = request.getHeaderNames();
//display
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
out.println("<html><head><title>Request Header View</title></head><body>");
out.println("<h2>Request Headers</h2>");
String header = null;
while (e.hasMoreElements()) {
header = (String) e.nextElement();
//getHeader returns null if a request header of that name does not
// exist in the request
out.println("<strong>" + header + "</strong>" + ": "
+ request.getHeader(header) + "<br>");
}
out.println("</body></html>");
} //end doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
doGet(request, response);
}
}
Servlet Request Listener
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
public class ReqListener implements ServletRequestListener {
private static long reqCount;
public void requestInitialized(ServletRequestEvent sre) {
ServletContext context = sre.getServletContext();
ServletRequest request = sre.getServletRequest();
synchronized (context) {
context
.log("Request for "
+ (request instanceof HttpServletRequest ? ((HttpServletRequest) request)
.getRequestURI()
: "Unknown") + "; Count=" + ++reqCount);
}
}
public void requestDestroyed(ServletRequestEvent sre) {
}
}
Simple servlet: Copyright
/*
<servlet>
<servlet-name>Copyright</servlet-name>
<servlet-class>Copyright</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Copyright</servlet-name>
<url-pattern>/Copyright</url-pattern>
</servlet-mapping>
*/
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Copyright extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
java.io.IOException {
java.io.PrintWriter out = response.getWriter();
out.println("Copyright© 2003-2004 Java Source and Support.");
out.close();
}
}