※Servlet
※使用 annotation
@WebServlet(urlPatterns = "*.do")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("呼叫成功!");
}
}
@SpringBootApplication
@ServletComponentScan
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
※使用 @ServletComponentScan 可以掃瞄到 @WebServlet、@Filter、@WebListener
※使用 XxxRegistrationBean
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("呼叫成功!");
}
}
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
@Bean
public ServletRegistrationBean<MyServlet> getServletBean() {
return new ServletRegistrationBean<>(new MyServlet(), "*.do");
}
}
※方法取什麼無所謂,主要是回傳值
※Filter
※使用 annotation
※針對副檔名過濾
@WebServlet(urlPatterns = "*.do")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("呼叫成功!");
}
}
@WebFilter(urlPatterns = "*.do")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("過濾前");
chain.doFilter(request, response);
System.out.println("過濾後");
}
@Override
public void destroy() {}
}
@SpringBootApplication
@ServletComponentScan
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
※
※針對 servlet 名稱過濾
@WebServlet(name="xxx", urlPatterns = "*.do") @WebFilter(servletNames="xxx")
※和針對副檔名差不多,只有 annotation 不一樣而已,name 和 servletNames 對應好即可
※使用 XxxRegistrationBean 過濾
※針對副檔名過濾
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
@Bean
public ServletRegistrationBean<MyServlet> getServletBean() {
return new ServletRegistrationBean<>(new MyServlet(), "*.do");
}
@Bean
public FilterRegistrationBean<MyFilter> getFilterBean() {
FilterRegistrationBean<MyFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new MyFilter());
bean.addUrlPatterns("*.do");
return bean;
}
}
※
※針對 servlet 名稱過濾
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("過濾前");
chain.doFilter(request, response);
System.out.println("過濾後");
}
@Override
public void destroy() {}
}
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
private ServletRegistrationBean<MyServlet> servletBean = new ServletRegistrationBean<>(new MyServlet(), "*.do");
@Bean
public ServletRegistrationBean<MyServlet> getServletBean() {
return servletBean;
}
@Bean
public FilterRegistrationBean<MyFilter> getFilterBean() {
return new FilterRegistrationBean<MyFilter>(new MyFilter(), servletBean);
}
}
※
※Listener
※使用 annotation
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized方法被呼叫了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {}
}
@SpringBootApplication
@ServletComponentScan
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
※啟動時就會看到 contextInitialized 的內容了
※使用 XxxRegistrationBean 監聽
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
@Bean
public ServletListenerRegistrationBean<MyListener> getListenerBean() {
return new ServletListenerRegistrationBean<>(new MyListener());
}
}
※這種方式就不需要 MyListener 的 @WebListener 了
沒有留言:
張貼留言