如何用Java类配置Spring MVC(不通过web.xml和XML方式)

java

DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servlet 3规范和Spring 3.1的功能增强, 可以采用一种全新的,更简洁的方式配置Spring MVC了. 下面按这种方式一个Hello World的MVC配置.

Step 1:先用eclipse创建一个Maven的WEB工程. pom.xml文件如下:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

2 <modelVersion>4.0.0</modelVersion>

3 <groupId>ocr</groupId>

4 <artifactId>ocr</artifactId>

5 <version>0.0.1-SNAPSHOT</version>

6 <packaging>war</packaging>

7

8 <properties>

9 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

10 <javaee-api.version>7.0</javaee-api.version>

11 <spring.version>4.2.0.RELEASE</spring.version>

12 <junit.version>4.12</junit.version>

13 </properties>

14

15 <dependencies>

16 <dependency>

17 <groupId>javax</groupId>

18 <artifactId>javaee-api</artifactId>

19 <version>${javaee-api.version}</version>

20 </dependency>

21 <dependency>

22 <groupId>junit</groupId>

23 <artifactId>junit</artifactId>

24 <version>${junit.version}</version>

25 </dependency>

26 <dependency>

27 <groupId>org.springframework</groupId>

28 <artifactId>spring-context</artifactId>

29 <version>${spring.version}</version>

30 </dependency>

31 <dependency>

32 <groupId>org.springframework</groupId>

33 <artifactId>spring-aop</artifactId>

34 <version>${spring.version}</version>

35 </dependency>

36 <dependency>

37 <groupId>org.springframework</groupId>

38 <artifactId>spring-webmvc</artifactId>

39 <version>${spring.version}</version>

40 </dependency>

41 <dependency>

42 <groupId>org.springframework</groupId>

43 <artifactId>spring-web</artifactId>

44 <version>${spring.version}</version>

45 </dependency>

46

47 <dependency>

48 <groupId>javax.servlet</groupId>

49 <artifactId>jstl</artifactId>

50 <version>1.2</version>

51 </dependency>

52

53 <dependency>

54 <groupId>commons-logging</groupId>

55 <artifactId>commons-logging</artifactId>

56 <version>1.1.3</version>

57 </dependency>

58 </dependencies>

59

60

61 <build>

62 <plugins>

63 <plugin>

64 <artifactId>maven-compiler-plugin</artifactId>

65 <version>3.3</version>

66 <configuration>

67 <source>1.7</source>

68 <target>1.7</target>

69 </configuration>

70 </plugin>

71 <plugin>

72 <artifactId>maven-war-plugin</artifactId>

73 <version>2.6</version>

74 <configuration>

75 <warSourceDirectory>WebContent</warSourceDirectory>

76 <failOnMissingWebXml>false</failOnMissingWebXml>

77 </configuration>

78 </plugin>

79 </plugins>

80 </build>

81 </project>

Step 2: 配置DispatcherServlet. 需要创建一个Web初始化类OcrWebAppInitializer, 继承自AbstractAnnotationConfigDispatcherServletInitializer

 1 package com.chry.ocr.config;

2

3 import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

4

5 public class OcrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

6

7 @Override

8 protected Class<?>[] getRootConfigClasses() {

9 return new Class<?>[] { RootConfig.class };

10 }

11

12 @Override

13 protected Class<?>[] getServletConfigClasses() {

14 return new Class<?>[] { WebConfig.class }; //ָ指定Web配置类

15 }

16

17 @Override

18 protected String[] getServletMappings() { //将DispatcherServlet映射到"/"

19 return new String[] { "/" };

20 }

21

22 }

Step 3: 配置Spring MVC视图解析WebConfig.java, 需要要创建一个类继承自WebMvcConfigurerAdapter

 1 package com.chry.ocr.config;

2

3 import org.springframework.context.annotation.Bean;

4 import org.springframework.context.annotation.ComponentScan;

5 import org.springframework.context.annotation.Configuration;

6 import org.springframework.web.servlet.ViewResolver;

7 import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;

8 import org.springframework.web.servlet.config.annotation.EnableWebMvc;

9 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

10 import org.springframework.web.servlet.view.InternalResourceViewResolver;

11

12 @Configuration

13 @EnableWebMvc //启动SpringMVC

14 @ComponentScan("com.chry.ocr.controller") //启动组件扫描

15 public class WebConfig extends WebMvcConfigurerAdapter {

16

17 //配置JSP视图解析器

18 @Bean

19 public ViewResolver viewResolver() {

20 InternalResourceViewResolver resolver = new InternalResourceViewResolver();

21 resolver.setPrefix("/WEB-INF/views/");

22 resolver.setSuffix(".jsp");

23 resolver.setExposeContextBeansAsAttributes(true);

24 return resolver;

25 }

26

27 //配置静态资源的处理

28 @Override

29 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

30 configurer.enable(); //对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet

31 }

32

33 }

Step 4: 配置RootConfig.java

 1 package com.chry.ocr.config;

2

3 import org.springframework.context.annotation.ComponentScan;

4 import org.springframework.context.annotation.ComponentScan.Filter;

5 import org.springframework.context.annotation.Configuration;

6 import org.springframework.context.annotation.FilterType;

7 import org.springframework.web.servlet.config.annotation.EnableWebMvc;

8

9 @Configuration

10 @ComponentScan( basePackages={"com.chry.ocr"},

11 excludeFilters = { @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}

12 )

13

14 public class RootConfig {

15

16 }

至此, 传统方式中需要通过web.xml进行配置的东西就已将全部完成有上面三个java类(OcrWebAppInitializer, RootConfig, WebConfig)完成. 可以开始写Controller和页面代码了

Step 5: 编写一个HomeController.java, 它将输出"hello World from Spring MVC"到home.jsp页面

 1 package com.chry.ocr.controller;

2

3 import static org.springframework.web.bind.annotation.RequestMethod.*;

4 import org.springframework.stereotype.Controller;

5 import org.springframework.web.bind.annotation.RequestMapping;

6 import org.springframework.web.bind.annotation.RequestMethod;

7 import org.springframework.web.servlet.ModelAndView;

8

9 @Controller

10 public class HomeController {

11 @RequestMapping(value = "/", method=GET)

12 public ModelAndView home() {

13 String message = "Hello world from Spring MVC";

14 return new ModelAndView("home", "message", message);

15 }

16 }

Step 6: 编写一个jsp页面, 按照我们在视图解析器和Controller里面的配置,放在WEB-INF/views/home.jsp中

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8"%>

2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

3 <html>

4 <head>

5 <title>Spring MVC Tutorial chry</title>

6 <style type="text/css">

7 </style>

8 </head>

9 <body>

10 <br>

11 <div style='text-align:center;'>

12 ${message}

13 </div>

14 </body>

Step 7: 至此所有工作完成, 使用maven的"clean install"选项进行编译打包后,在执行,访问http://localhost:8080即可. 页面效果和工程结构如下,工程里面没有web.xml

以上是 如何用Java类配置Spring MVC(不通过web.xml和XML方式) 的全部内容, 来源链接: utcz.com/z/391737.html

回到顶部