SpringMVC 4 配置返回JSP,和Freemarker视图

14 篇文章 0 订阅

1.新建Dynamic Web Project。

2.导入Spring及Springmvc 4.0.6 相关库文件

如截图


3.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>Freemarker_SpringMVC_example</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	
	<servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
</web-app>
说明:配置了一个叫spring的Servlet,然后映射到DispatcherServlet,Spring会自动在WEB-INF目录下查找一个叫spring-servlet.xml的文件,用于配置Springmvc.通过web请求时,spring会把所有的请求拦截,这里配置成允许*.html后缀的请求路径。

4.配置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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-4.0.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!--注解说明 -->  
    <context:annotation-config />     
    
     <!-- 注解支持 -->    
    <mvc:annotation-driven/>    
	<!-- 使Spring支持自动检测组件,如注解的Controller -->
	<context:component-scan base-package="org.web.controller" >
		 <!-- 允许定义过滤器将基包下的某些类纳入或排除  -->  
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
	</context:component-scan>
	
	<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
	
	<!--通用视图解析器-->  
    <bean id="viewResolverCommon" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="prefix" value="/WEB-INF/content/"/>    
        <property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑  -->  
        <property name="viewClass">  
            <value>org.springframework.web.servlet.view.InternalResourceView</value>  
        </property>  
        <property name="order" value="1"/>  
    </bean>  
    
    
     <!-- 配置freeMarker视图解析器 -->  
    <bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
        <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>  
        <property name="contentType" value="text/html; charset=utf-8"/>  
        <property name="cache" value="true" />  
        <property name="suffix" value=".ftl" />  
        <property name="order" value="0"/>  
    </bean>  
	<!-- ftl参数配置 -->
	<bean id="freemarkerConfiguration"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="location" value="/WEB-INF/freemarker.properties" />
	</bean>
	<!-- 配置freeMarker的模板路径 -->  
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
        <property name="templateLoaderPath">  
            <value>/WEB-INF/ftl/</value>  
        </property>  
        <property name="freemarkerVariables">  
            <map>  
                <entry key="xml_escape" value-ref="fmXmlEscape" />  
            </map>  
        </property>  
        <property name="defaultEncoding">  
            <value>utf-8</value>  
        </property>  
        <property name="freemarkerSettings">  
            <props>  
                <prop key="template_update_delay">3600</prop>  
            </props>  
        </property>  
    </bean>  
	
	
</beans>

说明:springmvc允许多视图配置view。通过order来指定查找优先级。这里配置先扫描/WEB-INF/ftl下的Freemarker模板文件,如果没有找到再匹配/WEB-INF/view/下的jsp文件。

这里可参考一篇文章:http://my249645546.iteye.com/blog/1426952

freemarker.properties文件用于配置Freemarker属性

datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
#auto_import="/WEB-INF/ftl/common/app.ftl" as app
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=square_bracket
url_escaping_charset=UTF-8 
#enable the fault. replaced with "" when 'null' 
classic_compatible=true
5.在/WEB-INF/下新建ftl和content文件夹,并添加相应的users.ftl文件盒users.jsp文件


编辑users.ftl如下

<html>
<head><title>ViralPatel.net - FreeMarker Spring MVC Hello World</title>
<body>
<div id="header">
<H2>
	<#--
	<a href="http://viralpatel.net"><img height="37" width="236" border="0px" src="" align="center"/></a>
	-->
	FreeMarker Spring MVC Hello World
</H2>
</div>

<div id="content">
    
  <fieldset>
  	<legend>Add User</legend>
  <form name="user" action="add.html" method="post">
  	Firstname: <input type="text" name="firstname" />	<br/>
  	Lastname: <input type="text" name="lastname" />	<br/>
  	<input type="submit" value="   Save   " />
  </form>
  </fieldset>
  <br/>
  <table class="datatable">
  	<tr>
  		<th>Firstname</th>  <th>Lastname</th>
  	</tr>
    <#list model["userList"] as user>
  	<tr>
  		<td>${user.firstname}</td> <td>${user.lastname}</td>
  	</tr>
    </#list>
  </table>

</div>  
</body>
</html> 

编辑users.jsp如下

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<html>
<head><title>ViralPatel.net - FreeMarker Spring MVC Hello World</title>
<body>
<div id="header">
<H2>
	FreeMarker Spring MVC Hello World
</H2>
</div>

<div id="content">
    
  <fieldset>
  	<legend>Add User</legend>
  <form name="user" action="add.html" method="post">
  	Firstname: <input type="text" name="firstname" />	<br/>
  	Lastname: <input type="text" name="lastname" />	<br/>
  	<input type="submit" value="   Save   " />
  </form>
  </fieldset>
  <br/>
  <table class="datatable">
  	<tr>
  		<th>Firstname</th>  <th>Lastname</th>
  	</tr>
  	<c:forEach items="${userList}" var="user">
  		<tr>
  		<td>${user.firstname}</td> <td>${user.lastname}</td>
  	</tr>
  	</c:forEach>
   
  </table>
model["userList"]
</div>  
</body>
</html> 
6.编写Controller控制类

在org.web.controller下新建UserController.java

package org.web.controller;

import java.util.ArrayList;
import java.util.List;

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

@Controller
public class UserController {

	/**
	 * Static list of users to simulate Database
	 */
	private static List<User> userList = new ArrayList<User>();

	// Initialize the list with some data for index screen
	static {
		userList.add(new User("Bill", "Gates"));
		userList.add(new User("Steve", "Jobs"));
		userList.add(new User("Larry", "Page"));
		userList.add(new User("Sergey", "Brin"));
		userList.add(new User("Larry", "Ellison"));
	}

	/**
	 * Saves the static list of users in model and renders it via freemarker
	 * template.
	 * 
	 * @param model
	 * @return The index view (FTL)
	 */
	@RequestMapping(value = "/users", method = RequestMethod.GET)
	public String index(@ModelAttribute("model") ModelMap model) {

		model.addAttribute("userList", userList);

		return "users";
	}

	/**
	 * Add a new user into static user lists and display the same into FTL via
	 * redirect
	 * 
	 * @param user
	 * @return Redirect to /index page to display user list
	 */
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public String add(@ModelAttribute("user") User user) {

		if (null != user && null != user.getFirstname()
				&& null != user.getLastname() && !user.getFirstname().isEmpty()
				&& !user.getLastname().isEmpty()) {

			synchronized (userList) {
				userList.add(user);
			}

		}

		return "redirect:users.html";
	}

}

7.部署到tomcat,访问localhost:8080/springmvcftl/index.html即可


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值