栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

巩固基础之-javaweb

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

巩固基础之-javaweb

Filter 过滤器 1.作用

在web服务器和servlet之间,实现功能增强。以设置返回值编码格式为例

2.实现过程 1.首先要有一个Servlet

书写Servlet类

public class ShowServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        resp.setCharacterEncoding("utf-8");
        resp.getWriter().write("你好,世界!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

配置web.xml,设置两个路径绑定一个Servlet,便于测试


        ShowServlet
        com.zhang.servlet.ShowServlet
    
    
        ShowServlet
        /servlet/show
    
    
        ShowServlet
        /show
    
2.编写Filter类

实现Filter接口,并实现接口中的三个方法。

****
public class CharacterEncodingFilter implements Filter {

    **//初始化:web服务器启动,就一起初始化了,随时等待过滤对象出现!**
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("CharacterEncodingFilter,初始化完成!");
    }

    
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        servletResponse.setContentType("text/html;charset=UTF-8");

        System.out.println("CharacterEncodingFilter,执行前");
        //让我们的请求继续往下走,如果不写,则程序到这里就被拦截停止了
        **filterChain.doFilter(servletRequest,servletResponse);**
        System.out.println("CharacterEncodingFilter,执行后");

    }

    //销毁:web服务器关闭的时候,过滤器会销毁
    public void destroy() {
        System.out.println("CharacterEncodingFilter,销毁完成!");
    }
}

web.xml中配置要过滤哪个路径


        CharacterEncodingFilter
        com.zhang.failter.CharacterEncodingFilter
    
    
        CharacterEncodingFilter

        /servlet/*
    
3.运行结果

访问 /show 时,界面输出乱码。
访问 /servlet/show时,界面输出正常中文。

3.注意事项
  • 由于可能不止一个过滤器,所以
    filterChain.doFilter(servletRequest,servletResponse);
    这行代码必须要写,告知我们的请求继续往下走,如果不写,则程序到这里就被拦截停止了

  • init() 方法;web服务器启动,就一起初始化了,随时等待过滤对象出现!

  • destroy()方法;web服务器关闭的时候,过滤器会销毁

Listener 监听器 实现一个监听器接口;(有很多种) 1.编写一个监听器

实现一个监听器,统计网站在线人数;

//统计网站在线人数: 统计session
public class OnlineCountListener implements HttpSessionListener {

    //创建session监听,观察你的一举一动
    //一旦创建Session就会触发一次这个事件!
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext sc = se.getSession().getServletContext();
        System.out.println(se.getSession().getId());
        Integer onlineCount = (Integer) sc.getAttribute("OnlineCount");
        if (onlineCount == null){
            onlineCount = new Integer(1);
        }else {
            int count = onlineCount.intValue() + 1;
            onlineCount = new Integer(count);
        }

        sc.setAttribute("OnlineCount",onlineCount);
    }

    //销毁session监听
    //一旦销毁Session就会触发一次这个事件!
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext sc = se.getSession().getServletContext();
        Integer onlineCount = (Integer) sc.getAttribute("OnlineCount");
        if (onlineCount == null){
            onlineCount = new Integer(0);
        }else {
            int count = onlineCount.intValue() - 1;
            onlineCount = new Integer(count);
        }

        sc.setAttribute("OnlineCount",onlineCount);
    }
}

2.web.xml中注册监听器
    
        com.zhang.listener.OnlineCountListener
    
3.看情况是否使用!(几乎不用)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号