国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot 中的Servlet簡單使用

Spring Boot 中的Servlet簡單使用

2020-09-17 15:00牛頭人 Java教程

在spring boot中添加自己的Servlet有兩種方法,代碼注冊Servlet和注解自動注冊(Filter和Listener也是如此)。這篇文章主要介紹了Spring Boot 中的Servlet簡單使用,需要的朋友可以參考下

當使用spring-Boot時,嵌入式Servlet容器通過掃描注解的方式注冊Servlet、Filter和Servlet規范的所有監聽器(如HttpSessionListener監聽器)。

Spring boot 的主 Servlet 為 DispatcherServlet,其默認的url-pattern為“/”。也許我們在應用中還需要定義更多的Servlet,該如何使用SpringBoot來完成呢?

在spring boot中添加自己的Servlet有兩種方法,代碼注冊Servlet和注解自動注冊(Filter和Listener也是如此)。

一、代碼注冊通過ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 獲得控制。

也可以通過實現 ServletContextInitializer 接口直接注冊。

二、在 SpringBootApplication 上使用@ServletComponentScan 注解后,Servlet、Filter、Listener 可以直接通過 @WebServlet、@WebFilter、@WebListener 注解自動注冊,無需其他代碼。

1.通過代碼注冊Servlet示例代碼

1).SpringBootSimpleApplication.Java類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.example.servlet.MyServlet;
@SpringBootApplication
public class SpringBootSimpleApplication {
  /**
   * 使用代碼注冊Servlet(不需要@ServletComponentScan注解)
   */
  @Bean
  public ServletRegistrationBean servletRegistrationBean() {
    return new ServletRegistrationBean(new MyServlet(), "/st/*");// ServletName默認值為首字母小寫,即myServlet
  }
  public static void main(String[] args) {
    SpringApplication.run(SpringBootSimpleApplication.class, args);
  }
}

2).MyServlet.java類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.example.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(">>>>>>>>>>doGet()<<<<<<<<<<<");
    doPost(req, resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(">>>>>>>>>>doPost()<<<<<<<<<<<");
    resp.setContentType("text/html");
    resp.setCharacterEncoding("utf-8");
    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>");
  }
}

2.使用注解注冊Servlet示例代碼

1).SpringBootSimpleApplication.java類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.example.servlet.MyServlet;
@SpringBootApplication
@ServletComponentScan
public class SpringBootSimpleApplication {
  /**
   * 使用代碼注冊Servlet(不需要@ServletComponentScan注解)
   */
  @Bean
  public ServletRegistrationBean servletRegistrationBean() {
    return new ServletRegistrationBean(new MyServlet(), "/st/*");// ServletName默認值為首字母小寫,即myServlet
  }
  public static void main(String[] args) {
    SpringApplication.run(SpringBootSimpleApplication.class, args);
  }
}

2).MyServlet2.java類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.example.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 不指定name的情況下,name默認值為類全路徑,即com.example.servlet.MyServlet2
@WebServlet(urlPatterns="/st/myservlet2", description="Servlet的說明")
public class Myservlet2 extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(">>>>>>>>>>doGet2()<<<<<<<<<<<");
    doPost(req, resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(">>>>>>>>>>doPost2()<<<<<<<<<<<");
    resp.setContentType("text/html");
    resp.setCharacterEncoding("utf-8");
    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>大家好,我的名字叫Servlet2</h1>");
    out.println("</body>");
    out.println("</html>");
  }
}

使用 @WebServlet 注解,其中可以設置一些屬性。

3.訪問結果

Spring Boot 中的Servlet簡單使用

4.DispatcherServlet默認攔截

DispatcherServlet 默認攔截“/”,MyServlet 攔截“/st/*”,MyServlet2 攔截“/st/myservlet”,那么在我們訪問 http://localhost:8080/st/myservlet2 的時候系統會怎么處理呢?如果訪問 http://localhost:8080/st/abc的時候又是什么結果呢?其結果是“匹配的優先級是從精確到模糊,復合條件的Servlet并不會都執行”。

既然系統DispatcherServlet 默認攔截“/”,那么我們是否能做修改呢,答案是肯定的,我們在SpringBootSampleApplication中添加代碼:

?
1
2
3
4
5
6
7
8
9
10
11
/**
  * 修改DispatcherServlet默認配置
  */
 @Bean
 public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
   ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet);
   registration.getUrlMappings().clear();
   registration.addUrlMappings("*.do");
   registration.addUrlMappings("*.json");
   return registration;
 }

可以通過注入DispatcherServlet 然后用ServletRegistrationBean包裹一層 動態的加上一些初始參數。

原文鏈接:http://www.cnblogs.com/web424/p/6755950.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男女爱爱视频免费 | 久久99蜜桃综合影院免费观看 | 欧美日韩免费 | 在线不卡视频 | 日韩欧美三级在线观看 | 国产成人精品免费视频大全最热 | 色综合99| 欧美精品一区在线 | 久久性网站 | 久久噜噜噜精品国产亚洲综合 | 国产一区二区成人 | 中文字幕在线视频第一页 | 久久久久久av | 网站黄色在线观看免费 | 中文字幕欧美日韩 | 欧美日韩国产综合视频 | 久久99精品国产麻豆婷婷洗澡 | 成人h动漫在线看 | 欧美午夜在线观看 | 久久女人网 | 精品久久久久久亚洲综合网 | 成人免费在线电影 | 黄视频入口 | 久久久精品天堂 | 日本不卡一区二区三区在线观看 | 国产免费黄色 | 国产精品国产三级国产aⅴ 成人在线免费看 | 欧美国产一区二区 | 亚洲区在线 | 亚洲精品久久久一区二区三区 | 午夜国产视频 | 色天天综合久久久久综合片 | 国产精品国色综合久久 | 在线看国产 | 激情网站免费观看 | 婷婷欧美| 成人在线观看免费 | 97国产精品 | 欧美一区二区三区免费 | 国产日韩精品一区二区 | 精品亚洲一区二区 |