struts action不在是一个单例类

在servlet中,servlet类是一个单例,在servlet中的成员变量,将会被所有请求共享,同时也有可能存在线程安全问题,如有一个成员变量num,每次方法后市的num自增

 1 package action;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 
10 public class TestServelt extends HttpServlet{
11     
12     private int num;
13     
14     @Override
15     protected void service(HttpServletRequest req, HttpServletResponse resp)
16             throws ServletException, IOException {
17         resp.getWriter().println(++num);
18     }
19 }

没访问一次,num就会自增一次,输出为1,2,3,4......

而如果是struts的action

 1 public class ShowWords {
 2 
 3     private int num=0;
 4     public int getNum(){
 5         return this.num;
 6     }
 7     public String execute(){
 8         num++;
 9     }
10 }

在JSP页面添加

${num}

每次输出的都是1,也就是多struts中action并不是一个单例

原文地址:https://www.cnblogs.com/caoyc/p/5579872.html