SpringMVC基于代码的配置方式(零配置,无web.xml)

基于配置文件的web项目维护起来可能会更方便,但是有时候我们会有一些特殊的需求,比如防止客户胡乱更改配置,这时候我们需要给配置隐藏到代码中。

1.创建一个动态web项目(无需web.xml)

2.右键项目添加几个package: com.easyweb.config (保存项目配置) com.easyweb.controller (保存springMvc controller)

3.在 com.easyweb.config 新建一个类 WebApplicationStartup ,这个类实现WebApplicationInitializer 接口,是项目的入口,作用类似于web.xml,具体代码如下:

?


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

<code class="hljs" java="">package com.easyweb.config;

import javax.servlet.MultipartConfigElement;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.WebApplicationInitializer;

import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

import org.springframework.web.servlet.DispatcherServlet;

/**

 * 服务器启动入口类

 *

 * @author Administrator

 *

 */

public class WebApplicationStartup implements WebApplicationInitializer {

  private static final String SERVLET_NAME = Spring-mvc;

  private static final long MAX_FILE_UPLOAD_SIZE = 1024 * 1024 * 5; // 5 Mb

  private static final int FILE_SIZE_THRESHOLD = 1024 * 1024; // After 1Mb

  private static final long MAX_REQUEST_SIZE = -1L; // No request size limit

  /**

   * 服务器启动调用此方法,在这里可以做配置 作用与web.xml相同

   */

  @Override

  public void onStartup(ServletContext servletContext) throws ServletException {

    // 注册springMvc的servlet

    this.addServlet(servletContext);

    // 注册过滤器

    // servletContext.addFilter(arg0, arg1)

    // 注册监听器

    // servletContext.addListener(arg0);

  }

  /**

   * 注册Spring servlet

   *

   * @param servletContext

   */

  private void addServlet(ServletContext servletContext) {

    // 构建一个application context

    AnnotationConfigWebApplicationContext webContext = createWebContext(SpringMVC.class, ViewConfiguration.class);

    // 注册spring mvc 的 servlet

    Dynamic dynamic = servletContext.addServlet(SERVLET_NAME, new DispatcherServlet(webContext));

    // 添加springMVC 允许访问的Controller后缀

    dynamic.addMapping(*.html, *.ajax, *.css, *.js, *.gif, *.jpg, *.png);

    // 全部通过请用 “/”

    // dynamic.addMapping(/);

    dynamic.setLoadOnStartup(1);

    dynamic.setMultipartConfig(new MultipartConfigElement(null, MAX_FILE_UPLOAD_SIZE, MAX_REQUEST_SIZE, FILE_SIZE_THRESHOLD));

  }

  /**

   * 通过自定义的配置类来实例化一个Web Application Context

   *

   * @param annotatedClasses

   * @return

   */

  private AnnotationConfigWebApplicationContext createWebContext(Class<!--?-->... annotatedClasses) {

    AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();

    webContext.register(annotatedClasses);

    return webContext;

  }

}</code>

4.在com.easyweb.config 下添加类 SpringMVC 继承 WebMvcConfigurerAdapter,这个类的作用是进行SpringMVC的一些配置,代码如下:

?


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

<code class="hljs" java="">package com.easyweb.config;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

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

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

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

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

@Configuration

@EnableWebMvc

//指明controller所在的包名

@ComponentScan(basePackages = {com.easyweb.controller})

public class SpringMVC extends WebMvcConfigurerAdapter {

  /**

   * 非必须

   */

  @Override

  public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {

    configurer.enable();

  }

  /**

   * 如果项目的一些资源文件放在/WEB-INF/resources/下面

   * 在浏览器访问的地址就是类似:http://host:port/projectName/WEB-INF/resources/xxx.css

   * 但是加了如下定义之后就可以这样访问:

   * http://host:port/projectName/resources/xxx.css

   * 非必须

   */

  @Override

  public void addResourceHandlers(final ResourceHandlerRegistry registry) {

    registry.addResourceHandler(/resources/**/*).addResourceLocations(/WEB-INF/resources/);

  }

}</code>

5.添加view配置文件com.easyweb.config下新建类ViewConfiguration,里面可以根据自己的需要定义视图拦截器:

