到我们的cookie中 //但是一定要按照规范命名 Cookie ck=new Cookie(\ ck.setPath(\ ck.setMaxAge(1800); response.addCookie(ck); out.println(\创建成功并放入小张\ } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
Servlet2
package com.xueye.testsession2;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
public class Servlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\ request.setCharacterEncoding(\ PrintWriter out = response.getWriter(); HttpSession hs=request.getSession(); String name=(String) hs.getAttribute(\
}
}
System.out.println(\out.println(\
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
this.doGet(request, response);
ServletContext
问题:
1 在我们访问某个网站的时候,往往都会看到网站的首页面显示的你是第几位浏览者(网
站计数器)这是怎么实现的?
2 我们在访问某个bbs网站的时候,往往会显示有多少人在线,这是怎么实现的
解决之道ServletContext
? 什么是servletcontext:
要理解servletcontext就必须和cookie,session做一个对比,如图
你可以把ServletContext看成是一个公用的空间,可以被所有的客户访问
Web容器在启动的时候,他会为每个web应用程序创建一个对应的servletcontext对象,它代表当前的web应用 ? ServletContext
1 是在服务器端
2 是被所有的客户端共享
3 ServletContext是当web应用启动的时候自动创建
4 ServletContext对象当web应用关闭/tomcat关闭,web应用reload时会造成
ServletContext销毁
简单代码演示
? Servlet1
package com.xueye.testServletcontext;
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 Servlet1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\ PrintWriter out = response.getWriter(); request.setCharacterEncoding(\ //通过this获取对servletcontext对象 ServletContext servletcontext=this.getServletContext();
//通过Servletconfig获取 //ServletContext servletcontext2=this.getServletConfig().getServletContext(); servletcontext.setAttribute(\李四\ out.println(\中放入了李四\}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }
}
? Servlet2
package com.xueye.testServletcontext;
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 Servlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\ PrintWriter out = response.getWriter(); request.setCharacterEncoding(\ //取出Servletcontext的某个属性 ServletContext servletcontext=this.getServletContext(); String name=(String)servletcontext.getAttribute(\ System.out.println(name); out.println(\得到的名字是=\ servletcontext.removeAttribute(\
}
用法小结
获取Servletcontext:
1 ServletContext servletcontext=this.getServletContext();
2 ServletContext servletcontext2=this.getServletConfig().getServletContext(); 添加属性: Servletcontext.setarrtibute(String ,obj) 取出属性 Servletcontext.getArrtibute(); 删除属性 ServletContext. removeAttribute(\
out.println(\删除了属性\
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }
Servletcontext的应用
1 2
多个servlet可以通过ServletContext对象实现数据的共享 获取web应用的初始化参数
对于在servelt里面的init-param只能用this.getServletConfig().getInitParameter(\来获得里面的值;对于是context-param的要用this.getServletContext().getInitParameter(\来获得
3 实现servlet的转发
this.getServletContext().getRequestDispatcher(\
总之:如果涉及到不同的用户共享数据,而数据量又不大,同时又不希望写入到数据库中,我们可以考虑使用servletcontext
网站计数器:
在网站建设中,经常会统计某个网页被浏览的次数,我们把这个功能叫做计数器:那么这个网站计数器是怎么实现的?怎么才算是一个有效的点击?
1 只要访问过该网页,计算是一次点击,刷新一次也算的,当然这是最简单的
2 不同的ip访问该网页,算一次有效的点击,如果是同一个ip在一定的时间内,不管你
浏览了多少次都算一次
3 用户退出该网站时,在次访问也算一次
Login
package com.xueye.testServletcontext.wangzhanjishu;
import java.io.IOException; import java.io.PrintWrite
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;