zoukankan      html  css  js  c++  java
  • 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    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

  • 相关阅读:
    JQ-动画合集(ing...)
    CSS-各种cs样式之浏览器兼容处理方式汇总大全(更新中...)
    CSS-用伪元素制作小箭头(轮播图的左右切换btn)
    CSS-垂直|水平居中问题的解决方法总结
    JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
    canvas-渐变文字
    HTML-一个网页的头部的大概框架(完善ing)
    JS-面向对象
    CSS-border属性制作小三角
    JS事件-事件处理程序-笔记总结ing...
  • 原文地址:https://www.cnblogs.com/chry/p/6239510.html
Copyright © 2011-2022 走看看