package com.shunfei;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CountTime extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.统计浏览器的访问次数 得到一次请求我就计数一次
//得到一个servletContext 对象 他是一个域对象,被共享的
ServletContext sc = this.getServletContext();
response.setContentType("text/html;charset=utf-8");
//先获取他属性的值,如果是第一次访问就是null,我就计数一次
Integer time = (Integer) sc.getAttribute("time");
if(time==null) {//set 回去
sc.setAttribute("time", 1);
response.getWriter().write("第"+1+"次访问");
}else{//不是第一次请求我就计数次数+1,再赋值回去
sc.setAttribute("time", time+1);
if(time==4) {//清空重新计数
sc.setAttribute("time", null);
}
response.getWriter().write("第"+time+"次访问");
}
// response.getWriter().write("第"+sc.getAttribute("time")+"次访问");
}
}
主要使用getRealPath()方法它的作用是获取工程中资源文件绝对的磁盘路径。
需求:在web工程中创建4个txt文件,创建一个servlet,在servlet中读取四个txt文件的内容。
1..txt src目录 /WEB-INF/classes/1.txt
、 2.txt WebRoot目录
3.txtWEB-INF目录
4.txt放在工程的根目录下。
重要点:getRealPath(“/”)这代表的是一个绝对路径,它指向的是当前工程在tomcat下的绝对磁盘路径。
1. 1.txt是放置在src下,src下的内容最后会被部署到tomcat/webapps/工程/WEB-INF/classes下。
2. 2.txt是放置在myeclipse下的WebRoot下,也就是直接放置在tomcat下的自己的工程下
3. 3.txt它是放置在WEB-INF下,它就会放置在tomcat/工程/WEB-INF下
4. 4.txt它是放置在myeclipse工程的根目录下,不会被发布到tomcat中。
扩展:对于src下的1.txt文件,它的位置比较特殊,会被发布到classes目录下,
Classes目录它是用于存储.class文件的目录,我们管它叫classpath路径。
在我们的java中,我们想要获取classpath路径,可以直接通过类的Class对象获取到。
Class.getResource(“/”).getPath()得到我们的classpath路径,其实对于web project得到的就是classes目录的一个绝对磁盘路径。
package com.shunfei;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Get extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//读取src下的1.txt
ServletContext sc = this.getServletContext();
//String path = sc.getRealPath("/WEB-INF/classes/1.txt");
//WEBRoot下的2.txt
//String path = sc.getRealPath("/2.txt");
//WEB-INF/3.txt
String path = sc.getRealPath("/WEB-INF/3.txt");
//4.txt 在Test 的项目下,无法读取.
//写出内容到页面
System.out.println(path);
BufferedReader br = new BufferedReader(new FileReader(path));
//String line = br.readLine();
String line =null;
PrintWriter pw = response.getWriter();
//System.out.println(line);
while((line=br.readLine())!=null) {
pw.print(line);
}
}
}