10.8、spring boot的web应用——servlet、listener、filter的应用

来源:互联网 发布:电视猫yunos优化版 编辑:程序博客网 时间:2024/05/16 11:59

一、servlet的应用
先用@WebServlet注解把对应的servlet类标识为某个请求响应的servlet,然后用@ServletComponentScan注解启动扫描servlet的范围。示例如下

创建servlet类,响应请求

package com.lzj.spring.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*当前端发送http://localhost:8080/myServlet请求后,由MyServlet类来响应请求*/@WebServlet("/myServlet")public class MyServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.getWriter().print("-----MyServlet--------");    }}

启动启动spring boot工程,启动类为:

/*启动类中要用@ServletComponentScan注解标注,并指定扫描的范围为com.lzj.spring.servlet,servlet类所在的包,表示启动的时候,要扫描到servlet的类*/@ServletComponentScan(basePackages="com.lzj.spring.servlet")@SpringBootApplicationpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}

在浏览器中输入http://localhost:8080/myServlet,由MyServlet类响应请求,浏览器中显示下图
这里写图片描述

二、Filter的应用
filter的应用方法与servlet的相似,因为filter就是servlet实现的。

在上面示例的基础上创建Filter的实现类:

package com.lzj.spring.servlet;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;/*当响应/myServlet请求后,先由Myfilter 拦截器拦截执行,然后由上面创建的MyServlet 的servlet类来响应请求*/@WebFilter("/myServlet")public class Myfilter implements Filter {    @Override    public void destroy() {}    @Override    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)            throws IOException, ServletException {        System.out.println("Myfilter拦截成功");        chain.doFilter(arg0, arg1);    }    @Override    public void init(FilterConfig arg0) throws ServletException {}}

运行启动类,在浏览器中输入http://localhost:8080/myServlet后,Myfilter拦截器会截获该请求,然后执行拦截器中的init、doFilter、destroy方法,Console中输出

容器开始启动了。。。。。

拦截器执行完后,然后MyServlet执行servlet请求, 浏览器中显示的内容同上面MyServlet响应请求后显示的内容相同。

三、Listener的应用
Listener监听器的应用同Servlet相似,因为监听器也是由Servlet实现的。

创建监听器类,用来监听容器启动:

package com.lzj.spring.servlet;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;@WebListenerpublic class MyListener implements ServletContextListener {    /*容器销毁的时候执行该方法*/    @Override    public void contextDestroyed(ServletContextEvent arg0) {    }    /*容器启动的时候执行该方法*/    @Override    public void contextInitialized(ServletContextEvent arg0) {        System.out.println("容器开始启动了。。。。。");    }}

启动spring boot工程后,会初始化容器,该监听器就会执行,console中输出:

容器开始启动了。。。。。
阅读全文
0 0
原创粉丝点击