今天搞了个spring3.1+servlet3 无配置项目,事到此时终于算出了一个小东东了
记录于此,已被后用。
1.创建项目,使用eclipse+tomcat7
2.导入spring的包,除此之外还导入了asm-2.2.2.jar、cglib-nodep-2.1_3.jar(这个别导入hibernate的了)、jstl-1.0.2.jar、jackson-all-1.9.1.jar、commons-logging-1.1.1.jar、mysql-connector-java-5.1.12-bin.jar
3.删除了web.xml,准备二个文件:
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_smg?useUnicode=true&charaterEncoding=UTF-8
jdbc.username=root
jdbc.password=****
properties-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:property-placeholder location="classpath:/com/acme/jdbc.properties"/>
<mvc:resources mapping="/static/**" location="/static/"/>
</beans>
4.编写启动容器加载的java文件和java 程序代替的配置
Initializer.java
package com.acme.web;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
public class Initializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
// TODO Auto-generated method stub
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(MvcConfig.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
"dispatcher", new DispatcherServlet(mvcContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
MvcConfig.java
package com.acme.web;
import java.lang.reflect.Method;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
import org.springframework.http.converter.xml.SourceHttpMessageConverter;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.validation.Validator;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
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.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.mvc.annotation.ModelAndViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import com.acme.DBConfig;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.spring.my")
@Import(DBConfig.class)
public class MvcConfig extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver contentNegotiatingViewResolver() {
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
internalResourceViewResolver.setPrefix("/views/");
internalResourceViewResolver.setSuffix(".jsp");
internalResourceViewResolver.setViewClass(JstlView.class);
return internalResourceViewResolver;
}
@Bean
public ModelAndViewResolver modelAndViewResolver(){
return new ModelAndViewResolver() {
@Override
public ModelAndView resolveModelAndView(Method arg0, Class arg1,
Object arg2, ExtendedModelMap arg3, NativeWebRequest arg4) {
// TODO Auto-generated method stub
return UNRESOLVED;
}
};
}
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
// TODO Auto-generated method stub
super.addArgumentResolvers(argumentResolvers);
}
@Override
public void addFormatters(FormatterRegistry registry) {
// TODO Auto-generated method stub
super.addFormatters(registry);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
super.addInterceptors(registry);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// TODO Auto-generated method stub
// registry.addResourceHandler("");
super.addResourceHandlers(registry);
}
@Override
public void addReturnValueHandlers(
List<HandlerMethodReturnValueHandler> returnValueHandlers) {
// TODO Auto-generated method stub
super.addReturnValueHandlers(returnValueHandlers);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// TODO Auto-generated method stub
super.addViewControllers(registry);
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
// TODO Auto-generated method stub
// configurer.enable();
super.configureDefaultServletHandling(configurer);
}
@Override
public void configureHandlerExceptionResolvers(
List<HandlerExceptionResolver> exceptionResolvers) {
// TODO Auto-generated method stub
super.configureHandlerExceptionResolvers(exceptionResolvers);
}
@SuppressWarnings("rawtypes")
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
// TODO Auto-generated method stub
converters.add(new MappingJacksonHttpMessageConverter());
converters.add(new SourceHttpMessageConverter());
converters.add(new FormHttpMessageConverter());
converters.add(new StringHttpMessageConverter());
converters.add(new ByteArrayHttpMessageConverter());
super.configureMessageConverters(converters);
}
@Override
public Validator getValidator() {
// TODO Auto-generated method stub
Validator v= super.getValidator();
return v;
}
}
DBConfig.java
package com.acme;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
public class DBConfig {
private @Value("${jdbc.driver}")
String driver;
private @Value("${jdbc.url}")
String url;
private @Value("${jdbc.username}")
String username;
private @Value("${jdbc.password}")
String password;
public @Bean
DataSource dataSource() {
System.out.println("OK-------------------------");
DriverManagerDataSource dataSource=new DriverManagerDataSource(url, username, password);
dataSource.setDriverClassName(driver);
return dataSource;
}
public @Bean
JdbcTemplate jdbcTemplate(){
return new JdbcTemplate(dataSource());
}
}
5.创建好各个目录(根据配置程序和仅有的一个xml)
6. 编写测试程序,启动项目测试(附件含有)