Spring RESTful + JSON + FreeMarker整合开发

Spring是一个优秀框架,提供了IoC、AOP、MVC等优秀设计功能。本文以Spring MVC框架开发基于RESTful + JSON + FreeMarker应用。


1、配置Spring MVC框架进行请求拦截,截获已.do结尾的请求,这样首页不被拦截。

<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationMvc.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

2、开启注解,扫描特定的包下面的注解,以及mvc注解。
<mvc:annotation-driven />	
<context:component-scan base-package="com.deppon.dppm" />

<mvc:annotation-driven />, 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
<context:component-scan base-package="com.deppon.dppm" />,Spring可以自动去扫描com.deppon.dppm下面或者子包下面的java文件,如果扫描到有@Repository@Controller@Service等这些注解的类,则把这些类注册为bean


3、配置FreeMarker视图解析,适用于用FreeMarker生成静态页面,需要导入freemarker.jar
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	<property name="suffix" value=".jhtml" />
	<property name="contentType" value="text/html;charset=UTF-8" /> 
</bean>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<property name="templateLoaderPath" value="/WEB-INF/views/" />
	<property name="defaultEncoding" value="UTF-8" />
</bean>
以上配置会寻找在/WEB-INF/views/目录下以.jhtml结尾模板,然后生成静态页面。

与FreeMarker视图解析类似的,有以下配置JSP页面的视图解析器。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/views/" />
	<property name="suffix" value=".jsp" />
</bean>

4、配置静态资源不被拦截,例如js文件,image文件,css文件等
<mvc:resources location="/image/" mapping="/image/**" />
<mvc:resources location="/script/" mapping="/script/**" />
<mvc:resources location="/style/" mapping="/style/**" />


Java代码
package com.deppon.dppm.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.deppon.dppm.entity.User;

@Controller
@RequestMapping("/user")
public class UserController {
	private List<User> users;
	private Map<String, User> map;
	
	public UserController() {
		users = new ArrayList<User>();
		User user = new User();
		user.setUsername("jack");
		user.setPassword("123456");
		
		User user2 = new User();
		user2.setUsername("tom");
		user2.setPassword("123456");
		users.add(user);
		users.add(user2);
		
		map = new HashMap<String, User>();
		map.put("jack", user);
		map.put("tom", user2);
	}
	
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public String list(Model model){
		model.addAttribute("users", users);
		return "userlist";
	}
	
	
	@RequestMapping(value = "/person/{username}", method = RequestMethod.GET, params = "json")
	@ResponseBody 
	public User jsonList(@PathVariable String username,
			HttpServletRequest request, HttpServletResponse response){
		if (StringUtils.isNotBlank(username)) {
			return map.get(username);
		}
		return null;
	}
}

userlist.jhtml代码,使用FreeMarker标签迭代集合。
<html>
	<head>
		<title>用户显示列表页面</title>
	</head>
	<body>
		<h2>欢迎来到用户显示列表页面</h2>
		<h3 id="userlist">查看用户列表</h3>
		<#list users as user>
			username : ${user.username} <br/>
			password : ${user.password} <br/>
		</#list>
	</body>
</html>

启动tomcat,在浏览器地址栏输入:http://localhost:8080/dppm-spring/user/list.do验证静态页面生成


在浏览器地址栏输入:http://localhost:8080/dppm-spring/user/person/jack.do?json,验证json数据,需要引入jackson开发包






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值