Compare and contrast. PHP:
<?php
$body = @file_get_contents("php://input");
header('Content-type: text/plain');
print $body;
flush();
?>
Java:
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/reflect")
public class ReflectorServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
dump(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
dump(request, response);
}
private void dump(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/plain");
response.setCharacterEncoding(request.getCharacterEncoding());
final Reader reader = request.getReader();
final Writer writer = response.getWriter();
final StringBuilder builder = new StringBuilder();
final char[] buffer = new char[1024];
int nread;
while ( (nread = reader.read(buffer, 0, buffer.length)) >= 0 )
builder.append(buffer, 0, nread);
final String contents = builder.toString();
response.setContentLength(contents.length());
writer.write(contents);
response.flushBuffer();
reader.close();
writer.close();
}
}
Granted, the Java version does one thing the PHP one doesn't (can you spot it?).
Sometimes the end does justify the means.
2 comments:
Besides reflecting the character encoding back, the Java version does some routing. I like the @WebServlet(url) annotation at least.
LOL there must be a worse version than Java!
Post a Comment