Servlet request.getServletPath

问题描述 投票:0回答:1

我是 Servlet 新手,我正在尝试学习,但我遇到了问题。

我有一个servlet类,我想做CRUD操作。我希望每个操作都重定向到特定的方法。但我遇到了一个问题,它不会重定向。我通过 POSTman 进行了测试,但每当我尝试发送请求时,它都不会收到,并且我的控制台中什么也没有出现。

仅使用默认设置。

这是我的@WebServlet(“/预算”)

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("budgetController, doPost() Started");
        String action = request.getServletPath();
        System.out.println("doPost, action ==>" + action);

        switch (action) {

        case "/add": {
            addNewBudget(request, response);
            break;
        }
        case "/update": {
            updateBudget(request, response);
            break;
        }
        case "/delete": {
            deleteBudget(request, response);
            break;
        }
        case "/get": {
            getBudget(request, response);
            break;
        }

        case "/list": {
            getAllBudgets(request, response);
            break;
        }
        default: {
            getAllBudgets(request, response);
            break;
        }

我尝试更改 @WebServlet("/budgets") 但无法解决。

java servlets
1个回答
0
投票

当前您的 servlet 侦听一个特定路径

/budgets

要使 servlet 侦听预算路径后面的所有内容,您应该在 WebServlet 注释中设置以下 URL 模式:

/budgets/*

为了读取额外的路径信息,您应该使用

getPathInfo()
方法而不是
getServletPath()
方法。

但是,如果没有额外的路径信息,

getPathInfo()
可能会返回
null
。您还应该检查是否有
null

因此将代码更改为:

@WebServlet("/budgets/*)
....
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    System.out.println("budgetController, doPost() Started");
    String action = request.getPathInfo();
    System.out.println("doPost, action ==>" + action);

    if (action==null)
      getAllBudgets(request, response);

    switch (action) {

    case "/add": {
        addNewBudget(request, response);
        break;
    }
    case "/update": {
        updateBudget(request, response);
        break;
    }
    case "/delete": {
        deleteBudget(request, response);
        break;
    }
    case "/get": {
        getBudget(request, response);
        break;
    }

    case "/list": {
        getAllBudgets(request, response);
        break;
    }
    default: {
        getAllBudgets(request, response);
        break;
    }
© www.soinside.com 2019 - 2024. All rights reserved.