servlet filter(过滤器) linster(监听器)

一.servlet

1.全xml文件实现

写个servelt类,继承自Httpservlet接口

package com.atguigu.zyk.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class servlet01  extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out=resp.getWriter();
        out.print("成功访问了servlet");
    }
}

在web.xml中声明该servlet的拦截路径

 <!--    纯xml方式 声明servlet-->
    <servlet>
        <!--        servlet的名字,随便起,和下面一致即可-->
        <servlet-name>hello</servlet-name>
        <!--        要跳转的servlet文件-->
        <servlet-class>com.atguigu.zyk.servlet.servlet01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <!--        要在地址栏输入的路径-->
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

2.注解方式实现

写个servelt类,继承自Httpservlet接口,给类加@webservlet注解(不需要注解扫描,这不是框架)

package com.atguigu.zyk.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

//纯注解方式声明servlet
@WebServlet(urlPatterns ="/zhujieservlet" )
public class servlet02 extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out=resp.getWriter();
        out.print("通过@webservlet注解方式成功访问了servlet");
    }
}

二.filter(过滤器)

1.xml方式

 需要类实现filter接口

package com.atguigu.zyk;

import javax.servlet.*;
import javax.servlet.http.HttpFilter;
import java.io.IOException;

public class filter01 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("filter----init");
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filter----拦截");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("filter销毁");
        Filter.super.destroy();
    }
}

在web.xml中配置映射路径

 <filter>
        <filter-name>filter01</filter-name>
        <filter-class>com.atguigu.zyk.filter01</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter01</filter-name>
        <url-pattern>/index</url-pattern>
    </filter-mapping>

2.注解方式  类要添加@WebFilter注解

package com.atguigu.zyk.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.xml.stream.XMLOutputFactory;
import java.io.IOException;
@WebFilter(urlPatterns = "/index2")
public class filter02 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("filter02的init方法执行了");
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filter02的dofilter方法执行了");
    }

    @Override
    public void destroy() {
        System.out.println("filter02的destory方法执行了");
        Filter.super.destroy();
    }
}

三.监听器

可以监听八个域对象的创建销毁等过程 

 

package com.atguigu.zyk.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

public class servlet01  extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.setAttribute("name1","name1");
        this.doPost(req,resp);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out=resp.getWriter();
        out.print("成功访问了servlet");
    }
}
package com.atguigu.zyk;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class linster implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("监听到了sesion创建");
    }
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("监听到了sesion销毁");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值