2016-11-17 123 views
1

我想獲取servlet中的路徑變量。假設網址是www.demo.com/123/demo。我想從路徑中獲取123的值,而不進行任何字符串操作。如何在servlet中獲取路徑變量值

注意:以下servlet沒有任何web.xml配置。我的代碼是:

@WebServlet(urlPatterns = { "/demo" }) 
public class DemoServlet extends HttpServlet { 

    public DemoServlet() 
    { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     doPost(request,response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     sysout("demo");  
    } 
} 

回答

0

您引用的URL部分是「上下文」。使用request.getContextPath()得到這個。以你爲例,這將返回/123。如果你想正好123你將不得不刪除前導斜槓。

documentation

返回請求URI指示的 請求的上下文的一部分。上下文路徑始終在請求URI中首先出現。 路徑以「/」字符開始,但不以「/」 字符結尾。對於默認(root)上下文中的servlet,此方法 返回「」。該容器不解碼此字符串。

+0

參見:http://stackoverflow.com/a/21046620/446738 – worpet

+0

對不起,我錯提到實際的URL是www.demo.com/test/123/demo.In該URL的上下文路徑是測試但我想在測試和演示之間得到123.在春天,我可以用@pathparam註釋來做到這一點。但在sevlet中,我不知道該怎麼做。這是問題所在。 – pavithran

+0

上面的鏈接顯示了所有獲取URL部分的方法。如果不進行一些基本的字符串操作,沒有辦法確切地找到你正在尋找的東西。 – worpet