gpt4 book ai didi

java - 我们可以在servlet中的方法之外声明一个字段吗

转载 作者:行者123 更新时间:2023-12-02 03:49:46 24 4
gpt4 key购买 nike

我们可以将类的对象声明为 servlet 中的实例变量吗

public class BookServ extends HttpServlet {
private static final long serialVersionUID = 1L;

// declared object
User user=new User();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
}
}

最佳答案

当然可以。

User 字段没有多大意义,因为您的容器通常会实例化一个 servlet 实例,并包含一个包含 User 实例。但是这个 Servlet 实例允许在多个线程上并行运行,因此多个线程可以同时访问单个 User 实例。

您可能希望在 servlet 中存储状态,这些状态在 servlet 的 init() 方法中初始化:

    public class BookServ extends HttpServlet {
private static final long serialVersionUID = 1L;

private String servletUID = null;

public void init() throws ServletException {
servletUID = ... generate a random String as UID ...
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
}
}

尽管如此,您应该意识到有几个上下文,应该用于存储 servlet 数据 (request.getServletContext())、 session 数据 (request.getSession()) code> 或请求数据 (request.setAttribute()/request.getAttribute()) 到。因此,通常 Servlet 中几乎不需要字段。

另请检查 How do servlets work? Instantiation, sessions, shared variables and multithreading

关于java - 我们可以在servlet中的方法之外声明一个字段吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com