热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

spring_restful_json_jdbc

使用SpringMVC+JDBC实现输出Json数据和视图两种形式最后面有源码从web.xml开始配置:声明定义两个Servlet分别是输出视图和jsonre

使用Spring MVC +JDBC 实现输出Json数据和视图两种形式 最后面有源码

从web.xml开始配置:

声明定义两个Servlet分别是输出视图和json

	
		rest
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			/WEB-INF/rest-servlet.xml
		
		
		1
	
	
		rest
		/rest/*
	
	
	
	
		json
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			/WEB-INF/json-servlet.xml
		
	
	
		json
		/json/*
	
	

其他配置略过
首先是第一个Servlet – rest,指定的配置文件rest-servlet.xml(默认也是,,,)




	
	
		
		
	
	
	
	
	
		
		
	

在包com.znn.rest.controller下创建一个Controller:UserController.java
用注解@Controller进行声明这是一个Controller,Spring会自动扫描到

package com.znn.rest.controller;

import java.lang.reflect.Method;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.znn.dao.UserDao;
import com.znn.vo.User;
/**
 * RestFul 返回视图
 *
 * @author RANDY.ZHANG
 * 2014-5-7
 */
@Controller
public class UserController {
	ApplicationContext applicatiOnContext= new ClassPathXmlApplicationContext("beans.xml");
	UserDao dao = (UserDao) applicationContext.getBean("userDao");

	@RequestMapping("/hi")
	public String helloWorld(Model model) {
		model.addAttribute("msg", "Hello HelloWorld");
		return "hello";
//		return "redirect:hello.jsp";
	}
	@RequestMapping("/user/{id:\\d+}")
	public String getUser(Model model,@PathVariable("id") int userid) {
		User user;
		user = dao.queryAUser(userid);
		if (user == null) {
			model.addAttribute("tip", "用户不存在!");
		}else {
			model.addAttribute("tip", user.toString());
		}
		return "user";
	}
	@RequestMapping(value = "/user/*",method=RequestMethod.GET)
	public String getAllUser(Model model) {
		List list = dao.query();
		String tipString = "";
		for (int i = 0; i ";
		}
		model.addAttribute("tip",tipString);
		return "user";
	}
	@RequestMapping(value = "/user",method=RequestMethod.GET)
	public String getAUser(Model model,
			@RequestParam(value="id",required=false,defaultValue="1") int userid,
			@RequestHeader("user-agent") String agent) {
		User user;
		user = dao.queryAUser(userid);
		if (user == null) {
			model.addAttribute("tip", "用户不存在!");
		}else {
			model.addAttribute("tip", user.toString());
		}
		System.out.println(agent);
		return "user";
	}
}


使用InternalResourceViewResolver进行视图适配,方法返回的字符串会自动添加上前后缀,另外还支持redirect:和forward:两种特殊配置,只是注意下要路径。
关于MVC的注解以及RequestMapping的配置用法到:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html#mvc-introduction,里面讲的挺详细。

第二种输出JSON:
从Spring 3.1开始支持@ResponseBody来直接将数据返回到HTTP响应体重,不在需要ModalView或者其他进行渲染。Spring提供了一些HttpMessageConverter来对数据进行转换,比如StringHttpMessageConverter,FormHttpMessageConverter,MappingJackson2HttpMessageConverter ,其他见这里,这里用到了StringHttpMessageConverter用来进行编码转换,MappingJackson2HttpMessageConverter 用来将数据转为Json形式。
json-servlet.xml




	
	
		
		
	

	
	
	
		
			
				
					
						
							text/html; charset=UTF-8
						
					
				
				
					
						
							text/html; charset=UTF-8
						
					
				
			
		
	

从3.1开始推荐使用RequestMappingHandlerMapping和RequestMappingHandlerAdapter来代替DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。不过不换也木事。。。。
com.znn.json.controller下新建一个Controller
UserJson.java

package com.znn.json.controller;

import java.util.List;

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
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.znn.dao.UserDao;
import com.znn.vo.User;
/**
 * 返回@ResponseBody需要配置HttpMessageConverters
 *
 * @author RANDY.ZHANG
 * 2014-5-7
 */
@Controller
public class UserJson {
	ApplicationContext applicatiOnContext= new ClassPathXmlApplicationContext("beans.xml");
	UserDao dao = (UserDao) applicationContext.getBean("userDao");

	@RequestMapping("/hi")
	public @ResponseBody String helloWorld(Model model) {
//		model.addAttribute("msg", "Hello HelloWorld");
		return "hello world";
//		return "redirect:hello.jsp";
	}

	@RequestMapping("/user/{id:\\d+}")
	public @ResponseBody User getUser(Model model,@PathVariable int id) {
		User user;
		user = dao.queryAUser(id);
		if (user == null) {
			model.addAttribute("tip", "用户不存在!");
		}else {
			model.addAttribute("tip", user.toString());
		}
		return user;
	}
	@RequestMapping(value = {"/user/*","/user"},method=RequestMethod.GET)//,produces="application/json" 406
	public @ResponseBody List getAllUser(Model model) {
		List list = dao.query();
		String tipString = "";
		for (int i = 0; i ";
		}
		model.addAttribute("tip",tipString);
		return list;
	}
	@RequestMapping(value = "/user/aaa",method=RequestMethod.GET)
	public  @ResponseBody List getTest(Model model,HttpServletResponse response, HttpServletRequest request) {
		List list = dao.query();
		String tipString = "";
		for (int i = 0; i ";
		}
		model.addAttribute("tip",tipString);
		return list;
	}
}

木有啥好说的….

跟JDBC连接的及DAO层代码和http://www.erdian.net/?p=141是一样的,不再写。

源码:https://github.com/qduningning/SpringAll


spring_restful_json_jdbc,,

spring_restful_json_jdbc


推荐阅读
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
  • 本文详细介绍了get和set方法的作用及其在编程中的实现方式,同时探讨了点语法的使用场景。通过具体示例,解释了属性声明与合成存取方法的概念,并补充了相关操作的最佳实践。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • Java中的基本数据类型与包装类解析
    本文探讨了Java编程语言中的8种基本数据类型及其对应的包装类。通过分析这些数据类型的特性和使用场景,以及自动拆装箱机制的实现原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
author-avatar
8090互助联盟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有