)在以下代码中,如何获取当前Servlet的ServletContext对象? public class TestServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ A. ServletContext.getContext() B. this.getServletContext() C. response.getServletContext() D. request.getContext()
时间: 2024-02-26 12:57:38 浏览: 138
B. this.getServletContext() 可以获取当前Servlet的ServletContext对象。Servlet是运行在Servlet容器中的,每个Servlet都有自己的ServletContext对象,用于存储Servlet的配置信息、共享数据等。在Servlet中,可以使用this关键字获取当前Servlet的引用,再调用getServletContext()方法获取ServletContext对象。例如,以下代码段获取了当前Servlet的ServletContext对象,并将一个名为"username",值为"Tom"的属性添加到ServletContext中:
```
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
ServletContext context = this.getServletContext();
context.setAttribute("username", "Tom");
}
}
```
需要注意的是,ServletContext对象的作用域是整个Web应用程序,因此可以在不同的Servlet中共享数据。
相关问题
@WebServlet(value = "/index", loadOnStartup = 1) public class IndexServlet extends HttpServlet { @Override public void init() throws ServletException { Product p1 = new Product("1", "huawei_mate50", 5999.0, "new huawei"); Product p2 = new Product("2", "iphone13", 5899.0, "new iphone"); Product p3 = new Product("3", "mi10", 5555.0, "mi"); Product p4 = new Product("4", "onePlus10", 5000.0, "one"); Product p5 = new Product("5", "oppo", 5000.0, "one"); List<Product> productList = new ArrayList<>(); productList.add(p1); productList.add(p2); productList.add(p3); productList.add(p4); productList.add(p5); getServletContext().setAttribute("products", productList); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); List<Product> productList = (List<Product>) getServletContext().getAttribute("products"); for (Product product : productList) { String item = response.encodeURL(request.getContextPath() + "/item?id=" + product.getId()); response.getWriter().println("<a href='" + item + "'>" + product.getName() + "</a>"); } response.getWriter().println("浏览足迹为:"); History.showRecentViews(request, response); } }
这段代码是一个 Java Servlet,它的作用是在访问 /index 页面时,在页面上展示一些商品链接,并显示用户的浏览足迹。在 init() 方法中,创建了一个包含 5 个产品的 List,然后将其存储在 ServletContext 中,以便在整个应用程序中共享。在 doGet() 方法中,获取存储在 ServletContext 中的产品列表,遍历每个产品,生成商品链接并输出到页面上。最后,调用历史记录类 History 的 showRecentViews() 方法,展示用户最近浏览过的商品。这段代码有些问题,比如没有处理异常等,但是主要功能已经实现。
如何在HttpServlet中获取ServletContext对象?
在HttpServlet中可以通过重写`init()`方法来获取ServletContext对象,代码如下:
```java
public class MyServlet extends HttpServlet {
private ServletContext context;
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
}
}
```
在`init()`方法中,我们可以通过`config`参数获取`ServletContext`对象,然后把它保存在成员变量`context`中。这样,在servlet的其他方法中就可以使用`context`对象了。
阅读全文