web服务器程序主要有哪些 web服务器有哪些( 三 )

解码与编码(与Cookie无关 , 只是解决乱码的一种方式)
//传中文 , 避免乱码 。可以进行编码Cookie cookie = new Cookie("lastTime",URLEncoder.encode("尚", "utf-8"));//取出Cookie值 , 需要解码URLDecoder.decode(cookie.getValue(),"utf-8");复制代码6.2 Session技术为什么需要Session?前面已经介绍了Cookie可以让服务端程序跟踪每个客户端的访问 , 但是每次客户端的访问都必须传回这些Cookie , 如果Cookie很多 , 这无形地增加了客户端与服务端的数据传输量 , 而Session的出现正是为了解决这个问题 。同一个客户端每次和服务端交互时 , 不需要每次都传回所有的Cookie值 , 而是只要传回一个ID , 这个ID是客户端第一次访问服务器的时候生成的 , 而且每个客户端是唯一的 。这样每个客户端就有了一个唯一的ID , 客户端只要传回这个ID就行了 , 这个ID通常是NANE为JSESIONID的一个Cookie 。

一个浏览器去服务器租房子 , 服务器记录一下浏览器的行为和数据 , 然后给了浏览器一把房间的钥匙 然后 , 每次浏览器可以使用自己的钥匙去打开自己的房间 , 使用房间的所有东西 。(当然 , 你不能去开别人的房间 , 何况也打不开)
七、上下文7.1 SeveletContext或者ApplicationContext的由来浏览器想锻炼身体 , 愉悦心情 。服务器心想我不能给你们每一个人的房间增加一套体育设备吧 , 那我的经济压力多大 。服务器想了想 , 决定建设一个公开场所 , 体育馆 , 所有浏览器都可以使用这些共享资源 。
@WebServlet("/SessionTest1")public class SessionTest extends HttpServlet { private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.write("Session的ID为:");// 获取 SessionHttpSession session = request.getSession();out.write(session.getId());session.setAttribute("name", "shang");//设置当前会话多久结束 , 单位秒 。如果设置的值为零或负数 , 则表示会话将永远不会超时 。常用于设置当前会话时间 。//session.setMaxInactiveInterval(1); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response); }}复制代码@WebServlet("/SessionTest2")public class SessionTest2 extends HttpServlet { private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");HttpSession session = request.getSession();//移除session的数据session.removeAttribute("name");//手动注销当前会话session.invalidate(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response); }}复制代码7.2 Servlet上下文运行在Java虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文 。Java Servlet API提供了一个ServletContext接口用来表示上下文 。在这个接口中定义了一组方法 , Servlet可以使用这些方法与它的Servlet容器进行通信 , 例如 , 得到文件的MIME类型 , 转发请求 , 或者向日志文件中写入日志消息 。ServletContext对象是Web服务器中的一个已知路径的根 。比如 , Servlet上下文被定位于http://localhost:8080/ch02 。以/ch02请求路径(称为上下文路径)开始的所有请求被发送到与此ServletContext关联的Web应用程序 。再比如 , 我们平常使用的http://localhost:8080/ 。以/请求路径(称为上下文路径)开始的所有请求被发送到与此ServletContext关联的Web应用程序 。

推荐阅读