嵌入式码头:获取后置参数

时间:2015-12-16 10:52:34

标签: java embedded-jetty

我正在使用这样的嵌入式码头:

    Server server = new Server(7498);

    URL url = Main.class.getClassLoader().getResource("html");

    URI webRootUri = null;
    try {
        webRootUri = url.toURI();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    ServletContextHandler context = new ServletContextHandler(
            ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    try {
        context.setBaseResource(Resource.newResource(webRootUri));
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    context.setWelcomeFiles(new String[] { "index.html" });

    ServletHolder holderPwd = new ServletHolder("default",
            DefaultServlet.class);
    holderPwd.setInitParameter("cacheControl", "max-age=0,public");
    holderPwd.setInitParameter("useFileMappedBuffer", "false");
    holderPwd.setInitParameter("dirAllowed", "true");
    context.addServlet(holderPwd, "/");

    server.setHandler(context);

    try {
        server.start();
        //            server.dump(System.err);
    } catch (Exception e1) {
        e1.printStackTrace();
    }

予。即我指的是src/main/resources文件夹中的静态资源。

如何处理帖子参数?我正在发出一个ajax帖子请求。

我知道我的ServletContextHandlerhandle方法。我是否需要创建自己的类来扩展ServletContextHandler

1 个答案:

答案 0 :(得分:2)

您使用的是ServletContextHandler常用设置。

  1. 为自己创建一个新的HttpServlet
  2. 将其添加到您想要的(servlet)url-pattern下的ServletContextHandler
  3. 让它覆盖.doPost()方法
  4. 阅读POST请求
  5. 的请求参数
  6. 相应地处理它们
  7. 产生回复
  8. main() ServletContextHandler的{​​{1}}步骤#2的变化是什么......

    context.addServlet(MyPostServlet.class, "/api");
    

    MyPostServlet.java看起来像这样

    public class MyPostServlet extends HttpServlet
    {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
        {
            // Get POST parameters
            String val = req.getParameter("foo");
            // Do something with 'foo'
            String result = backend.setValue("foo", val);
            // Write a response
            resp.setContentType("text/plain");
            resp.setCharacterEncoding("UTF-8");
            resp.getWriter().printf("foo = %s (result: %s)%n",val,result);
        }
    }