springboot中使用Servlet
阿新 • • 發佈:2020-08-03
在springboot中使用Servlet主要有兩種方式:
方式一、使用註解的方式:
首先編寫一個Servlet類繼承HttpServlet,方式和正常寫Servlet一樣。
然後在這個類上面加上@WebServlet註解,如下:
@WebServlet(name = "MyServlet",urlPatterns = "/myServlet")//表示請求路徑 public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException { resp.getWriter().println("MyServlet"); resp.getWriter().flush(); resp.getWriter().close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
但是這個時候,Springboot並不知道你加了Servlet,所以需要在Main方法上加上@ServletComponentScan註解,表示Servlet元件掃描,可以加上引數basePackages來說明需要掃描的包是哪個。具體如下:
@SpringBootApplication//SpringBoot的全域性的自動配置註解,所有的業務類都要放在子包下,才能自動配置 @ServletComponentScan(basePackages = {"com.kunkun.springboot.servlet"})//servlet掃描 public class Application {public static void main(String[] args) { //固定的程式碼,啟動SpringBoot程式,初始化Spring容器 SpringApplication.run(Application.class, args); } }
這樣就完成了Servlet的配置:結果如下:
方式二:配置類的方式
首先依然是寫一個普通的Servlet,如下:
public class HeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().println("HeServlet2222222,<br>坤坤"); resp.getWriter().flush(); resp.getWriter().close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
然後寫一個配置類,如下:
@Configuration public class ServletConfig { /** * @Bean 註解等價於在Spring配置檔案xml中配置一個Bean * <Bean id="xxx", class="xxx.xxx.xxx"> * * </Bean> * 方法名等於id,方法返回型別等於class * * @return */ @Bean public ServletRegistrationBean heServletRegistrationBean(){ //返回一個Servlet註冊bean,在這裡可以新增Servlet和請求路徑 ServletRegistrationBean registration = new ServletRegistrationBean(new HeServlet(),"/servlet/heservlet"); return registration; } }
第二種方式,springboot提供的方式,結果如下: