今天搞了个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. 编写测试程序,启动项目测试(附件含有)