ipad壁纸,Spring Boot 注册 Servlet 的三种办法,真是太有用了!-机器学习优秀工具推荐,算法知识,直通硅谷

两性故事 admin 2019-05-21 275 次浏览 0个评论
网站分享代码

本文栈长教你如安在 Spring Boot 注册 Servlet、Filter、Listener。

你所需具有的根底

  • 什么是 Spring Boot?
  • Spring Boot 中心装备文件详解
  • Spring Boot 敞开的 2 种方法
  • Spring Boot 主动装备原理、实战
  • Spring Boot 2.x 发动全过程源码剖析

更多请在Java技能栈微信大众号后台回复关键字:boot。

一、Spring Boot 注册

Spring Boot 供给了 ServletRegistratiipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷onBean,同比和环比的差异 FilterRegistrationBean, ServletListenerRegistrationBe活蛎肽an 三个类别离用来注册 Servlet, Filter, 楼光南Listener,下面是 Servlet 的示例代码。

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSe篆体rvletResponse;
import java.i朔风秋水o.IOException;
/**
* @author Java技能栈
*/
public class RegisterServlet extends HttpServlet {
@Override
protected void servipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷ice(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String name = getServletConfig().getInitParameter("name");
String sex = getServletConfig().getInitParameter("sex");
resp.getOutputStream().println("name is " + name);
resp.getOutputStream().println("sex is " + sex);
}
}
@Bean
public ServletRegistrationBean registerServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(
new RegisterServlet(), "ipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷/registerServlet");
servletRegistipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷rationBean.addInitParameter("name", "javastack");
servletRegistrationBean.addInitParameter("sex", "man");
return servletRegistrationBe日本熊片an;南阳网站优化
}

二、组件扫描注册

Servlet 3.0 之前,Servlet、Filter、Listener 这些组件都需求在 web.xml 中进行装备,3.0 之后开端不再需求 web.xml 这个装备文件了,一切的组件都可以经过代码装备或许注解来到达意图。

如下图所示,截图自 Servlet 3.1。


Servlet 3.0 开端供给了这 3 个注解来替代。

@WebServlet => 代梧桐轩替 servlet 装备

@WebFilter => 替代 filter 装备

@WebListener => 替代 listener 装备

装备 Servlet 示例

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Java技能栈
*/
@WebServlet(name = "javaServlet", urlPatterns = "/javastack.cn", asyncSupported = true,
initParams = {
@WebInitParam(name = "name", value = "javastack"),
@WebInitParam(name = "sex", value = "man") })
public class JavaServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String name = getServletConfig().getInitParameter("name");
String sex = getServletConfig().getInitParameter("sex");
resp.getOutputStream().println("name is " + name);
resp.getOutputStream().println("sex is " + sex);
}
}

装备 Filter 示例

/**
* @author Java技能栈
*/
@WebFilter(filterName = "javaFilter", urlPatterns = "/*", initParams = {
@WebInitParam(name = "name", vipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷alue = "javastack"),
古诗大全300首@WebInitParam(name = "coipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷de", value = "123456") })
public class JavaFilter implements Filter {
@Override
public void init(FilterConfig filter公主调教Config) throws ServletException {
System.out.println("java filter init.");
String name = filterConfig.getInitParameter("name");
String code = filterConfig.getInitParameter("code");
System.out.println("name is " + name);
System.out.println("code is " + code);
}
@Override
public void doFilter(ServletRequest request, SerpersonvletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("java filter processing.");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("java filter destroy.");
}
}

Listener 装备方法相似,上面的示例代码一看就懂,这儿不再胪陈。

需求留意的是,为了安全考虑,内嵌服务器不会直接履行 Servlet 3.0 里边的 java毒宠佣兵王妃x.servlet.ServletContainerInitializer 接口,或许 Spring 中的 org.springframework.web.WebApplicationInitializer 接口,否则会导致停止 Spring Boot 运用。

所以,假如运用的是 Spring Boot 内嵌服务器,需求在装备类上面增加额定的 @ServletComponentScan 注解来敞开 Servlet 组件扫描功用,假如运用的是独立的服务器,则不需求增加,会运用服务器内部的主动发现机制。

三、动态注册

假如你想在 Spring Boot 中完结 Servlet、Filter、Listener 的初始化操作,你需求在 Spri羞维娅ng 中完成下面这个接口,并注册为一个 bean。

org.springframework.boot.web.servlet.ServletContex但tInitializer

ServletContext 供给了几个动态注册的方法,如下所示。


以下为动态增加 Servlet 示例代码。

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.se藏红花的成效与吃法rvlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Java技能栈
*/
@WebServlet(name = "javaServlet", urlPatterns = "/javastack.cn", asyncSupported = true,
initParams = {
@WebInitParam(name = "name", value = "javastack"),
@WebInitParam(name = "sex", value = "man") })
public class JavaServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String name = getServletConfi金玉良缘g().getInitParameter("name");
String sex = getServletConfig().getInitParameter("sex");
resp.getOutputStream().println("name is " + name);
resp.getOutputStream().println("sex is " + sex);
}
}
import cn.javasta利润表ck.springbootbestpractice.servlet.InitServlet;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;
/**
* @author Java技能栈
*/
@Component
public class ServletConfig implements ServletContextInitializer {
@Override
public void onStartup(ServletContext servletContext) {
ServletRegistration initServlet = servletContext
.addServlet("initServlet", InitServlet.class);
initServlet.addMapping("/initServlet");
initServlet.setInitParameter("name", "javastack");
initServlet.setInitParameter("sex", "man");
}
}

总结

本文介绍了在 Spring Boot 下的 3 种注册 Servlet、Filter、Listener 的方法,我们灵活运用。

看完有收成,点赞转发一下吧!

好了,今日的共享就到这儿,更多 Spring Boot 文章正在编撰中,重视Java技能栈微信大众号获取第一时间推送。在大众号后台回复:boot,还能获取栈长收拾的往期 Spring Boot 教程,都是实战干货,浪琴湾以下仅为部分预览。

  • Spring Boot 读取装备的几种方法
  • Spring Boot 如何做参数校验?
  • Spring Boot 最中心的 25 个注解!
  • Sprin活着电影g Boipad壁纸,Spring Boot 注册 Servlet 的三种方法,真是太有用了!-机器学习优异东西引荐,算法常识,直通硅谷ot 2.x 发动全过程源码剖析
  • Spring Boot 2.x 新特性总结及搬迁攻略
  • ……

本文原创首发于微信大众号:Java技能栈(id:javastack),转载请原样保存本信息。