从HttpServletRequest中提取URL

时间:2014-08-14 10:42:11

标签: java

我正在维护一个Java servlet应用程序,现在必须从Web服务请求中提取URL,以确定要采取什么操作,具体取决于所谓的Web服务URL。我发现它与我导入到类中的HttpServletRequest有关。我已经尝试在Web服务端点内部设置以下内容,但它一直告诉我urlrequest未初始化。我做错了什么?

HttpServletRequest urlrequest;
StringBuffer url = urlrequest.getRequestURL();

3 个答案:

答案 0 :(得分:3)

您正在使用的HttpServletRequest应该是doGet,doPut,doPost或doDelete的输入参数HttpServletRequest。 然后肯定HttpServletRequest.getRequestURL将重建客户端使用的URL,不包括查询字符串参数。

答案 1 :(得分:0)

您的代码是正确的,但必须在扩展HttpServlet的类的doPost(request, response)doGet(request, response)等方法中访问。

原因是当调用HttpServlet的service()方法时,它会为您提供请求和响应对象,前提是客户端会向您的servlet提示请求。

答案 2 :(得分:0)

您无法在java中定义变量并在其上调用方法而无需事先初始化它。 在第一行:HttpServletRequest urlrequest;您只是定义一个变量。由于它未初始化,因此它是null,您无法使用它。

删除此行并使用传递给Servlet中doGet(或doPost)方法的参数。 例如,如果您的servlet是这样的:

public class MyServlet extends HttpServlet {

    ...

public void doGet(HttpServletRequest request,
                  HttpServletResponse response) throws Exception {

    ...
}

而不是代码只需在doGet方法的主体中添加以下行:

public void doGet(HttpServletRequest request,
                  HttpServletResponse response) throws Exception {

    ...
    StringBuffer url = request.getRequestURL();
    ...
}

在此行之后,您应该能够使用url变量。