使用纯Java整合SpringMVC、freemarker

前言

我一直以来spring的配置都是通过web.xml来配置的,但是最近看到servlet3.0(即一般Tomcat 6.0以上)以上可用通过Java类来配置spring,这样做比较直观。当然,如果servlet版本较低那只能通过web.xml来配置。
步骤
1.新建一个web工程
2.导入如下jar包(红色标记的是必须要的jar包,其他看情况自行加入)
  


3.新建一个类spittrWebAppInitilizer,包名自己定义(我用com.spitter.config),这个类继承AbstractAnnotationConfigDispatcherServletInitializer,代码 如下:
package com.spitter.config;

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

public class spittrWebAppInitilizer extends
		AbstractAnnotationConfigDispatcherServletInitializer {

	//spring的配置
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[] { RootConfig.class };
	}

	//springmvc的配置
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[] { WebConfig.class };
	}

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

}



4.新建类RootConfig,代码如下:
package com.spitter.config;

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

@Configuration
@ComponentScan(basePackages = {  }, excludeFilters = { @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class) })
public class RootConfig {

}
5.新建类WebConfig,继承WebMvcConfigurerAdapter,代码如下:
package com.spitter.config;

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.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("com.oaec.controller")
public class WebConfig extends WebMvcConfigurerAdapter {

	// freemarker的基本配置
	@Bean
	public FreeMarkerConfigurer freeMarkerConfigurer() {
		FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
		configurer.setTemplateLoaderPath("/WEB-INF/ftl/");
		configurer.setDefaultEncoding("UTF-8");
		return configurer;
	}

	// freemarker的试图解析配置
	@Bean
	public ViewResolver viewResolver() {
		FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
		resolver.setPrefix("/");//也可以不同配置prefix,内部默认值是"";
		resolver.setSuffix(".ftl");
		resolver.setContentType("text/html;charset=UTF-8");
		return resolver;
	}

	// 静态资源处理
	@Override
	public void configureDefaultServletHandling(
			DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}

}

6.构建controller,代码如下:
package com.oaec.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/demo")
public class DemoController {
	
	@RequestMapping("/view")
	public String view(ModelMap map) {
		map.put("name", "jack89");
		return "index";
	}

	@RequestMapping("/hello")
	public String helloTest(Model model) {
		model.addAttribute("title", "Spring MVC And Freemarker");
		model.addAttribute("content", " Hello world , test my first spring mvc ! ");
		return "hello";
	}

}
7.新建freemarker的界面文件index.jtl和hello.jtl,这里自己注意文件放置的位置,然后配置相应路径,代码如下:
<pre class="java" name="code"><html>    
<body>    
    <h1>holle world ${name}</h1><br/>    
    1 + 1 = 3? ${(1 != 1)?string("yes", "no")}    
</body>    
</html>   
</pre>  
<br> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   
 "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <title>${title}</title>  
    </head>  
    <body>  
        ${content}  
    </body>  
</html>  
8.我的项目结构如图:

9.最后就是启动服务器就行测试了,运行结果如下:



注:这是我自己网上找资料然后做出来的,可能有很多地方不是很严谨,希望多多指出错误,另外类上的注解想了解详细信息可以参考https://my.oschina.net/devleon/blog/530953

猜你喜欢

转载自blog.csdn.net/sinat_37729104/article/details/73436567