设计素材网站会员怎么买划算,请人开发一个小程序要多少钱,小公司网络组建规划,自己画图设计房间的软件目录
前言
一、注册Servlet组件
1.1 使用SpringBoot注解加继承HttpServet类注册
1.2 通过继承HttpServet类加配置类来进行注册
二、注册Listener组件
2.1 使用SpringBoot注解和实现ServletContextListener接口注册
2.2 ServletContextListener接口和配置类来进行注册 …目录
前言
一、注册Servlet组件
1.1 使用SpringBoot注解加继承HttpServet类注册
1.2 通过继承HttpServet类加配置类来进行注册
二、注册Listener组件
2.1 使用SpringBoot注解和实现ServletContextListener接口注册
2.2 ServletContextListener接口和配置类来进行注册
三、注册Filter组件
3.1 使用SpringBoot注解加实现Filter接口注册
3.2 通过实现Filter接口和配置类来进行注册通过实现 前言
Servlet是Java Web应用程序的基础它提供了处理客户端请求的机制。Servlet三大组件是指Servlet、Filter和Listener它们是Java Web应用程序的核心组件。
ServletServlet是Java Web应用程序的基础它是一个Java类用于处理客户端请求并生成响应。Servlet可以通过注解或web.xml文件进行配置它通常用于处理HTTP请求和响应。FilterFilter是一个Java类用于拦截和处理客户端请求和响应。Filter可以在请求到达Servlet之前或响应返回客户端之前执行预处理和后处理操作例如验证用户身份、编码解码、压缩和解压缩等。ListenerListener是一个Java类用于监听Web应用程序中的事件并在事件发生时执行相应的操作。Listener可以通过注解或web.xml文件进行配置它通常用于处理应用程序启动、停止、会话创建和销毁等事件。
总之Servlet三大组件是Java Web应用程序的核心组件它们分别用于处理请求、拦截请求和监听事件从而实现了一个完整的Java Web应用程序。
一、注册Servlet组件 由于SpringBoot项目没有web.xml文件所以无法在web.xml中注册web组件SpringBoot有自己的方式注册web组件。 1.1 使用SpringBoot注解加继承HttpServet类注册
编写servlet首先是要添加WebServlet注解代码如下
package com.example.demo.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;WebServlet(/first)
public class FirstServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(First Servlet......);super.doGet(req, resp);}
}启动类添加扫描Web组件用到的注解ServletComponentScan OK直接运行看效果访问http://localhost:8080/first
是可以直接打印出来的。 1.2 通过继承HttpServet类加配置类来进行注册
ok接下来我们讲解第二种注册方式通过继承HttpServet类来进行注册代码如下
package com.example.demo.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class SecondServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(Second Servlet........);super.doGet(req, resp);}
}这里我们需要新建一个配置类将该Servlet加载到Spring容器中配置类代码如下
package com.example.demo.config;import com.example.demo.servlet.SecondServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class ServletConfig {// ServletRegistrationBean可以注册Servlet组件将其放入Spring容器中即可注册ServletBeanpublic ServletRegistrationBean getServletRegistrationBean(){// 注册Servlet组件ServletRegistrationBean bean new ServletRegistrationBean(new SecondServlet());// 将Servlet组件添加访问路径bean.addUrlMappings(/second);return bean;}
}OK然后我们点击运行直接访问http://localhost:8080/second 因此说明了两种注册方式都是可用的。
二、注册Listener组件
2.1 使用SpringBoot注解和实现ServletContextListener接口注册
原理和上面一样只不过是直接注解无需配置类代码如下
package com.example.demo.listener;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;WebListener()
public class FirstListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(FirsListener.........);}Overridepublic void contextDestroyed(ServletContextEvent sce) {ServletContextListener.super.contextDestroyed(sce);}
}此时如果我们直接运行项目就会打印上面那句话接下来我们直接运行项目看看是否打印 说明该方法是可行的
2.2 ServletContextListener接口和配置类来进行注册
同样我们去掉注解使用配置类注册 代码如下
package com.example.demo.listener;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class SecondListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(Second Listener...........);}Overridepublic void contextDestroyed(ServletContextEvent sce) {ServletContextListener.super.contextDestroyed(sce);}
}配置类代码入下
package com.example.demo.config;import com.example.demo.listener.SecondListener;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class ListenerConfig {// ServletRegistrationBean可以注册Servlet组件将其放入Spring容器中即可注册ServletBeanpublic ServletListenerRegistrationBean getServletListenerRegistrationBean(){// 注册Listener组件ServletListenerRegistrationBean bean new ServletListenerRegistrationBean(new SecondListener());return bean;}
}然后直接运行看看结果 OK同样也是没有问题的。
三、注册Filter组件
3.1 使用SpringBoot注解加实现Filter接口注册
和上面一样代码如下
package com.example.demo.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.Scanner;//WebFilter(/first)
public class FirstServletFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(进入First Filter);Scanner scanner new Scanner(System.in);boolean flag scanner.nextBoolean();while(!flag){System.out.println(要输入true才放行);flag scanner.nextBoolean();}filterChain.doFilter(servletRequest,servletResponse);scanner.close();}Overridepublic void destroy() {Filter.super.destroy();}
}这里访问/frist的话/我们要输入true才进行放行看看是否成功过滤 OK这里是成功了的接下来也是一样的操作
3.2 通过实现Filter接口和配置类来进行注册通过实现
代码如下
package com.example.demo.filter;import javax.servlet.*;
import java.io.IOException;
import java.util.Scanner;public class SecondFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(进入Second Filter);Scanner scanner new Scanner(System.in);boolean flag scanner.nextBoolean();while(!flag){System.out.println(要输入true才可以放行);flag scanner.nextBoolean();}filterChain.doFilter(servletRequest,servletResponse);scanner.close();}Overridepublic void destroy() {Filter.super.destroy();}
}配置类代码如下
package com.example.demo.config;import com.example.demo.filter.SecondFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class FilterConfig {// ServletRegistrationBean可以注册Servlet组件将其放入Spring容器中即可注册ServletBeanpublic FilterRegistrationBean getFilterRegistrationBean (){// 注册filter组件FilterRegistrationBean bean new FilterRegistrationBean(new SecondFilter());// 添加过滤路径bean.addUrlPatterns(/second);return bean;}
}同样这里访问/second的话/我们要输入true才进行放行看看是否成功过滤 OK这里已经成功实现了