The servlet container provides several ways to use a rwsf::HttpServletResponse object to return a response to a client. This section discusses the trade-offs involved in each approach.
Each response object contains an output object that supports a set of overloaded print() and println() functions described in the Servlet Specification. These functions are convenient for programmers accustomed to Java servlet programming. The sample below shows a doGet function that creates a simple HTML response with the Java-like functions:
void myServlet::doGet (rwsf::HttpServletRequest& request, rwsf::HttpServletResponse& response) { response.setContentType("text/html"); // 1 rwsf::ServletOutputStream& out = response.getOutputStream(); // 2 out.println("<html>"); // 3 out.println("<head><title>Simple Response</title></head>"); out.println("<body bgcolor=\"white\">"); out.println("<h1>Simple Response</h1>"); out.println("A simple HTML response."); out.println("</body></html>"); }
//1 | Sets the Content-Type of the response to text/html. A client may use the Content-Type to determine the kind of document in the response. Without this line, some clients interpret the response as plain text. |
//2 | Gets the output stream from the response. |
//3 | Prints a line of the response to the client. In this version, the servlet prints the string to the client using the Java-like function println(). |
An rwsf::ServletResponse also provides a setPayload() function. The function sets the body of the response directly, from a single string. This is the most efficient method of setting the content of a response. The doGet function below constructs an string, then uses the setPayload() function to create the response.
void myServlet::doGet (rwsf::HttpServletRequest& request, rwsf::HttpServletResponse& response) { response.setContentType("text/html"); // 1 std::string output("<html>\n" "<head><title>Simple Response</title></head>\n" "<body bgcolor=\"white\">\n" "<h1>Simple Response</h1>\n" "A simple HTML response.\n" "</body></html>\n"); // 2 response.setPayload(output); // 3
}
//1 | Sets the Content-Type of the response to text/html. A client may use the Content-Type to determine the kind of document in the response. Without this line, some clients interpret the response as plain text rather than HTML. |
//2 | Creates an string containing the response. |
//3 | Sets the content of the response to output. In this version, the servlet sets the entire response in a single operation. |
The related function appendPayload() appends a string to the current contents of the response.
©2004-2007 Copyright Quovadx, Inc. All Rights Reserved.
Quovadx and Rogue Wave are registered trademarks of Quovadx, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.