1.Servlet与线程安全
因为Servlet只有一个实例对象,所以就会出现一个Servlet同时处理多个请求的情况,那么Servlet就是线程不安全的,但这也说明Servlet的工作效率很高。但是注意以下细节可以尽可能避免数据不同步问题,避免安全问题。
(1)不要再Servlet中创建成员,创建局部变量即可;
(2)可以创建无状态(无成员变量的类对象)的成员
class Person{
//该类中没有成员变量
public void sop(){
System.out.println("Hello world");
}
}
class MyServlet extends HttpServlet throws Exception{
private Person p=new Person();
public void doGet(...){...}
public void doPost(...){...}
}
(3)可以创建有状态的成员,但状态必须是只读的。
class Person{
private String name="zhangsan";
public String getName(){
return name;
}
//该类中只有getName方法,没有setName方法,即访问该成员变量时,只能读,不能写。
public void sop(){
System.out.println("Hello world");
}
}
class MyServlet extends HttpServlet throws Exception{
private Person p=new Person();
public void doGet(...){...}
public void doPost(...){...}
}