我正在使用 Webservlet,我想在 url 本身中传递参数。就像是
@WebServlet("/profile/{id}")
public class ProfileServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) {
String idstr = req.getParameter("id");
int id = idstr == null ? (int)req.getSession().getAttribute("userid") : Integer.parseInt(idstr);
Profile profile = ProfileDAO.getForId(id);
req.setAttribute("profile",profile);
req.getRequestDispatcher("/WEB-INF/profile.jsp").forward(req,res);
}
}
但我似乎在文档中找不到任何允许我执行此操作的内容。我知道我能做到/profile?idstr=1234
或者其他什么,但是有没有办法可以使用 WebServlet 将其放入 URL 中?或者我需要一个不同的框架来做到这一点......
我自己寻找了足够长的时间,并找到了解决方案。
您可以尝试获取当前放入浏览器 url 中的 url,例如:
../个人资料/this_id
你无法得到这个
this_id
以一种简单的方式,但由于内部 servlet 前向调度,这并不总是绑定。有时request.getRequestURI()
根据需要工作,您可以检查它:
String url = null;
url = (String) request.getAttribute("javax.servlet.forward.request_uri");
url = url == null ? ((HttpServletRequest) request).getRequestURI() : url;
or
request.getAttribute("javax.servlet.include.request_uri")
如果你使用<jsp:include tag>
如果您的网址是
www.example.com/profile/Ted
结果将是
简介/特德
这样您就可以轻松获得所需的东西。
欲了解更多信息,请看这里Java HttpServletRequest 获取浏览器 URL 栏中的 URL https://stackoverflow.com/questions/1256562/java-httpservletrequest-get-url-in-browsers-url-bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)