3 import java.io.IOException;
4 import java.io.UnsupportedEncodingException;
5 import java.net.URLDecoder;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
9 import javax.servlet.ServletConfig;
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
15 public class Pnews extends HttpServlet {
16 private static final Logger LOG = Logger.getLogger(Pnews.class.getName());
17 private static final long serialVersionUID = 1L;
19 private static String getQueryParameter(HttpServletRequest rq, String key)
20 throws UnsupportedEncodingException {
25 q = rq.getQueryString();
30 params = URLDecoder.decode(q, "UTF-8").split("&");
32 for (String p: params) {
35 if (idx > 1 && p.substring(0, idx).equals(key))
36 return p.substring(idx + 1);
42 private static void redirect(HttpServletRequest rq, HttpServletResponse rp) {
46 redirectURL = getQueryParameter(rq, "url");
48 LOG.info("Request redirection to " + redirectURL);
50 if (redirectURL != null) {
51 rp.setHeader("Location", redirectURL);
52 rp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
54 rp.setStatus(HttpServletResponse.SC_NOT_FOUND);
57 } catch (UnsupportedEncodingException e) {
59 LOG.log(Level.SEVERE, "redirect failure", e);
60 rp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
65 protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
68 LOG.info("doGet " + req.getRequestURI());
70 path = req.getPathInfo();
72 if (path.equals("/redirect")) {
76 resp.getWriter().write("Not found " + req.getPathInfo());
77 resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
78 } catch (IOException e) {
79 LOG.log(Level.SEVERE, "doGet failure", e);
85 public void init(ServletConfig config) throws ServletException {
86 LOG.info("Pnews servlet init " + config.getServletContext().getContextPath());