整个Servlet对象在tomcat里面只有一个
- 问题描述:
- 写一个Servlet对象,使用不同的浏览器浏览时,刷新,会出现数据安全问题。由于servlet对象只有一个,其中的属性很容易称为servlet方法执行的临界资源,尽可能不要在Servlet中定义成员变量
- 解决方法:
- 在servlet中添加同步代码块
代码示例
package com.only;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 写一个Servlet对象,使用不同的浏览器浏览时,刷新,会出现数据安全问题
* 由于servlet对象只有一个,其中的属性很容易称为servlet方法执行的临界资源,尽可能不要在Servlet中定义成员变量
*
* 解决方法:
* 添加同步代码块
*/
public class CountServlet extends HttpServlet {
private int count = 0;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
synchronized (this) {
count++;
PrintWriter pw = response.getWriter();
pw.println("<h2>你是第" + count + "个访问者</h2>");
pw.flush();
}
}
}