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

Spring MVC无XML配置
本文介绍了一种不使用XML配置的Spring MVC实现方法,利用Servlet3规范和Spring3.1的功能增强来简化配置过程,并提供了从创建Maven WEB工程到编写Controller及页面代码的详细步骤。

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. <build>
  61. <plugins>
  62. <plugin>
  63. <artifactId>maven-compiler-plugin</artifactId>
  64. <version>3.3</version>
  65. <configuration>
  66. <source>1.7</source>
  67. <target>1.7</target>
  68. </configuration>
  69. </plugin>
  70. <plugin>
  71. <artifactId>maven-war-plugin</artifactId>
  72. <version>2.6</version>
  73. <configuration>
  74. <warSourceDirectory>WebContent</warSourceDirectory>
  75. <failOnMissingWebXml>false</failOnMissingWebXml>
  76. </configuration>
  77. </plugin>
  78. </plugins>
  79. </build>
  80. </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类(OcrWebAppInitializerRootConfigWebConfig)完成. 可以开始写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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值