1.自定义servlet
springboot自定义servlet,
- 继承HttpServlet 类,重写doGet doPost方法
- 通过@WebServlet将这个类标记为一个servlet类,并被spring管理,urlPatterns可以指定这个类能够处理的请求url
- 主启动类上面需要加上@ServletComponentScan注解
package com.example.lchtest.springbootdemo1.customservlet;
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;
/**
* Servlet3.0注解实现原生servelt
* 主类上面需要加上@ServletComponentScan注解
*
*/
@WebServlet(name="userServlet",urlPatterns = "/test/servlet")
public class UserServlet extends HttpServlet {
// http://localhost:8080/test/servlet浏览器输入该请求,将会被doget方法处理
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.print("custom servlet");
writer.flush();
writer.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
测试: 在浏览器输入http://localhost:8080//test/servlet ,将会得到响应为: custom servlet
2.自定义监听器
常用的监听器有 servletContextListener、httpSessionListener、 servletRequestListener等,自定义监听器过程如下:
- 自定义监听器类,实现ServletContextListener 接口,重写contextInitialized() 和contextDestroyed()方法
- 在自定义监听器类上面加上@WebListener注解,使之能够被spring管理
自定义监听器作用: 以servletContextListener为例,它可以在应用初始化的时候做一些资源加载之类的操作,如单独开启一个线程连接redis等,在应用销毁时,关闭一些资源, 示例代码
package com.example.lchtest.springbootdemo1.customlistener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* 自定义ServletContextListener监听器
* 可以在应用初始化的时候做一些资源加载之类的操作,如单独开启一个线程连接redis等
*/
@WebListener
public class ContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("*********contextInitialized *********");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("*********contextDestroyed *********");
}
}