paulwong

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

          1. 首先用IDE建一個web工程。(這個就不詳細介紹了)
          2. 引入響應的jar包
          3. web.xml
            <?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
            <?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中加入以下配置
            <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建立
            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頁面
            <!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








          posted on 2012-03-19 21:32 paulwong 閱讀(25878) 評論(3)  編輯  收藏 所屬分類: SPRING MVC

          Feedback

          # re: 基于注解的SpringMVC+freemarker環境搭建 2013-06-14 16:43 zhanghd

          <!-- 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>


          這會導致spring容器啟動兩次, 建議只配置DispatcherServlet  回復  更多評論   

          # re: 基于注解的SpringMVC+freemarker環境搭建 2014-05-09 22:47 zuidaima

          springmvc+freemarker的簡單demo http://www.zuidaima.com/share/1550463645682688.htm  回復  更多評論   

          # re: 基于注解的SpringMVC+freemarker環境搭建[未登錄] 2014-07-16 15:52 xx

          很棒  回復  更多評論   


          主站蜘蛛池模板: 宜宾县| 依兰县| 德格县| 昭平县| 集贤县| 乳源| 赫章县| 广宁县| 凤阳县| 洱源县| 襄汾县| 巴塘县| 鹿泉市| 通化市| 茶陵县| 宜章县| 邢台县| 磴口县| 赤峰市| 手游| 辽宁省| 大冶市| 双辽市| 萝北县| 内丘县| 息烽县| 湖南省| 尚志市| 庄河市| 噶尔县| 阜南县| 晋城| 镇原县| 岳西县| 子长县| 绥化市| 都江堰市| 汾西县| 始兴县| 托里县| 清流县|