`

springmvc+velocity+ Rest Services(xml,json)实例

 
阅读更多

项目结构截图如下,该项目由maven构建的web项目,实例简单,无数据库连接操作,功能演示的请求地址分别在controller包下的三个类中,本例中的请求地址为:

http://localhost:8080/spring-mvc-velocity-bootstrap/greet --默认欢迎

http://localhost:8080/spring-mvc-velocity-bootstrap/greet/zhangsan --欢迎某人,这里是zhangsan,可任意

http://localhost:8080/spring-mvc-velocity-bootstrap/hello --默认hello

http://localhost:8080/spring-mvc-velocity-bootstrap/hello-world --hello world

http://localhost:8080/spring-mvc-velocity-bootstrap/hello-redirect --重定向到hello world请求

http://localhost:8080/spring-mvc-velocity-bootstrap/user/zhang/san.json --请求参数为json格式

http://localhost:8080/spring-mvc-velocity-bootstrap/user/zhang/san.xml --请求参数为xml格式


该项目为简单的springmvc+velocity+rest service,且无数据库连接操作,下面给出controller包下的请求配置,和spring的xml文件配置,和velocity的模板配置,和web.xml的加载,监听配置。


三个controller类的请求配置的代码依次为:

package net.exacode.bootstrap.web.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
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.RequestParam;

/**
 * Presents how to pass some values to controller using URL.
 * 
 * @author pmendelski
 * 
 */
@Controller
public class GreetingsController {
	private final Logger logger = LoggerFactory.getLogger(getClass());

	@RequestMapping(value = "/greet/{name}", method = RequestMethod.GET)
	public String greetPath(@PathVariable String name, ModelMap model) {
		logger.debug("Method greetPath");
		model.addAttribute("name", name);
		return "greetings";
	}

	@RequestMapping(value = "/greet", method = RequestMethod.GET)
	public String greetRequest(
			@RequestParam(required = false, defaultValue = "John Doe") String name,
			ModelMap model) {
		logger.debug("Method greetRequest");
		model.addAttribute("name", name);
		return "greetings";
	}
}

package net.exacode.bootstrap.web.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Simple hello world controller.
 * Presents basic usage of SpringMVC and Velocity.
 * @author pmendelski
 *
 */
@Controller
public class HelloWorldController {
	
	private final Logger logger = LoggerFactory.getLogger(getClass());

	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	public String hello() {
		logger.debug("Method hello");
		return "hello";
	}

	@RequestMapping(value = "/hello-world", method = RequestMethod.GET)
	public String helloWorld() {
		logger.debug("Method helloWorld");
		return "hello-world";
	}
	
	@RequestMapping(value = "/hello-redirect", method = RequestMethod.GET)
	public String helloRedirect() {
		logger.debug("Method helloRedirect");
		return "redirect:/hello-world";
	}

}

package net.exacode.bootstrap.web.controller;

import net.exacode.bootstrap.web.model.User;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
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;

/**
 * Service hello world controller.
 * Presents basic usage of SpringMVC and REST service API.
 * @author pmendelski
 *
 */
@Controller
public class UserServiceController {
	private final Logger logger = LoggerFactory.getLogger(getClass());

	@RequestMapping(value = "/user/{name}/{surname}.json", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody User getUserJson(@PathVariable String name, @PathVariable String surname) {
		logger.trace("Responding service request");
		User user = new User(name, surname);
		return user;
	}
	
	@RequestMapping(value = "/user/{name}/{surname}.xml", method = RequestMethod.GET, produces = MediaType.APPLICATION_XML_VALUE)
	public @ResponseBody User getUserXml(@PathVariable String name, @PathVariable String surname) {
		logger.trace("Responding service request");
		User user = new User(name, surname);
		return user;
	}

}

然后是spring的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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:sec="http://www.springframework.org/schema/security" 
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/mvc
  	http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<mvc:annotation-driven />
	<mvc:default-servlet-handler/>
	<mvc:resources mapping="/resources/**" location="/resources/" />
	<context:component-scan base-package="net.exacode.bootstrap.web" />
	
	<bean id="velocityConfig"
		class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
		<property name="configLocation">
			<value>/WEB-INF/velocity/velocity.properties</value>
		</property>
	</bean>

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
		<property name="cache" value="false" />
		<property name="layoutUrl" value="/layout/main.vm" />
		<property name="prefix" value="/templates/" />
		<property name="suffix" value=".vm" />
		<property name="exposeSpringMacroHelpers" value="true" />
		<property name="contentType" value="text/html;charset=UTF-8" />
		<property name="viewClass"
			value="org.springframework.web.servlet.view.velocity.VelocityLayoutView" />
	</bean>

	<!-- Internationalization -->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:i18n/messages" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>

	<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="lang" />
	</bean>

	<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
		<property name="defaultLocale" value="en" />
	</bean>

	<bean id="handlerMapping"
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		<property name="interceptors">
			<ref bean="localeChangeInterceptor" />
		</property>
	</bean>
</beans>

然后是三个velocity的模板和属性文件的配置:

#define($content)
	<p>#springMessage("Hello"): $name</p>
	<p>#springMessage("Greetings")</p>
#end

#define($content)
	#springMessage("Hello")
#end

#set($page_title="#springMessage('HelloWorld')")

#define($content)
	#springMessage("HelloWorld")
#end

velocimacro.permissions.allow.inline=true
velocimacro.permissions.allow.inline.to.replace.global=true
velocimacro.permissions.allow.inline.local.scope=true
input.encoding=UTF-8
output.encoding=UTF-8
resource.loader=webapp, class
class.resource.loader.description=Velocity Classpath Resource Loader
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader
webapp.resource.loader.path=/WEB-INF/velocity/
webapp.resource.loader.cache=false

最后是web.xml的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- The definition of the Root Spring Container shared by all Servlets 
		and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>springDispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springDispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

其他具体代码实现我已上传到http://download.csdn.net/detail/johnjobs/7139187,maven构建完成之后,部署到tomcat等容器下,请求上面给到的请求地址,即可以看到效果演示,以下为效果截图,例子较为简单:




分享到:
评论

相关推荐

    maven+springMVC+mybatis+velocity+mysql+junit项目框架搭建

    本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...

    Spring+SpringMVC+Mybatis+Velocity+Maven demo

    Spring、SpringMVC、Mybatis、Velocity和Maven是Java Web开发中常用的一组技术栈,它们各自在软件开发的不同层面发挥着重要作用。这个压缩包文件的标题和描述表明,它提供了一个集成这些技术的演示项目,下面我们将...

    一套基于SpringMVC+velocity框架的web应用 ,基于注解

    在SpringMVC+Velocity的应用中,Sitemesh可以通过简单的配置与这两个框架集成,实现全站页面的统一装饰。 综上所述,这套基于SpringMVC+Velocity的web应用利用了SpringMVC的注解驱动特性,简化了控制器和依赖管理;...

    Springmvc+maven+ajax+jquery+json+mybatis登录增删改查详细注释

    Springmvc+maven+ajax+jquery+json+mybatis做的登录,注册,增删改查详细注释,大家可以来一下,看看对自己有没有帮助哈,这是我自己一点点的打的,采用MyEclipse 10运行出来.并且付有sql脚本.可直接导入运行.并且经本人...

    springmvc+velocity

    J2EE开发中velocity获取项目地址,使用框架springmvc+velocity视图器,velocity配置toolboxConfigLocation使.vm文件获取项目资源地址和设置静态资源地址。 此处demo实现效果为:test.vm模板通过调用${ctx.rootPath}...

    springMVC+Velocity+iBATIS整合

    在这个"SpringMVC+Velocity+iBATIS的整合小demo"中,可能包含了这些配置文件、Controller类、Service接口及其实现、Mapper接口及其XML配置、Velocity模板文件等。通过这些文件,我们可以看到一个完整的Java Web应用...

    Spring+Hibernate+SpringMVC+Velocity+Maven整合

    Spring+Hibernate+SpringMVC+Velocity+Maven整合

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip...完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(REST

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...

    springmvc+mybatis+velocity整合实例

    总的来说,"springmvc+mybatis+velocity整合实例"提供了一个轻量级且功能齐全的Web开发基础,适合快速搭建项目。通过这个整合,开发者可以充分利用Spring MVC的控制层优势、MyBatis的数据访问便捷性,以及Velocity的...

    maven+springmvc+spring+ibatis+velocity+mysql

    在构建企业级Web应用时,"maven+springmvc+spring+ibatis+velocity+mysql"这个组合提供了高效且灵活的开发框架。让我们逐一解析这些技术及其在项目中的作用。 **Maven** 是一个项目管理和综合工具,它帮助开发者...

    SpringMVC+ibatis+velocity整合例子

    本示例聚焦于“SpringMVC+ibatis+velocity”的整合应用,这是一套常用的Java Web开发组合,用于构建动态、数据驱动的网站。下面我们将深入探讨这三个组件的核心功能及其整合过程。 首先,SpringMVC是Spring框架的一...

    springmvc+mybatis+easyui+velocity开源后台J2EE框架

    J2ee开源模板后台是基于 springmvc+mybatis+easyui+velocity 技术实现的一套模板后台,把一些通用的功能模板化,可以在线打包生成整站源码包括 jsp页面,为开发人员节省时间 ,生成的功能有增删改查,查询包括按列...

    基于Spring+SpringMVC+Mybatis架构的博客系统.zip

    基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...

    SpringMVC+Velocity+Maven整合例子

    1. **配置POM.xml**:在项目的根目录下创建或编辑pom.xml文件,添加SpringMVC、Velocity和Maven所需的相关依赖。 2. **配置SpringMVC**:创建Spring的配置文件(如:servlet-context.xml),定义DispatcherServlet...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统.rar

    项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为...

    activiti+springMVC+mybatis rest风格整合demo

    在本项目"activiti+springMVC+mybatis rest风格整合demo"中,开发者通过集成Activiti、Spring MVC和MyBatis三个核心组件,构建了一个基于RESTful API的工作流管理系统。这个项目对于初学者来说是一个很好的学习资源...

Global site tag (gtag.js) - Google Analytics