ServletContext网站计数器统计访问量等方法。1.index.jap
<%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<meta http-equiv=”pragma” content=”no-cache”>
<meta http-equiv=”cache-control” content=”no-cache”>
<meta http-equiv=”expires” content=”0″>
<meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
<meta http-equiv=”description” content=”This is my page”>
<!–
<link rel=”stylesheet” type=”text/css” href=”styles.css”>
–>
<style type=”text/css”>
color: #0F0;
font-size: 24px;
}
body {
background-color: #000;
margin-top: 50px;
}
font-size: 36px;
}
<form action=”/WebCounter/LoginCheck” method=”post”>
</body>
</html>
2. LoginCheck.java
package com.ru.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginCheck extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
request.setCharacterEncoding(“utf-8″);
String username=request.getParameter(“username”);
String password=request.getParameter(“password”);
if (“123456″.equals(password)) {
//创建cookie
String value=URLEncoder.encode(username,”utf-8″);
Cookie cookie=new Cookie(“username”,value);
cookie.setMaxAge(3600);
response.addCookie(cookie);
//获取ServletContext
ServletContext servletcontext=this.getServletContext();
String num=(String)servletcontext.getAttribute(“countnum”);
int num1=Integer.parseInt(num)+1;
servletcontext.setAttribute(“countnum”, “”+num1);
//转发
request.getRequestDispatcher(“/WebCounter”).forward(request, response);
} else {
request.setAttribute(“errorinf”, “error”);
request.getRequestDispatcher(“index.jsp”).forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
this.doGet(request, response);
}
}
3.InitServlet.java(这个servlet需要随着web应用启动所以
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.ru.controller.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>//需要加入load-on-startup
</servlet>
<servlet>
)
package com.ru.controller;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
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 InitServlet extends HttpServlet {
public void destroy() {
//通过ServletContext得到文件的实际路径
ServletContext servletcontext=this.getServletContext();
String path=servletcontext.getRealPath(“recoder.text”);
//创建文件输入流
FileWriter filewriter=null;
//缓存文件
BufferedWriter bufferedwriter=null;
try {
//创建通道
filewriter=new FileWriter(path);
//缓存文件
bufferedwriter=new BufferedWriter(filewriter);
String num=(String)servletcontext.getAttribute(“countnum”);
//写入文件内容
bufferedwriter.write(num);
bufferedwriter.close();
filewriter.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
} catch (Exception e) {
e.printStackTrace();
}
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
this.doGet(request, response);
}
public void init() throws ServletException {
// Put your code here
System.out.println(“init……………………………………….”);
//通过ServletContext得到文件的实际路径
ServletContext servletcontext=this.getServletContext();
String path=servletcontext.getRealPath(“recoder.text”);
System.out.println(path);
//创建文件输入流
try {
//创建通道
FileReader filereader=new FileReader(path);
//缓存文件
BufferedReader bufferedreader=new BufferedReader(filereader);
//读取文件内容
String num=bufferedreader.readLine();
System.out.println(num);
//设置servletcontext属性
servletcontext.setAttribute(“countnum”,num);
bufferedreader.close();
filereader.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
4.WebCounter.java
package com.ru.view;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WebCounter extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
String username=null;
Cookie cookie=null;
Cookie cookies[]=request.getCookies();
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if (“username”.equals(cookie.getName())) {
username=URLDecoder.decode(cookie.getValue(),”GBK”);
out.println(“欢迎”+username+”登录”);
}
}
ServletContext servletcontext=this.getServletConfig().getServletContext();
String num=(String)servletcontext.getAttribute(“countnum”);
int num1=Integer.parseInt(num);
out.println(“您是第”+num1+”为登录用户”);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
this.doGet(request, response);
}
}