java必知必会-j2ee规范(下)


一、j2ee相关接口(下)

1. javax.servlet.http.Cookie

  • cookie会以响应头的形式发送给客户端:set-cookie:”name=zhengsan”
  • cookie不能存储中文、它是浏览器缓存的一部分。
  • cookie数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie,有大小和个数的限制
  • 会话级别cookie:不设置cookie会存储在浏览器的内存中,随浏览器关闭销毁
  • 持久级别cookie:设置cookie信息会被持久化到浏览器的磁盘文件里,过期浏览器自动删除
  • 创建CookieCookie cookie = new Cookie(name,value)
  • 持久化时间cookie.setMaxAge(秒);
  • 请求时cookie被携带路径
    • cookie.setPath();不设置,cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息,会覆盖
    • cookie.setPath(“/WEB”);访问WEB应用中的任何资源都携带cookie
    • cookie.setPath(“/WEB/cookieServlet”);访问WEB16中的cookieServlet时才携带cookie信息
    • cookie.setPath(“/”);代表访问tomcat下所有的web项目的cookie信息
  • 向客户端发送cookie response.addCookie(Cookie cookie);//如果路径和名称一样,两次add会覆盖
  • 获得客户端的cookie Cookie[] cookies = request.getCookies();
  • 获得cookie的键值 cookie.getName();cookie.getValue();
  • 删除cookie
    • Cookie cookie = new Cookie(“name”,“”);//将cookie的name设置与删除的cookie一致
    • cookie.setPath(“/WEB16”);//将path设置成与要删除cookie的path一致
    • cookie.setMaxAge(0);//设置时间是0;
    • response.addCookie(cookie);

2. javax.servlet.http.HttpSession

  • session将数据存储到服务器端,安全性相对好,增加服务器的压力,没有大小和个数限制
  • session会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。
  • 所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客户的唯一性标识JSESSIONID来辨别是哪个客户端
  • 获得Session request.getSession([boolean create])
  • 获得sessionid String getId()
  • 设置session空闲时间 void setMaxInactiveInterval(int interval)
  • 获得servletcontext ServletContext getServletContext()
  • session域
    • void setAttribute(String name,Object obj);
    • Object getAttribute(String name);
    • void removeAttribute(String name);
  • 销毁session void invalidate();

3. java.util.EventListener

4. javax.servlet.ServletContextListener

  • contextInitialized(ServlertContextEvent sre)
  • contextDestroyed(ServlertContextEvent sre)
  • ServletContext context = ServlertContextEvent.getServletContext();
    • ①初始化:对象、数据、加载数据库驱动,连接池的初始化
    • ②加载一些初始化的配置文件 — spring的配置文件
    • ③任务调度----定时器----Timer/TimerTask
    • 需要web.xml注册

5. javax.servlet.http.HttpSessionListener

  • sessionCreated(HttpSessionEvent se);
  • sessionDestroyed(HttpSessionEvent se);
  • Session session = HttpSessionEvent.getSession();
  • 需要web.xml注册

6. javax.servlet.ServletRequestListener

  • requestInitialized(ServlertRequestEvent sre);
  • requestDestroyed(ServlertRequestEvent sre);
  • ServletContext context = ServlertRequestEvent.getServletContext();
  • ServlertReque request = ServlertRequestEvent.getServletRequest();
  • 需要web.xml注册

7. javax.servlet.ServletContextAttributeListener

  • attributeAdded(ServletContextAttributeEvent event);
  • attributeRemoved(ServletContextAttributeEvent event);
  • attributeReplaced(ServletContextAttributeEvent event);
  • String name = ServletContextAttributeEvent.getName()
  • String value = ServletContextAttributeEvent.getValue()
  • SevletContext context = ServletContextAttributeEvent.getSevletContext()
  • 需要web.xml注册

8. javax.servlet.http.HttpSessionAttributeListener

  • attributeAdded(HttpSessionBindingEvent event);
  • attributeRemoved(HttpSessionBindingEvent event);
  • attributeReplaced(HttpSessionBindingEvent event);
  • String name = HttpSessionBindingEvent.getName()
  • String value = HttpSessionBindingEvent.getValue()
  • Session session = HttpSessionBindingEvent.getSession()
  • 需要web.xml注册

