关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

云南大王-Spring Boot整合Servlet,Filter,Listener,访问静态资源

发布时间:2020-04-13 00:00:00
目录Spring Boot整合Servlet(两种方式)第一种方式(通过注解扫描方式完成Servlet组件的注册):第二种方式(通过方法完成Servlet组件的注册)Springboot整合Filter (和整合Servlet方式差不多)第一种方式(通过注解扫描方式完成Fliter组件的注册)第二种方式(通过方法方式完成Filter组件的注册)Springboot整合Listener (同上)通过注解扫描方式完成Fliter组件的注册第二种方式(通过方法完成Listener组件注册)Springboot访问静态资源(两种方式)第一种方式(通过ServletContext的根目录下寻找静态资源)第二种方式(从classpath/static的目录下寻找静态资源) Spring Boot整合Servlet(两种方式) 新建一个maven项目 创建完成后的结构图: 引入pom.xml依赖 org.springframework.boot spring-boot-starter-parent 2.2.4.RELEASE org.springframework.boot spring-boot-starter-web 第一种方式(通过注解扫描方式完成Servlet组件的注册): 通过注解扫描方式完成Servlet组件的注册 1.1. 创建一个Servlet 1.2. 编写Servlet代码: @WebServlet(name = "firstServlet",urlPatterns = "/firstServlet") //urlPatterns:访问路径 public class firstServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("进来了firstServlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } 1.3. 编写启动类 创建springboot启动类 代码: @SpringBootApplication //在spring boot启动时会扫描@WebServlet注解,并创建该类的实例 @ServletComponentScan public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } 注意:在启动类上需要加上@ServletComponentScan注解 意思是:在启动时扫描@WebServlet注解 ,创建Servlet的实例 1.4. 运行启动类 ,在浏览器输入localhost:8080/firstServlet 控制台输出信息 第二种方式(通过方法完成Servlet组件的注册) 创建一个Servlet 创建springboot启动类 在main方法下新建一个注册Servlet组件的方法 @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } //添加一个方法,方法名无要求,必须返回ServletRegistrationBean。注册Servlet对象 @Bean //主键等价于标签 public ServletRegistrationBean getServletRegistrationBean(){ ServletRegistrationBean bean= new ServletRegistrationBean(new SecondServlet(),"/SecondServlet"); return bean; } } 运行启动类 在浏览器输入 localhost:8080/SecondServlet 控制台打印信息 Springboot整合Filter (和整合Servlet方式差不多) 第一种方式(通过注解扫描方式完成Fliter组件的注册) 新建一个Filter类 继承Filter父类 实现接口 代码如下: @WebFilter(filterName = "firstFilter", urlPatterns = "/firstFilter") public class firstFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("----进入FirstFilter-----"); chain.doFilter(request, response);//放行 System.out.println("----离开FirstFilter-----"); } } 创建启动类 代码如下: @SpringBootApplication //在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例 @ServletComponentScan public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } 运行启动类,在浏览器输入 localhost:8080/firstFilter 这里报404是因为没有写放行后的路径; 控制台打印信息: 第二种方式(通过方法方式完成Filter组件的注册) 创建Filter类 不用写@WebFilter注解 启动类 代码如下: @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } //添加一个方法 @Bean public FilterRegistrationBean getFilterRegistrationBean(){ FilterRegistrationBean bean= new FilterRegistrationBean(new SecondFilter()); bean.addUrlPatterns("*.do","*.jsp","/SecondFilter"); //以.do , .jsp , SecondFilter结尾路径的都会进到过滤器 return bean; } } 运行启动类 在浏览器输入 localhost:8080/SecondFilter 控制台打印信息: Springboot整合Listener (同上) 通过注解扫描方式完成Fliter组件的注册 创建Listener类 Listener代码: @WebListener() public class firstListener implements ServletContextListener{ //监听application对象的创建 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("-----------application对象创建-----------------"); } } 创建启动类 代码: @SpringBootApplication @ServletComponentScan //在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例 public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } 运行启动类 看控制台打印信息 第二种方式(通过方法完成Listener组件注册) 代码一样 省略代码 直接上代码 创建Listener类 启动类 代码: @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } @Bean public ServletListenerRegistrationBean getServletListenerRegistrationBean(){ ServletListenerRegistrationBean bean= new ServletListenerRegistrationBean(new firstListener()); return bean; } } 运行启动类 看控制台打印信息 Springboot访问静态资源(两种方式) 第一种方式(通过ServletContext的根目录下寻找静态资源) 1.在src/main 下创建一个webapp的目录(目录名称必须为webapp) 在webapp下创建不同目录存放不同的静态资源,如:images 放图片 . 2. 运行启动类访问 直接访问资源路径 第二种方式(从classpath/static的目录下寻找静态资源) 在src/main/resources下创建一个static的目录(目录名称必须为static) 在static下创建不同目录存放不同的静态资源,如:images 放图片 . 2. 运行启动类访问浏览器 直接访问资源路径 以上就是本教程的相关内容,感谢观看,转载请注明出处

/template/Home/Zkeys/PC/Static