JSP03

异常处理
1.服务器是所有服务端组件调用的入口,
   因此服务端代码抛出的异常最终都可以由服务器捕获到并统一处理
2.统一处理异常的方式:
   1)在web.xml中进行配置
       *<error-page><exception-type></exception-type><location></location></error-page>
        指定某类型的异常对应某错误页面
       *<error-page><error-code></error-code><location></location></error-page>
         指定某编号的异常对应某错误页面
   2)哪个异常跳转到哪个页面
   3)当服务器捕获到异常时,他会自动转发到对应的错误页面,
   服务器在做此转发行为时,会自动补充项目名因此转发页面的绝对路径不需要加项目名  
   
状态管理
1.存数据的特殊要求;
    1)跨请求:不能用request
    2)支持并发:不能用ServletConfig和ServletContext
    3)Cookie和Session可以解决此类需求
2.Cookie   
   1)将数据保存在浏览器上
   2)优点:服务器压力小
   3)缺点:数据不安全,容易被篡改
3.Session
   1)将数据保存在服务器上
   2)优点:安全,数据无法被篡改
   3)缺点:服务器压力大   +
4.Cookie和Session存储数据的方式:
    *按照客户来存数据,即一个浏览器单独存一份数据
    *以IP+浏览器为key存数据,可将多个浏览器的数据分开,互不影响 
    *他们内部存储的数据可以跨请求
    *总结:Cookie和Session中存储的数据,往往能够标识用户的某种特定状态(如登录),
      可以理解为它们内部存的是一种状态数据,因此将这种存储数据的方案为状态管理
      由于HTTP协议是无状态的(一次请求一次连接,连完即断),为了记录状态提出来Cookie和Session,
      它们实际上就是HTTP协议的补丁
5.Cookie的使用
    1)创建: Cookie c=new Cookie("name","value");
    2)发送给浏览器: res.addCookie(c);
    3)Java获取Cookie:  req.getCookies();
    4)EL表达式获取Cookie:  ${cookie.key.value }
    5)获取Cookie的名和值:cookie.getName cookie.getValue
    6)修改Cookie
        *获取客户端发送的所有Cookie
        *根据name查找到要修改的Cookie
        *cookie.setValue("要改成的值")
        *将修改后的Cookie发送回浏览器
    7)生存时间
        *未设置生存时间时它存到浏览器内存中,设置后存到硬盘上,达到这个时间时浏览器会自动删除它
        *cookie.setMaxAge(秒数);
    8)保存中文
        *URLEncoder.encode("中文","编码方式");将中文转成ASCII字符
        *URLDecoder.decode(c.getValue(),"解码方式") ;将ASCII字符转成中文
    9)路径问题   
       *默认Cookie的有效路径是创建Cookie页面的父路径及其下级路径
       *c.setPath("路径名");可以设置Cookie的有效路径
    10)限制
          *Cookie可被用户禁止
          *Cookie只能保存少量数据,大概4kb
          *Cookie的个数是有限制的
          *Cookie只能保存字符串
          *Cookie会将状态保存在浏览器端,不安全,对于敏感数据需要加密后再使用Cookie保存
6.Session的使用(依赖Cookie)
    1)Session的获取:req.getSession();
    2)设置值:session.setAttribute("name",value); session中可以存储任意类型的数据
    3)获取值:session.getAttribute("name");
    4)移除值:session.removeAttribute("name");
    5)删除Session对象:Session.invalidate();
    6)修改Session的缺省时间,默认30分钟
        *session.setMaxInactiveInterval(时间);
        *<session-config>
         <session-timeout>1</session-timeout>
          </session-config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值