应用场景
在以前的web项目,servlet常用与特殊处理,比如验证码的实现,对外暴露http接口等等,重要性不言而喻。
springboot也有自己的实现servlet的方式。
代码注册servlet
通过ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean、ServletContextInitializer
案例采用通过ServletRegistrationBean注册实现
注解注册servlet
比较方便,首先再SpringBootApplication(springboot项目入口)上添加@ServletComponentScan注解,其次,是自定义Servlet上添加@WebServlet注解
一、代码注册实现
自定义servlet MyServlet.java
// 方法二:通过@WebServlet
//@WebServlet(urlPatterns = "/myServlet.view",description = "这事我自定义的servlet")
public class MyServlet extends HttpServlet {
private final Logger _logger = LoggerFactory.getLogger(this.getClass());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
_logger.info("===========doGet()============");
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
_logger.info("===========doPost()============");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>这是我自定义的Servlet</h1>");
out.println("</body>");
out.println("</html>");
}
}
自定义配置文件
@Configuration
public class ServertConfig {
/**
* 方法一:通过ServletRegistrationBean注册
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new MyServlet(),"/myServlet/*") ;
}
}
程序入口
@SpringBootApplication
//@ServletComponentScan(basePackages = "com.hsy.springboot.servlet")
public class SpringBootServletApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootServletApplication.class,args);
}
}
项目结构图
二、注解实现
1.将程序入口的//@ServletComponentScan(basePackages = “com.hsy.springboot.servlet”) 解注释
2.将MyServlet 中的 //@WebServlet(urlPatterns = “/myServlet.view”,description = “这事我自定义的servlet”) 解注释。