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对象不同。

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