基于注解的SpringMVC+freemarker环境搭建

  1. 首先用IDE建一个web工程。(这个就不详细介绍了)
  2. 引入响应的jar包
  3. web.xml
    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> <? xml version="1.0"  ?>
    < web-app  xmlns ="http://java.sun.com/xml/ns/javaee"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version
    ="3.0" >
        
    <!--   Spring 服务层的配置文件  -->
        
    < context-param >
            
    < param-name > contextConfigLocation </ param-name >
            
    < param-value > classpath:applicationContext.xml </ param-value >
        
    </ context-param >
        
        
    <!--   Spring 容器启动监听器  -->
        
    < listener >
            
    < listener-class > org.springframework.web.context.ContextLoaderListener
            
    </ listener-class >
        
    </ listener >

        
    < servlet >
            
    < servlet-name > springmvc </ servlet-name >
            
    < servlet-class > org.springframework.web.servlet.DispatcherServlet
            
    </ servlet-class >
            
    < load-on-startup > 1 </ load-on-startup >
        
    </ servlet >
        
    <!-- 为DispatcherServlet建立映射  -->
        
    < servlet-mapping >
            
    < servlet-name > springmvc </ servlet-name >
            
    < url-pattern > / </ url-pattern >
        
    </ servlet-mapping >
    </ web-app >

  4. SpringMVC另外一个重要的配置文件。
    DispatcherServlet会根绝web.xml中配置的<servlet-name>去找<servlet-name>-servlet.xml的文件来加载spring的一些配置信息。我这里就应该取名叫springmvc-servlet.xml
    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> <? 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:p
    ="http://www.springframework.org/schema/p"  
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-2.5.xsd"
    >
        
        
    <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能  -->
        
    < context:component-scan  base-package ="com.liba.spring.mvc" />
        
        
    <!--  启动Spring MVC的注解功能,完成请求和注解POJO的映射   请求映射 -->
        
    < bean  class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"   />
        
            
    <!-- 以下三种视图配置根据需要任选一种即可  -->

        
    <!--   一般的视图配置  -->
        
    <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
            p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
    -->
        
        
    <!--  针对freemarker的视图配置  -->
        
    < bean  id ="viewResolver"
            class
    ="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" >
            
    < property  name ="cache"  value ="true"   />
            
    < property  name ="prefix"  value =""   />
            
    < property  name ="suffix"  value =".ftl"   />
            
    < property  name ="contentType"  value ="text/html;charset=UTF-8" ></ property >
            
    < property  name ="requestContextAttribute"  value ="request"   />
            
    < property  name ="exposeSpringMacroHelpers"  value ="true"   />
            
    < property  name ="exposeRequestAttributes"  value ="true"   />
            
    < property  name ="exposeSessionAttributes"  value ="true"   />
        
    </ bean >
            
            
        
    <!--  View resolvers can also be configured with ResourceBundles or XML files. 
            If you need different view resolving based on Locale, you have to use the 
            resource bundle resolver. 
    -->
        
    <!--  这个是针对返回视图还是json值的视图配置   来分别处理同步和异步请求  -->
        
    <!-- <bean
                class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
                <property name="mediaTypes">
                    <map>
                        <entry key="html" value="text/html" />
                        <entry key="json" value="application/json" />
                    </map>
                </property>
                <property name="favorParameter" value="true" />
                <property name="viewResolvers">
                    <list>
                        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                        <bean id="viewResolver"
                            class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
                            <property name="cache" value="true" />
                            <property name="prefix" value="" />
                            <property name="suffix" value=".ftl" />
                            <property name="contentType" value="text/html;charset=UTF-8"></property>
                            <property name="requestContextAttribute" value="request" />
                            <property name="exposeSpringMacroHelpers" value="true" />
                            <property name="exposeRequestAttributes" value="true" />
                            <property name="exposeSessionAttributes" value="true" />
                        </bean>
                    </list>
                </property>
                <property name="defaultContentType" value="text/html" />
            </bean>
            
    -->
    </ beans >

  5. 如果是使用freemarker最为视图模板需要再spring的配置文件applicationContext.xml中加入以下配置
    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> < bean  id ="freemarkerConfig"
            class
    ="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" >
            
    < property  name ="templateLoaderPath"  value ="/WEB-INF/view/"   />
            
    < property  name ="freemarkerSettings" >
                
    < props >
                    
    < prop  key ="template_update_delay" > 0 </ prop >
                    
    < prop  key ="default_encoding" > UTF-8 </ prop >
                    
    < prop  key ="number_format" > 0.########## </ prop >
                    
    < prop  key ="datetime_format" > yyyy-MM-dd HH:mm:ss </ prop >
                    
    < prop  key ="classic_compatible" > true </ prop >
                    
    < prop  key ="template_exception_handler" > ignore </ prop >
                
    </ props >
            
    </ property >
        
    </ bean >

  6. Controller建立
    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> import  javax.servlet.http.HttpServletRequest;

    import  org.springframework.stereotype.Controller;
    import  org.springframework.web.bind.annotation.RequestMapping;
    import  org.springframework.web.bind.annotation.RequestMethod;
    import  org.springframework.web.servlet.ModelAndView;

    @Controller
    public   class  SpringMvcController  {

        @RequestMapping(value
    ="/welcome",method={RequestMethod.GET}
        
    public ModelAndView getFirstPage(HttpServletRequest request) {
                    
    //welcom就是视图的名称(welcom.ftl)
            ModelAndView mv = new ModelAndView("welcom");
            mv.addObject(
    "name""My First Spring Mvc");
            
    return mv;
        }

    }
    在url上敲http://localhost:8080/welcome就会到WEB-INF/view/welcom.ftl页面渲染数据
  7. welcom.ftl页面
    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><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=ISO-8859-1" >
    < title > Insert title here </ title >
    </ head >
    < body >
    Hello ${name}
    </ body >
    </ html >

    页面出来的效果:

    Hello My First Spring Mvc

你可能感兴趣的:(freemarker)