2014-01-05 71 views
0

我为我的HttpservletRequest设置路径信息如下。HttpservletRequest路径信息设置不正确

request.setAttribute("javax.servlet.include.path_info", pathInfo); 

在此声明后,我试图获取pathinfo,但返回null。

String info = request.getPathInfo(); 

info is null here。

我是否正确设置路径?

回答

2

它不工作的方式。除了属性以外,HttpServletRequest对象是只读的。你可以做的事情是用一个返回你想要的路径信息的包装代替请求对象。通常你会在Filter中这样做,并将请求包装在HttpServletRequestWrapper中。

+0

谢谢肖恩..其实我想修改收到的请求的路径信息。修改请求的路径信息后,我必须调用actionservlet.post操作。是否有任何示例资源可用于修改请求路径信息。 – user3147325

+0

@ user3147325这正是httpservlerwrapper的用例。覆盖包装器中的gatPathInfo方法以返回所需的路径信息。 –

1

第二部分是错误的。如果您将属性设置为servlet请求,则只能通过getAttribute方法获取它。

因此,如果您设置使用值:

request.setAttribute("javax.servlet.include.path_info", pathInfo);

的你会得到该值重新使用:

request.getAttribute("javax.servlet.include.path_info");

现在request.getPathInfo()给人的URI后附加路径信息。你的情况这将是空的,因为那里将是URI后什么:

EG - 如果你有一个url = http://someHost.com/servletName?id=1234&name=fred

request.getPathInfo()将返回ID = 1234 *名称=弗雷德

+0

感谢您的回复。实际上,我想修改现有的请求对象路径信息和参数。修改后,我想用这个请求调用一个actionservlet的dopost。有任何修改请求对象的方法(好/坏)。我已经看到HttpServletRequestWrapper的例子,有点困惑。你能指出一个合适的例子,适合我的要求 – user3147325

+0

你为什么要这样做?无论如何,你无法修改servlet的pathInfo。它是只读的。我将创建一个pathInfo作为requestAttribute并将其传递给servlet。在这个servlet中,我会得到它并将其用于doPosting。那有意义吗。如果不是,我不明白你的问题。 – avijendr