您的位置:首页 > 编程语言 > Java开发

【Spring Boot】web应用开发-Servlets, Filters, listeners

2017-10-03 16:28 633 查看
Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、 Filter、Listener等等。

在spring boot中的三种实现方式

方法一:通过注册ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制

?
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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143
/**

*自定义servlet

*

*
@author wujing

*/

public

class
CustomServlet
extends
HttpServlet {

/**

*

*/

private

static
final
long
serialVersionUID = 1L;

@Override

protected

void
doGet(HttpServletRequest request, HttpServletResponse response)

throws

ServletException, IOException {

System.out.println("servlet
get method");

doPost(request,
response);

}

@Override

protected

void
doPost(HttpServletRequest request, HttpServletResponse response)

throws

ServletException, IOException {

System.out.println("servlet
post method");

response.getWriter().write("hello
world");

}

}

/**

*自定义filter

*

*
@author wujing

*/

public

class
CustomFilter
implements
Filter {

@Override

public

void
init(FilterConfig filterConfig)
throws
ServletException {

System.out.println("init
filter");

}

@Override

public

void
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws

IOException, ServletException {

System.out.println("do
filter");

chain.doFilter(request,
response);

}

@Override

public

void
destroy() {

System.out.println("destroy
filter");

}

}

/**

*自定义listener

*

*
@author wujing

*/

public

class
CustomListener
implements
ServletContextListener {

@Override

public

void
contextInitialized(ServletContextEvent sce) {

System.out.println("contextInitialized");

}

@Override

public

void
contextDestroyed(ServletContextEvent sce) {

System.out.println("contextDestroyed");

}

}
注册bean

?
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
@Bean

public

ServletRegistrationBean servletRegistrationBean() {

return

new
ServletRegistrationBean(new

CustomServlet(),
"/roncoo");

}

@Bean

public

FilterRegistrationBean filterRegistrationBean() {

return

new
FilterRegistrationBean(new

CustomFilter(), servletRegistrationBean());

}

@Bean

public

ServletListenerRegistrationBean servletListenerRegistrationBean() {

return

new
ServletListenerRegistrationBean(new

CustomListener());

}
方法二:通过实现 ServletContextInitializer 接口直接注册

?
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
implementsServletContextInitializer
{

@Override

publicvoidonStartup(ServletContextservletContext)throwsServletException
{

servletContext.addServlet("customServlet",newCustomServlet()).addMapping("/roncoo");

servletContext.addFilter("customFilter",newCustomFilter())

.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),true,"customServlet");

servletContext.addListener(newCustomListener());

}
方法三:在 SpringBootApplication 上使用@ServletComponentScan 注解后,直接通过@WebServlet、@WebFilter、@WebListener 注解自动注册
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: