我正在维护一个Java servlet应用程序,现在必须从Web服务请求中提取URL,以确定要采取什么操作,具体取决于所谓的Web服务URL。我发现它与我导入到类中的HttpServletRequest有关。我已经尝试在Web服务端点内部设置以下内容,但它一直告诉我urlrequest未初始化。我做错了什么?
HttpServletRequest urlrequest;
StringBuffer url = urlrequest.getRequestURL();
答案 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
变量。