Servlet第五天

共享数据的对象:
 HttpServletRequest
  代表一次请求
 HttpSession
  代表和一个客户端相关的一系列请求/响应循环
 ServletContext
  代表整个web应用
 
共享数据的操作方法:
 setAttribute(String name,Object o)
 getAttribute(String name):Object o
 removeAttribute(String name);

监听器种类:
 ServletRequestListener
 HttpSessionListener
 ServletContextListener
监听器编程步骤:
 1 编写监听器类,实现上述接口及其中的两个方法
 2 将监听类配置给web容器
  <listener>
   <listener-class>....</listener-class>
  </listener>

过滤器:
 过滤需要的信息,然后对过滤后的信息再加工
 javax.servlet.Filter
  void init(FilterConfig filterConfig) 
   获取web容器传递进来的一些初始化参数
    getInitParameter(String name) :String value
    getInitParameterNames() :Enumeration names
  void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
   参数request和response是当前过滤器所拦截到的请求/响应
   FilterChian负责将处理完的请求和相应传递给真正的资源
    chain.doFilter(req,resp)
  void destroy()  
过滤器的使用:
 1 实现filter接口编写过滤器类
 2 配置过滤器给web容器 

 <filter>
  <filter-name>filter1</filter-name>
  <filter-class>filter.basic.HelloFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>filter1</filter-name>
  <url-pattern>/servlet1</url-pattern>
 </filter-mapping> 

 
给一组Servlet配置某一个过滤器:
 要求一组servlet的url-pattern中必须包含统一前缀
  如:  <url-pattern>/redi/servlet1</url-pattern>
   <url-pattern>/redi/servlet2</url-pattern>
 配置filter时,指定统一前缀的模糊匹配方式
  如: <url-pattern>/redi/*</url-pattern>


filter的作用:
 记录日志
 中文乱码处理
 处理权限
  /manager/...
  /user/...  


Servlet  ServletConfig
 
 GenericServlet
 HttpServlet

一个类自身具有的一个方法,没有实际实现。而是调用其他类的同名方法执行
 代理模式:Proxy
  两个类之间有直接、间接的关系
 委托模式:Delegate
  两个类没有任何关系

 

HttpServletRequest.getContextPath();
 ===>/应用名

 

LoginServlet

big5
utf-8
gb2312
gbk
gb18030
 
中文乱码:
 1 客户端提交信息时,
   1)
   form表单中必须使用method=post
   处理类中request.setCharacterEncoding("gbk");
   2)
   form可以用method=get方式提交/热链接提交参数
   处理类中必须手动对获取到的参数编码
   String name = req.getPameter("name");
   name = new String(name.getBytes("iso-8859-1"),"gbk");
 2 数据库在安装时需指定支持中文
 
 3 服务器端响应信息给客户端时
   response.setCharacterEncoding("gbk");


服务器回显信息给客户
out.println("--------");
filter在显示信息之后,继续在客户端的页面中追加某些内容

extraServlet---->ExtraFilter  ---->HelloServlet
     ---->CharacterEncodingFilter


Filter
servlet
Filter

CharArrayWriter
StringWriter
 内部具有缓冲区
 输出方式是把信息输出到当前对象内部的缓冲区中
 toString()把内部缓冲区中的数据取出来

 

 

 

 

 

 

 


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值