在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并不是一个单例