您的位置:首页 > Web前端 > JavaScript

过滤器,监听器,Servlet 线程安全,JSP基础

2015-12-05 15:02 351 查看
1.过滤器
 (1)什么是过滤器?
  servlet规范当中定义的一种特殊的组件,用来
 拦截容器的调用过程。
 (2)如何写一个过滤器?
  step1,写一个java类,实现Filter接口。
  step2,在doFilter方法里面,实现拦截处理逻辑。
  step3,配置(web.xml)
 (3)过滤器的优先级
  当有多个过滤器都满足拦截的要求,则容器
  依据<filter-mapping>的先后顺序来依次调用。
 (4)初始化参数
  step1,配置
   
<filter>
    <filter-name>filter1</filter-name>
    <filter-class>web.CommentFilter</filter-class>
    <!-- 初始化参数,由FilterConfig对象读取-->
    <init-param>
        <param-name>illegalStr</param-name>
        <param-value>胡萝卜</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/comment</url-pattern>
</filter-mapping>
    step2,读取
     FilterConfig.getInitParameter("illegalStr");
(5)过滤器的优点
 1)在不修改原有程序代码的基础上,为程序增加
 新的功能。
 2)将多个组件相同的处理逻辑集中写在一个类(过滤器)
 里面,方便代码的维护。

1.监听器
 (1)servlet规范当中定义的一种特殊的组件,用来
 监听容器产生的事件并进行相应的处理。
  注:主要有两大类事件
  1)生命周期相关的事件:
   容器创建或者销毁了request,session,
   servlet上下文时产生的事件。
  2)绑订数据相关的事件:
   容器调用了request,session,servlet上下文
   的setAttribute,removeAttribute产生的事件。
 (2)servlet上下文
  1)什么是servlet上下文
   容器启动之后,会为每一个web应用创建唯一的
  一个符合ServletContext接口要求的对象,该对象
  一般称之为servlet上下文。
   特点:
    a.唯一性:一个web应用对应一个上下文。
    b.持久性:除非容器关闭或者应用被卸载,
       否则上下文会一直存在。
  2)如何获得servlet上下文?
   GenericServlet,ServletConfig,
   FilterConfig,HttpSession都提供了
   getServletContext方法来获得上下文。
  3)作用
   a.绑订数据
   setAttribute,getAttribute,removeAttribute
   注:
    绑订到上下文上的数据有这样两个特点
    特点1:一直存在。
    特点2: 能被所有用户访问到。
   b.读取全局的初始化参数。
    step1,配置全局的初始化参数
    <context-param>
       <param-name>company</param-name>
       <param-value>IBM</param-value>
      </context-param>
      step2,读取
       ServletContext.getInitParameter("company");
 (3)如何写一个监听器
  step1,写一个java类,实现相应的监听器接口。
    注:依据要监听的事件类型选择相应的
    监听器接口。
  step2,在监听器接口方法当中,实现相应的监听
    处理逻辑。
  step3,注册(web.xml)
   
2.servlet线程安全问题
 (1)为什么说servlet会有线程安全问题
  a.默认情况下,容器只会创建一个servlet实例。
  b.容器收到一个请求,就会启动一个线程来处理。
  如果有多个请求要访问同一个servlet,就有可能
  有多个线程同时调用该servlet,就有可能发生
  线程安全问题(比如,这些线程要修改servlet的
  属性)。
 (2)解决方式
  a.加锁,使用synchronized对具有线程安全问题
  的代码加锁。
  注:加锁会影响性能。
  b.实现SingleThreadModel接口(不建议使用)。
   容器对于实现了该接口的servlet,会为每一个
   线程创建一个对应的实例。
   
3.servlet小结
 (1)servlet基础
  1)什么是servle。
  2)怎样写一个servle。
  3)servlet是如何运行。
  4)http协议(了解)
 (2)servlet核心
  1)如何获得请求参数值
   String request.getParameter(String paramName);
   注:
    a.参数名(paramName)如果与实际的参数名不
    一致,获得null值。
    b.该方法有可能获得""。
   String[] request.getParameterValues(String
   paramName);
    注:
     a.当有多个参数名相同时,用该方法。
     b.对于多选框,如果用户不选择任何的
     选项,则获得null值。
  2)表单包含有中文参数值,如何处理。
  3)servlet输出中文,如何处理。
  4)容器如何处理请求资源路径。
  5)如何让一个servlet处理多种请求。
  6)转发与重定。
  7)servlet的生命周。
  8)servlet线程安全问。
  9)servlet上下文。
 (3)状态管理
  1)什么是状态管理。
  2)cookie
   什么是cookie
   cookie的工作原理
   如何添加cookie
   添加cookie时要考虑的三个问题(编码,路径,生存时间)
   如何读取cookie
   cookie的限制
  3)session
   什么是session?
   如何获得session?
   常用方法
   session超时
   删除session
 (4)数据库访问
  1)servlet如何使用jdbc访问数据库。
  2)使用dao
 (5)过滤器与监听器
  1)什么是过滤器
  2)如何写一个过滤器
  3)过滤器的优先级
  4)过滤器的初始化参数
  5)过滤器的优点
  6)什么是监听器
  7)如何写一个监听器
 (6)典型案例
  员工管理
  登录(session验证,验证码)
   
4.jsp基础
 (1)什么是jsp?
 (2)如何写一个jsp?
  1)html(css,js)  直接写。
  2)java代码
   a. java代码片断
   <% java代码  %>
   b. jsp表达式
   <%= java表达式 %>
   c.jsp声明   (a1.jsp)
   <%!     %>
  3)指令
   a.什么是指令
   b.page指令
    import属性
    pageEncoding属性
    contentType属性
    session属性(a2.jsp): true(缺省)/false,当值为
       false,就不能使用session隐含对象了。
    errorPage属性(a3.jsp,a4.jsp):
       指定一个异常处理页面。
    isErrorPage属性:true/false(缺省值),当值
       为true时,表示这是一个异常处理页面,
       此时,可以使用exception隐含对象。
   c.include指令
     file属性:告诉容器,在将jsp文件转换成
        servlet类时,将file属性指定的文件的
        内容包含进来。
        比如
         <%@include file="header.jsp"%>
 (3)jsp是如何执行的?
  step1,容器要将jsp文件转换成一个servlet类。
   html(css,js)  ------> service方法,out.write()
   <%    %> -----> service方法,照搬。
   <%=   %> -----> service方法,out.print()。
   <%!     %> -----> 为servlet类增加新的成员
          变量或者方法。
  step2,调用该servlet。    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet jsp filt