ServletContext获取成功登陆总数
> 每个web工程都只有一个ServletContext对象。 说白了也就是不管在哪个servlet里面,获取到的这个类的对象都是同一个。
利用下面这个例子体现这一点。
分析:
LoginServlet
//1、获取数据
String name = request.getParameter("username");
String passward = request.getParameter("password");
System.out.println("name = " + name +" " + "password = " + passward);
//2、校验数据
PrintWriter pw = response.getWriter();
if("admin".equals(name)&&"123".equals(passward)) {
//System.out.println("登陆成功");输出到控制台
//pw.write("login success...");//输出到网页
//1、成功的次数累计
Object obj = getServletContext().getAttribute("count");
int totalcount = 0;
if(obj != null) {
totalcount = (int) obj;
}
System.out.println("已知成功登陆的次数是:" + totalcount);
getServletContext().setAttribute("count", totalcount+1);
//2、跳转到成功的界面
//成功就跳转到login_success.html页面
//设置状态码,重新定位状态码
response.setStatus(302);
//定位跳转的页面是哪一个页面
response.setHeader("Location", "login_success.html");
}
else {
//System.out.println("登陆失败");
pw.write("login fail...");
}
CountServlet
//1、取值
int count = (int) getServletContext().getAttribute("count");
//2、输出到界面
response.getWriter().write("login success count :" + count + "次");
login.html
<h2>请输入以下内容,完成登陆</h2>
<form action="LoginServlet" method="get">
账号:<input type="text" name="username"/></br>
密码:<input type="text"name="password"/></br>
<input type="submit" value="登陆"/>
</form>
login_success.html
<h2>登陆成功</h2>
<a href="CountServlet">获取网站成功登陆总数</a>
ServletContext何时创建,何时销毁
>服务器启动时,会为托管的每一个web应用程序,创建一个ServletContext对象
>从服务器移除托管,或者是关闭服务器
ServletContext的作用范围
>只要在这个项目里面,都可以取,只要同一个项目。A项目存,在B项目取,是取不到的,ServletContext对象不同。