servlet中注入spring托管bean的方法(一)

2014-11-24 02:38:38 · 作者: · 浏览: 0

思路:把servlet配置为spring的bean,就可以实现其他bean的注入,然后使用代理servlet来辅助配置和运行:

一、代理servlet的写法:

view sourceprint 01 import javax.servlet.ServletException;

02

03 import javax.servlet.http.HttpServlet;

04

05 import javax.servlet.http.HttpServletRequest;

06

07 import javax.servlet.http.HttpServletResponse;

08

09

10

11 import org.apache.commons.logging.Log;

12

13 import org.apache.commons.logging.LogFactory;

14

15 import org.springframework.web.context.WebApplicationContext;

16

17 import org.springframework.web.context.support.WebApplicationContextUtils;

18

19

20

21 /**

22

23 * HttpServlet 代理

24

25 * @author lwei

26

27 * @since 2011-03-17

28

29 * @version 1.0

30

31 */

32

33 public class HttpServletProxy extends HttpServlet {

34

35 /**

36

37 * random serialVersionUID

38

39 */

40

41 private static final long serialVersionUID = -7208519469035631940L;

42

43 Log logger = LogFactory.getLog(HttpServletProxy.class);

44

45 private String targetServlet;

46

47 private HttpServlet proxy;

48

49

50

51 public void init() throws ServletException {

52

53 this.targetServlet = getInitParameter("targetServlet");

54

55 getServletBean();

56

57 proxy.init(getServletConfig());

58

59 logger.info(targetServlet + " was inited by HttpServletProxy successfully......");

60

61 }

62

63

64

65 private void getServletBean() {

66

67 WebApplicationContext wac =

68

69 WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());

70

71 this.proxy = (HttpServlet) wac.getBean(targetServlet);

72

73 }

74

75

76

77 @Override

78

79 public void service(HttpServletRequest request, HttpServletResponse response)

80

81 throws ServletException, IOException, RuntimeException {

82

83 proxy.service(request, response);

84

85 }

86

87 }


二、业务servlet的写法:


view sourceprint 01 import java.io.IOException;

02

03

04

05 import javax.servlet.ServletException;

06

07 import javax.servlet.ServletOutputStream;

08

09 import javax.servlet.http.HttpServlet;

10

11 import javax.servlet.http.HttpServletRequest;

12

13 import javax.servlet.http.HttpServletResponse;

14

15

16

17 /**

18

19 * @author lwei

20

21 */

22

23 public class UserCheckServlet extends HttpServlet {

24

25

26

27 /**

28

29 * random serialVersionUID

30

31 */

32

33 private static final long serialVersionUID = 3075635113536622929L;

34

35

36

37 private UserService userService;(UserService 是spring托管的bean,通过set方法注入)

38

39

40

41 //如果直接配置在spring配置文件中,则set方法不是必须的。

42

43 //具体怎么注入bean,看个人使用spring的习惯了

44

45 public void setUserService (UserService userService) {

46

47 this.userService = userService;

48

49 }

50

51

52

53 public UserCheckServlet() {

54

55 super();

56

57 }

58

59

60

61 publ