Spring使用代码配置Web.xml

方式一:继承WebMvcConfigurerAdapter类

1、使用一个类来继承

package com.wbg.springJavaConfig.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

@Configuration//声明当前类是一个配置类(相当于一个Spring的xml文件)
@EnableWebMvc//若无此注解,WebMvcConfigurerAdapter无效
/**
 *
 * @ComponentScan 扫描("xxx")包下的@Service、@Controller、@Component、@Repository的类,并注册为Bean
 *相当于:<context:component-scan base-package="xxx" />
 */
@ComponentScan("com.wbg.springJavaConfig.controller")
public class SpringConfig extends WebMvcConfigurerAdapter {
    /**
     * @Bean 相当Spring配置文件bean节点
     * 添加一个ViewResolver解析view 配置jsp
     * @return InternalResourceViewResolver
     * 这里的配置相当于:
     * <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     *         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
     *         <property name="prefix" value="/WEB-INF/jsp/" />
     *         <property name="suffix" value=".jsp" />
     *     </bean>
     */
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }

}
class WebInitializer implements WebApplicationInitializer {
    /**
     * <context-param>
     *         <param-name>contextConfigLocation</param-name>
     *         <param-value>classpath:spring/spring-*.xml</param-value>
     *     </context-param>
     *     <listener>
     *         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     *     </listener>
     *
     *
     * <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     *         <init-param>
     *             <param-name>contextConfigLocation</param-name>
     *             <param-value>classpath:spring-web.xml</param-value>
     *         </init-param>
     *
     * @param servletContext
     */
    public void onStartup(ServletContext servletContext){
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringConfig.class);
        ctx.setServletContext(servletContext);
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher",new DispatcherServlet(ctx));
        dynamic.addMapping("/");
        dynamic.setLoadOnStartup(1);
    }

}

2、创建jsp

3、使用

方式二:继承AbstractAnnotationConfigDispatcherServletInitializer类

1、创建WebInit继承 :

package com.wbg.springJavaConfig.spring2;

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

public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{ContextConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringWebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

2、创建:SpringWebConfig类

package com.wbg.springJavaConfig.spring2;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
public class SpringWebConfig {
    @Bean
    public InternalResourceViewResolver internalResourceViewResolverConfig(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setViewClass(JstlView.class);
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Bean
    public StandardServletMultipartResolver multipartResolverConfig(){
        return new StandardServletMultipartResolver();
    }

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

3、创建ContextConfig类

package com.wbg.springJavaConfig.spring2;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.wbg.springJavaConfig.controller"},excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})
public class ContextConfig {
}

3、使用

demo:https://github.com/weibanggang/SpirngwebConfig.git

原文地址:https://www.cnblogs.com/weibanggang/p/10118574.html

时间: 2024-10-15 19:25:23

Spring使用代码配置Web.xml的相关文章

SpringMVC4零配置--web.xml

servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitializer:启动容器时负责加载相关配置 Java代码   package javax.servlet; import java.util.Set; public interface ServletContainerInitializer { public void onStartup(Set<Class

一个配置web.xml的编程方法

使用编程方法针对任何java/j2ee配置web.xml Introduction本文介绍了Java和J2EE项目使用任何一种编程方法的web.xml配置 Background作为一种传统的方法,Java和J2EE的Web应用中的任何servlet上下文和其他监听器的配置都是在web.xml文件中配置的.与此相反,Servlet 3引言旨在提供配置web.xml的条目的实用方法. 任何Servlet 3基于Web应用可以实现一个servletcontainerinitializer接口,该接口将

spring结合时,web.xml的配置

<!-- 1. web.xml配置 <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.root</param-value> </context-param> "webapp.root"这个字符串可以随便写任何字符串.如果不配置默认值是"webapp.root". 可以用System.getP

spring的配置文件在web.xml中加载的方式

web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式. 1.如果spring配置文件的名称为applicationContext.xml,并且存放在WEB-INF/目录下,那么只需要在web.xml中加入以下代码即可 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> &

Spring mvc项目的web.xml以及注释

web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="3.0"    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

SSM学习-4.配置web.xml

在web.xml主要配置: 1.启动spring容器 2.springmvc的拦截器 3.字符编码过滤器 4.REST风格的URI 具体配置如下: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j

SpringMVC配置web.xml文件详解(列举常用的配置)

常用的web.xml的配置 1.Spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(listener-class) ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默

[从零搭网站五]http网站Tomcat配置web.xml和server.xml

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 上一章我们在CentOS下搭建了Tomcat,但是还是没有跑起来...那么这一章就把最后的配置给大家放上去. 有两种方式:一种是用 rm -f 给这两个文件删掉,再用vim建新的出来.另一种是vim编辑,输入:set nu 显示行号,再输入:1,最后一行的行号d 把全文删掉. 然后再复制粘贴我给你们的配置文件就行. web.xml  , 完全不用修改,直接复制就行了: <?xml version="1.0" encoding=

JSP,JAVAWEB通过配置web.xml完成主/二级域名Session共享

As we all 知道.web应用中一般根据cookie id来完成Session支持以便于用户跟踪,在顶级域名如 a.com和www.a.com 之间的Session和Cookie默认情况是无法共享的,这是因为Cookie根据Domain属性来决定归属.通过Chrome系浏览器的F12调试工具我们可以看到a.com的默认Domain是a.com而www.a.com的默认Domain是www.a.com,可能他们都访问的是同一个站点,但是这两个Domain属性值不一致导致了如果在a.com基于