9. javax.servlet.ServletRequestAttributeListener

  • attributeAdded(ServletRequestAttributEvent srae);
  • attributeRemoved(ServletRequestAttributEvent srae);
  • attributeReplaced(ServletRequestAttributEvent srae);
  • String name = ServletRequestAttributEvent.getName()
  • String value = ServletRequestAttributEvent.getValue()
  • SevletContext context = ServletRequestAttributEvent.getSevletContext()
  • ServletRequest request = ServletRequestAttributEvent.getServletRequest()
  • 需要web.xml注册

10. javax.servlet.http.HttpSessionBindingListener

  • javaBean实现HttpSessionBindingListener接口,不需web.xml配置
  • valueBound(HttpSessionBindingEvent event)绑定:对象被放到session域
  • valueUnbound(HttpSessionBindingEvent event)解绑:对象从session域中移除
  • String name = HttpSessionBindingEvent.getName()
  • String value = HttpSessionBindingEvent.getValue()
  • Session session = HttpSessionBindingEvent.getSession()

11. javax.servlet.http.HttpSessionActivationListener

  • javaBean实现HttpSessionActivationListener接口,在META-INF创建context.xml文件,不需web.xml配置
  • Session钝化:当服务器正常关闭时,还存活着的session(在设置时间内没有销毁) 会随着服务器的关闭被以文件(“SESSIONS.ser”)的形式存储在tomcat的work目录下
  • Session活化:当服务器再次正常开启时,服务器会找到之前的“SESSIONS.ser” 文件,从中恢复之前保存起来的Session 对象
  • sessionWillPassivate(HttpSessionEvent se); session钝化前执行(session从内存到硬盘)
  • sessionDidActivate(HttpSessionEvent se); session活化后执行(session从硬盘到内存)
<Context>
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">钝化时间
        <Store className="org.apache.catalina.session.FileStore" directory="test" />
        配置钝化的对象文件在%tomcat%/work/catalina/localhost/项目名称/钝化文件名.ser(test)
    </Manager>
</Context>

12. javax.servlet.Filter

  • filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理,运行在服务器端的程序,先于与之相关的Servlet或jsp前运行,对请求资源过滤的功能,可以处理请求和响应
    • 公共代码的提取
    • 对request和response中的方法进行增强(装饰者模式/动态代理)
    • 进行权限控制
    • 自动登录,解决全局乱码,屏蔽非法文字,响应数据压缩
  • 实现Filter接口并实现所有方法,配置web.xml
    • init(Filterconfig filterconfig);过滤器初始化方法
    • doFilter(ServletRequest,SevletResponse,FilterChain)每次访问这个资源都会执行该方法
    • destory():销毁方法 关闭服务器时
  • Filterconfig方法
    • getFilterName返回 <filter-name> 元素的设置值
    • getServletContext返回ServletContext对象的引用
    • getInitParameter返回在web.xml中Filter初始化的参数值
    • getInitParameterNames返回一个 Enumeration 集合对象
  • FilterChain方法
    • 放行请求chain.doFilter(request, response);

二、web.xml配置

<servlet>
    <servlet-name>QuickStartServlet</servlet-name>
    <servlet-class>xxx.xxx</servlet-class>
    <load-on-startup>3</load-on-startup>启动先后 正整数,越小被创建的优先级越高
    <init-param>
        <param-name>url</param-name>servlet的初始化参数
        <param-value>xxx</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>QuickStartServlet</servlet-name>
    完全匹配:访问的资源与配置的资源完全相同<url-pattern>/LoginServlet</url-pattern>
    目录匹配:./当前路径 ../上一级 格式:/虚拟的目录../\* \*代表任意<url-pattern>/LoginServlet/\*</url-pattern>
    扩展名匹配:\*.扩展名 <url-pattern>\*.jsp</url-pattern>
    (默认)缺省Servlet:将url-pattern配置一个/,代表该servlet是缺省的servlet(默认访问的路径)
    客户端地址添加web应用的名称,重定向,而服务器端的地址不需添加web应用的名称 转发
    <url-pattern>/quickStartServlet</url-pattern>
</servlet-mapping>
主页设置
<welcome-file-list>
    <welcome-file>login.html</welcome-file>
</welcome-file-list>
serveletcofig和servletContext的初始化参数
<context-param>
    <param-name>driver</param-name>
    <param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
    session时间
<session-config>
    <session-timeout>30</session-timeout>
</session-config>
<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.ithiema.web.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
注意:url-pattern可以使用servlet-name替代,也可以混用

总结

本文介绍了j2ee规范下接口的api,如有问题欢迎私信和评论

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值