?


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

<code avrasm="" class="hljs">package com.easyweb.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.ViewResolver;

import org.springframework.web.servlet.view.JstlView;

import org.springframework.web.servlet.view.UrlBasedViewResolver;

import org.springframework.web.servlet.view.tiles2.TilesConfigurer;

import org.springframework.web.servlet.view.tiles2.TilesView;

@Configuration

public class ViewConfiguration {

    @Bean

    public ViewResolver urlBasedViewResolver() {

        UrlBasedViewResolver viewResolver;

        viewResolver = new UrlBasedViewResolver();

        viewResolver.setOrder(2);

        viewResolver.setPrefix(/WEB-INF/);

        viewResolver.setSuffix(.jsp);

        viewResolver.setViewClass(JstlView.class);

        // for debug envirment

        viewResolver.setCache(false);

        return viewResolver;

    }

    @Bean

    public ViewResolver tilesViewResolver() {

        UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();

        urlBasedViewResolver.setOrder(1);

        urlBasedViewResolver.setViewClass(TilesView.class);

        //urlBasedViewResolver.

        return urlBasedViewResolver;

    }

    @Bean

    public TilesConfigurer tilesConfigurer() {

        TilesConfigurer tilesConfigurer = new TilesConfigurer();

        tilesConfigurer.setDefinitions(new String[] { classpath:tiles.xml });

        return tilesConfigurer;

    }

}</code>

6.本例中还用了tiles视图解析器,替换了原始的include方式

时间: 2024-10-27 08:26:29

SpringMVC基于代码的配置方式(零配置,无web.xml)的相关文章

Spring MVC全注解配置 - 无web.xml

Serlvet 3以后,我们可以使用注解来配置Servlet,对于像Spring这类的框架来说是一个很好的适应.Spring也对此特性加入了很多的新功能.本文就将简单的对之前的xml配置转换为java代码的配置.代码配置让程序员们觉得更加具有流程化,不像配置很多代码程序员们都不愿意look into. 接下来,进行替换我们之前的web.xml和spring-mvc.xml的配置.也就是在你的web工程里面看不到这两个配置文件了.(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配

配置 struts2 时掉进 web.xml 的坑

这个声明不好用 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > 这个声明才是struts2 的声明 <web-app id="struts_blank" version="2.4" xmlns="h

零配置简单搭建SpringMVC 项目

SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对SpringMVC启动时加载顺序做简单的说明. 1.SpringMVC启动流程图 2.SpringMVC项目启动流程介绍 SpringMVC 是Spring 框架的重要模块,借助于Spring 的容器技术,可以非常方面的搭建Web项目. SpringMVC项目启动时要完成Spring 容器的初始化和Sp

spring boot01,spring完全注解(零配置)编程方式

前言: spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置.有了它, 你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置. 一  spring4.x的java注解方式编程 Java注解是Spring4.x推荐的配置方式,可以完全替代xml配置.Spring的Java注解方式是通过 @Configuration和 @Bean这两个注解实现的: 1.@Configuration 作用于类

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

Spring Web工程web.xml零配置即使用Java Config + Annotation

摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Config方式去替换以前冗余的XML格式文件的配置方式: 在开始之前,我们需要注意一下,要基于Java Config实现无web.xml的配置,我们的工程的Servlet必须是3.0及其以上的版本: 1.我们要实现无web.xml的配置,只需要关注实现WebApplicationInitializer这个

DUBBO配置方式详解

DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载. 根据 DUBBO 官方文档,配置 DUBBO 有 4 种方式,分别

[转载,感觉写的非常详细]DUBBO配置方式详解

[转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Sp

Vim配置方式与简单配置

vim的在线游戏练习网站:http://vim-adventures.com/还挺好玩的. 关于vim内容最详细的地方:https://vimjc.com/ 配置方式 手动配置.永久配置.快捷键配置 手动配置 直接再底行模式下输入配置命令,比如显示行号,在底行模式输入set nu就能显示行号,退出后配置不再生效. 永久配置 将配置项写到配置文件中,每次打开vim会自动配置.此配置文件不止一个,有/usr/share/vim/.vimrc./etc/vim/vimrc还有用户配置文件~/.vimr