This question already has an answer here:
Different ways to get Servlet Context
(1个答案)
3年前关闭。
我有
在我的
我使用
(1个答案)
3年前关闭。
我有
SampleServlet
类,在其中我重写了doGet()
方法,如下所示protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String userid = (String)request.getServletContext().getInitParameter("userid");
out.print("Name = " + name + "<br>");
out.print("User id= " + userid+ "<br>");
}
在我的
Web.xml
中,我添加了以下上下文参数,<context-param>
<param-name>userid</param-name>
<param-value>ABC12345</param-value>
</context-param>
我使用
request.getServletContext().getInitParameter("userid");
语句访问该参数。request.getServletContext().getInitParameter("userid");
工作正常。但是getServletContext().getInitParameter("userid");
和request.getServletContext().getInitParameter("userid");
之间没有任何区别,两者都给我相同的输出,但是我对这两个没有正确的认识。 最佳答案
您只能在代码位于扩展HttpServlet的类中时直接调用getServletContext()
。这是因为HttpServlet基类已定义此方法。request.getSession().getServletContext()
返回的ServletContext与getServletContext()
相同。HttpSession包含对该会话所属的ServletContext的引用。
只要您的代码在servlet类中,就可以使用任何都可以调用的东西。
如果您有一个不扩展servlet的自定义类,则需要在该自定义类中传递会话对象以对其进行处理。对会话的引用使您可以使用方法访问ServletContext
session.getServletContext()
。
07-24 09:22