我是靠谱客的博主 小巧溪流,最近开发中收集的这篇文章主要介绍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开发包






最后

以上就是小巧溪流为你收集整理的Spring RESTful + JSON + FreeMarker整合开发的全部内容,希望文章能够帮你解决Spring RESTful + JSON + FreeMarker整合开发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部