首页 > 编程语言 > 详细

JavaWeb16-HTML篇笔记(二)

时间:2018-06-04 16:15:36      阅读:320      评论:0      收藏:0      [点我收藏+]
1.1 案例一:自动登录案例.1.1.1 需求:
在各式网站都会看到自动登录的功能,在登录页面中勾选了自动登录的复选框,那么下次访问网站首页的时候,可以不需要进行登录.
技术分享图片
1.1.2 分析:1.1.2.1 技术分析:
【Cookie技术】

  • 利用Cookie记住用户的用户名和密码.
    【Filter:过滤器的概述】
    ? 什么是过滤器Filter:可以过滤从客户端向服务器发送的请求.
    ? 过滤器的使用:
  • 进行IP的过滤,脏话过滤,自动登录,响应压缩...
    ? 使用过滤器:
  • 编写一个类实现Filter接口:
  • 配置过滤器:
    【过滤器的生命周期】:了解
    ? 过滤器的创建和销毁:
  • 创建:服务器启动的时候.
  • 销毁:服务器关闭的时候.
    【FilterConfig:过滤器的配置对象】:
    技术分享图片
    代码:
    public void init(FilterConfig filterConfig) throws ServletException {
    // 获得当前的Filter的名称:
    String filterName = filterConfig.getFilterName();
    System.out.println(filterName);
    // 获得初始化参数:
    String username = filterConfig.getInitParameter("username");
    String password = filterConfig.getInitParameter("password");
    System.out.println(username+" "+password);
    // 获得所有的初始化参数的名称:
    Enumeration<String> en = filterConfig.getInitParameterNames();
    while(en.hasMoreElements()){
    String name = en.nextElement();
    String value = filterConfig.getInitParameter(name);
    System.out.println(name+" "+value);
    }
    }
    【FilterChain:过滤器链】
    过滤器链中的过滤器的执行的顺序与<filter-mapping>的配置顺序有关.
  • doFilter(request,response); -- 放行,放行到下一个过滤器中,如果没有下一个过滤器,到达目标资源.
    【Filter相关的配置】
    ? <url-pattern>的配置:
  • 完全路径匹配 :以 / 开始 /demo4/demo1.jsp
  • 目录匹配 :以 / 开始 以 结束. / /demo1/*
  • 扩展名匹配 :不能以 / 开始 以 开始. .do *.action
    ? <servlet-name>的配置:根据Servlet的名称拦截Servlet.
    ? <dispatcher>的配置:
  • REQUEST :默认值.
  • FORWARD :转发.
  • INCLUDE :包含.
  • ERROR :错误页面跳转.(全局错误页面)
    1.1.3 代码实现:
    【步骤一】:创建数据库和表:
    create database web_16;
    use web_16;
    create table user(
    id int primary key auto_increment,
    username varchar(20),
    password varchar(20),
    nickname varchar(20),
    type varchar(10)
    );
    insert into user values (null,‘aaa‘,‘111‘,‘张凤‘,‘user‘);
    insert into user values (null,‘bbb‘,‘111‘,‘如花‘,‘user‘);
    insert into user values (null,‘ccc‘,‘111‘,‘张芙蓉‘,‘user‘);
    【步骤二】:导入jar包和工具类:
    【步骤三】:创建包结构及常用类:
    技术分享图片
    【步骤四】:登录功能.
    【步骤五】:利用COokie记住用户名和密码
    【步骤六】:实现自动登录的过滤器
    1.2 案例二:通用的字符集编码的过滤器.1.2.1 需求:
    在一个网站上,通常会提交带有中文的数据,GET/POST请求都有可能提交中文数据.通常情况下在Servlet中处理中文乱码.现在能不能将乱码的处理交给过滤器完成.只需要在Servlet中关心参数的接收就可以了.
    只需要在Servlet中调用request.getParameter();接收参数就可以,而不去关心到底get/post如何处理乱码.
    1.2.2 分析:
    【增强request中的getParameter方法】
    ? 继承 :控制这个类构造.
    ? 装饰者模式 :增强的类和被增强类实现相同的接口,增强的类中获得到被增强的类的引用.
  • 缺点:接口中方法太多.
    ? 动态代理 :被增强的类实现接口就可以.
    1.2.3 代码实现:
    public class MyHttpServletRequestWrapper extends HttpServletRequestWrapper{
    private HttpServletRequest request;
    public MyHttpServletRequestWrapper(HttpServletRequest request) {
    super(request);
    this.request = request;br/>}
    @Override
    public String getParameter(String name) {
    // 根据请求方式不同,去处理:
    // 获得请求方式:
    String method = request.getMethod();
    if("get".equalsIgnoreCase(method)){
    String value = null;
    try {
    value = new String(request.getParameter(name).getBytes("ISO-8859-1"),"UTF-8");
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    return value;
    }else if("post".equalsIgnoreCase(method)){
    try {
    request.setCharacterEncoding("UTF-8");
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    }
    return super.getParameter(name);
    }

}

JavaWeb16-HTML篇笔记(二)

原文:http://blog.51cto.com/13517854/2124619

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!