spring基於java配置DispatcherServlet和view
本文基於java 的配置實現DispatcherServlet的配置。
1、建立初始化類
建立繼承AbstractAnnotationConfigDispatcherServletInitializer的初始化類,該類在容器初始化時會自動呼叫建立一個java類,該類繼承AbstractAnnotationConfigDispatcherServletInitializer,並實現其中必須實現的方法以及自己關心的方法,原始碼如下:
package cn.hifei.spring.demo.config;
import javax.servlet.Filter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import cn.hifei.spring.demo.base.BaseConfiguration;
import cn.hifei.spring.demo.web.DefaultWebConfiguration;
public class DefaultWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class<?>[] { BaseConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class<?>[] { DefaultWebConfiguration.class };
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[]{"/"};
}
@Override
protected Filter[] getServletFilters() {
HiddenHttpMethodFilter fl = new HiddenHttpMethodFilter();
return new Filter[]{fl};
}
}
2、建立用於配置web的配置類
建立一個繼承於WebMvcConfigurerAdapter的類用於配置servlet,一個工程中可以有多個servlet的配置。BaseConfiguration就是一個使用了@Configuration註解實現的類,裡面按照自己的需要新增bean的例項化即可,這裡就不給原始碼了。WebMvcConfigurerAdapter的原始碼如下:
package cn.hifei.spring.demo.web;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
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;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan("cn.hifei.spring.demo.web")
public class DefaultWebConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/static/**","/css/**");
}
}
如果需要引用基於xml的配置,可以使用如下類似的註解:
@ImportResource("classpath:applicationContext-*.xml")
3、修改web.xml
完成上述兩個配置的步驟之後,需要修改web.xml檔案去除同樣的配置,否則可能會造成衝突,如本文去除如下幾個部分的配置:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring-servlet.xml</param-value>
</init-param>
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>spring</servlet-name>
</filter-mapping>
4、建立測試的controller
建立一個用於測試的controller,用於測試配置是否生效。如本文使用的原始碼如下:
package cn.hifei.spring.demo.web.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@RequestMapping(value="hello",method=RequestMethod.GET)
public String test() {
return "hello,world";
}
}
4、部署測試
部署工程到web伺服器,然後開啟瀏覽器訪問如下連線即可看到"hello,world"的輸出:
http://127.0.0.1:8080/SpringTest1/hello
相關文章
- Spring MVC DispatcherServlet 配置SpringMVCServlet
- spring boot基於Java的容器配置Spring BootJava
- Spring在基於java的配置中使用prop屬性SpringJava
- Spring MVC 解析之 DispatcherServletSpringMVCServlet
- 1.3—Spring基礎配置—2.Java配置SpringJava
- Java Web之基於註解的Spring MVC環境配置JavaWebSpringMVC
- 基於xml的Spring多資料來源配置和使用XMLSpring
- Spring基於註解的IoC配置Spring
- Spring基於註解的aop配置Spring
- DispatcherServlet ——Spring MVC 的大心臟ServletSpringMVC
- 基於註解的Spring多資料來源配置和使用Spring
- 基於Spring Cloud搭建分散式配置中心SpringCloud分散式
- spring上 -基於Xml配置bean筆記SpringXMLBean筆記
- Java-Spring-WebService最基礎的配置示例JavaSpringWeb
- 【轉】ContextLoaderListener 和 DispatcherServletContextServlet
- 基於Java11最小化Spring Boot 2 的Docker映象檔案配置JavaSpring BootDocker
- spring事物配置,宣告式事務管理和基於@Transactional註解的使用Spring
- spring5.x版本 java配置和annotation配置說明SpringJava
- linux 安裝mysql和主從配置 + Spring 基於註解配置mysql讀寫分離LinuxMySqlSpring
- spring基於註解配置實現事務控制Spring
- Spring MVC之基於java config無xml配置的web應用構建SpringMVCJavaXMLWeb
- 基於註解的Spring多資料來源配置和使用(非事務)Spring
- Spring--Java配置SpringJava
- 基於Spring Integration和Apache Camel的SEDASpringApache
- 基於Spring Boot與Spring Data JPA的多資料來源配置Spring Boot
- 如何基於 SAP CDS view 生成 object pageViewObject
- 基於Vue-cli和Vux的webpack配置VueUXWeb
- 基於Spring Boot和Spring Cloud實現微服務架構Spring BootCloud微服務架構
- 說說在 Spring 中,如何基於 XML 來配置事務SpringXML
- 基於java spring的郵件群發簡單方式JavaSpring
- 基於github和hexo搭建部落格 github配置GithubHexo
- Spring Boot 基於註解驅動原始碼分析--自動配置Spring Boot原始碼
- 基於Spring Cloud 幾行配置完成單點登入開發SpringCloud
- spring上 -基於註解配置bean,動態代理,AOP筆記SpringBean筆記
- 結合DDD和Spring Boot實現基於REST API的併發控制 -DZone JavaSpring BootRESTAPIJava
- Java基礎7:關於Java類和包的那些事Java
- View基礎View
- 基於Annotation註解整合SSH框架和基於XML檔案配置Bean整合SSH框架框架XMLBean