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()方法它的做用是获取工程中资源文件绝对的磁盘路径。html
需求:在web工程中建立4个txt文件,建立一个servlet,在servlet中读取四个txt文件的内容。java
1..txt src目录 /WEB-INF/classes/1.txtweb
、 2.txt WebRoot目录浏览器
3.txtWEB-INF目录tomcat
4.txt放在工程的根目录下。app
重要点:getRealPath(“/”)这表明的是一个绝对路径,它指向的是当前工程在tomcat下的绝对磁盘路径。eclipse
1. 1.txt是放置在src下,src下的内容最后会被部署到tomcat/webapps/工程/WEB-INF/classes下。webapp
2. 2.txt是放置在myeclipse下的WebRoot下,也就是直接放置在tomcat下的本身的工程下this
3. 3.txt它是放置在WEB-INF下,它就会放置在tomcat/工程/WEB-INF下spa
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); } } }