标签:
状态管理解决方法:
1、隐藏字段
1.1、对用户在网站上的访问进行会话跟踪。
1.2、对服务器端程序提供预定义的输入。
1.3、存储动态产生的页面上下文信息。
不足:动态请求才有效,不支持静态页面。
2、Cookie
缺点:数据保存在客户端,用户可能禁用cookie导致读取cookie失败。
3、session(会话)
把客户的状态信息保存在服务器端。
内置对象。
缺点:依赖cookie;解决方案URL重写。
session的销毁:
session设置的最大活动时间过期,关闭服务器,session.invalidate()(强制销毁);
注意:关闭浏览器不会销毁session,session是web容器的内置对象。属于服务器。
4、URL重写
监听器:
三大对象:ServletContext、session、request
相同:都要监听 生命周期、属性改变
不同:session还有 会话迁移,对象绑定监听(不需要写配置文件)
设计模式:是一套被反复使用、多人知晓的,经过分类编目的代码设计经验总结。使用设计模式是为了可重用代码,让代码跟容易维护以及扩展,是的代码具有高聚合,低耦合的特点。
简单的讲,所谓模式,就是得到很好研究的范例。设计模式就是设计范例。
模式不是框架,要不是过程。模式也不是简单的“问题解决方案”,因为模式必须是典型问题的解决方案。是可以让学习者举一反三,有研究价值、有交流价值、有自己的名字的例子。(java设计模式)
模式不可套用。不要以为在任何一个系统中都要使用某些设计模式。系统的设计也不是含有设计模式好,更不是含有越多的设计模式就越好。
设计模式的本质:面向对象方法的实际运用。具体而言是封装、继承和多态的反复使用。
要正真理解设计模式就需要透彻立即面向对象设计原则和面向对象的三个特性。
过滤器的一些常见应用:
1.认证过滤:对用户的访问请求进行统一的认证。
2.登录和审核过滤:对用户的访问请求进行记录和审核。
3.图像转换过滤:图像转换格式。
4.数据压缩过滤:对用户发生的数据进行压缩,从而减少传输量。
5.加密过滤:对请求和响应进行加密解密处理。
6.令牌处理。
7.资源访问触发时间过滤。
8.xslt过滤。
9.MIME-TYEP过滤。
匹配原则:完全匹配>目录匹配>扩展名匹配
过滤器链:
1.web容器优先匹配请求URL的过滤器,然后再匹配Servlet名的过滤器。
2.相同类型的过滤器始终按照web.xml配置文件的顺序被调用。
对象作用域:
1、应用上下文ServletContext对象作用域
对于整个WEB应用,只有一个ServletContext对象,而且在web应用中的所有地方都可以访文它。servlet对象由web容器创建并实例化,他可以多线程同时读/写属性,是线程不安全的。当web容器关闭会销毁ServletContext对象。线程不安全。
建议:servletContext对象中尽可能少量保存不会被修改的数据,常用的方法是使用单例模式来处理共享数据。
2、HttpSession对象作用域
HttpSession对象用于维护与一个客户的会话状态。在HttpSession对象中设置属性不能被Web应用中的所有地方访问。HttpSession对象在用户会话期间存在,只能在处理属于同一HttpSession的请求中被访问,因此HttpSession对象的属性访问理论上是安全的。但用户打开多个属于一个进程的浏览器窗口,在这些窗口访问属于同一HttpSession对象,会出现多次请求,需要多个工作线程处理请求,可能造成线程不安全。这是需要对属性的读写进行线程同步处理,一般使用同步块Synchronized来处理。当会话被销毁,HttpSession设置的属性也会被销毁。
3、request对象作用域
HttpRequest对象用于一次客户端的请求过程。对于每一个请求,由一个线程来执行,都会创建有一新的request对象。所以,request对象只能在一个线程中被访问,它是线程安全的。
三个对象的共同点:都可以用于存取属性,拥有相同的属性操作方法,都是内置对象。
三个对象的作用域大小比较(从大到小)
ServletContext对象>HttpSession对象>HttpServletRequest对象。
三个对象对资源消耗的比较(从多到少)
ServletContext对象>HttpSession对象>HttpServletRequest对象。
三个线程安全性比较
ServletContext对象线程不安全
HttpSession对象线程理论上安全
HttpServletRequest对象线程觉得安全。
servlet的缺陷
1、部署繁琐而且容易出错。
2、不利于分工项目,分不出前段后端,要求开发人员掌握更多的技能。
jsp:全名为java servlet pages,中文名Java服务器页面,其本质是一个简化的servlet设计。
它是在传统的网页html文件中插入java程序段和jsp标记,从而形成jsp文件,后缀名为*.jsp
jsp ,javaBean,定制标记,jsp el(jsp本质是一个简化的servlet的设计)
web容器第一接收到的
jsp的生命周期
1、由jsp引擎将jsp页面翻译成java代码(翻译)
2、将java代码编译成class字节码文件(编译)
3、加载class字节码到web容器(类装载)
4、由web容器实例化对象(类实例化)
5、实例化对象初始化(初始化)
6、请求到达调用服务方法(提交服务)
7、销毁对象实例(
标签:
原文地址:http://www.cnblogs.com/JLeeci/p/5599178.html