//ServletContext中属性的生命周期从创建开始,到服务器关闭而结束,会常驻服务器内存
//使用:涉及到不同用户共享数据,而这些数据量不大,同时又不希望写入数据库中的时候用
package abc;
import java.io.*;
import javax.servlet.http.*;
public class ServletContextTest extends HttpServlet{
private static final long serialVersionUID = 1L;
//重写init函数,启动服务器时调用一次读取原始访问次数
public void init(){
try{
System.out.println("init");
FileReader f = new FileReader("h:\\a.txt");//创建一个FileReader
BufferedReader bw = new BufferedReader(f);
String numVal = bw.readLine();//读取一行
bw.close();
int times = Integer.parseInt(numVal);
//将times值放入到servletContext
this.getServletContext().setAttribute("visitTimes", times+"");
}catch(Exception ex){
ex.printStackTrace();
}
}
//重写destroy函数,关闭服务器时将新的次数写回文件
public void destroy(){
try{
System.out.println("destroy");
//从servletContext中得到visitTimes
String t=this.getServletContext().getAttribute("visitTimes").toString();
int times = Integer.parseInt(t);
//将新的次数据写回文件
FileWriter f2 = new FileWriter("h:\\a.txt");
BufferedWriter bw2 = new BufferedWriter(f2);
bw2.write(times+"");
bw2.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
res.setContentType("text/html;charset=GBK");//中文乱码
try {
PrintWriter pw = res.getWriter();
//将visitTimes ++
String t =this.getServletContext().getAttribute("visitTimes").toString();
int times = Integer.parseInt(t);
times ++ ; //增加一次
this.getServletContext().setAttribute("visitTimes", times+"");
//显示用户的IP地址
pw.println("你的IP地址是:" + req.getRemoteAddr()+"<br>" );
pw.println("你的主机名是:" + req.getRemoteHost()+"<br>" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//处理post请求
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res); //将get请求和post请求放在一起
}
}
//使用:涉及到不同用户共享数据,而这些数据量不大,同时又不希望写入数据库中的时候用
package abc;
import java.io.*;
import javax.servlet.http.*;
public class ServletContextTest extends HttpServlet{
private static final long serialVersionUID = 1L;
//重写init函数,启动服务器时调用一次读取原始访问次数
public void init(){
try{
System.out.println("init");
FileReader f = new FileReader("h:\\a.txt");//创建一个FileReader
BufferedReader bw = new BufferedReader(f);
String numVal = bw.readLine();//读取一行
bw.close();
int times = Integer.parseInt(numVal);
//将times值放入到servletContext
this.getServletContext().setAttribute("visitTimes", times+"");
}catch(Exception ex){
ex.printStackTrace();
}
}
//重写destroy函数,关闭服务器时将新的次数写回文件
public void destroy(){
try{
System.out.println("destroy");
//从servletContext中得到visitTimes
String t=this.getServletContext().getAttribute("visitTimes").toString();
int times = Integer.parseInt(t);
//将新的次数据写回文件
FileWriter f2 = new FileWriter("h:\\a.txt");
BufferedWriter bw2 = new BufferedWriter(f2);
bw2.write(times+"");
bw2.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
res.setContentType("text/html;charset=GBK");//中文乱码
try {
PrintWriter pw = res.getWriter();
//将visitTimes ++
String t =this.getServletContext().getAttribute("visitTimes").toString();
int times = Integer.parseInt(t);
times ++ ; //增加一次
this.getServletContext().setAttribute("visitTimes", times+"");
//显示用户的IP地址
pw.println("你的IP地址是:" + req.getRemoteAddr()+"<br>" );
pw.println("你的主机名是:" + req.getRemoteHost()+"<br>" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//处理post请求
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res); //将get请求和post请求放在一起
}
}