JavaWeb重点分析(9)

2019-09-02 19:01

到我们的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;


JavaWeb重点分析(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江苏省1:50万区域环境地质调查报告 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: