在修补servlet中的jsp文件时获取NullPointerException

时间:2013-07-25 22:05:20

标签: java jsp java-ee tomcat servlets

我将Apache Tomcat Web服务器嵌入到普通的Java桌面应用程序中。 Embedding Tomcat

我在我的应用程序中添加了多个servlet和映射:

import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;

public class Test {
    public static void main(String[] args) {
        try {
            Tomcat tomcat = new Tomcat(); // creating a tomcat instance
            tomcat.setPort(8080); // set the port
            // Creating a context:
            File docBase = new File("src/");
            Context ctx = tomcat.addContext("", docBase.getAbsolutePath());
            // Adding servlet
            Tomcat.addServlet(ctx, "Input", new InputHandler());
            ctx.addServletMapping("/input", "Input");
            tomcat.start();
            while(true) {
                Thread.sleep(5000);
            }
        } catch (LifecycleException | InterruptedException ex) {
            System.err.println(ex);
        }
    }
}

这是InputHandler类源代码,它是HttpServlet类型:

public class InputHandler extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // This is where I have problem
        // I think because it can't find the index.jsp file getRequestDispatcher
        // returns null as described in [getRequestDispatcher() documentation][2]
        request.getRequestDispatcher("src/web/index.jsp").forward(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException{
        processRequest(request, response);
    }
    // ... and also doPost()...
}

getRequestDespatcher() Documentation

我的项目结构是这样的:

+ Test
|
+---+ Source Packages
|   |
|   +---+ test
|   |   |
|   |   +--- InputHandler.java
|   |   |
|   |   +--- Test.java
|   |
|   +---+ web
|       | 
|       +--- index.jsp
|
+---+ Libraries

我做了所有内容,如附加链接1。一切都很好,除了在NullPointerException方法中执行波纹管线时抛出InputHandler.processRequest()

request.getRequestDispatcher("src/web/index.jsp").forward(request, response);

我也试过以下情况,但没有任何变化:

request.getRequestDispatcher("../web/index.jsp").forward(request, response);

request.getRequestDispatcher(AbsolutePathToIndex.jsp).forward(request, response);

这有什么问题?

注意:我不熟悉Java Enterprise Edition

0 个答案:

没有答案