服务器返回数据的json处理+搭建项目环境    

服务器返回数据的json处理

springMVC JSP响应流程 请求 -->DispatcherServlet -->HandlerMapping -->Controller --Jsp响应

JSON响应流程 请求 -->DispatcherServlet -->HandlerMapping -->Controller -->Json响应

如何实现Json处理

  • 导包 Jackson
  • 配置文件 web.xml spring-mvc.xml
  • 在返回数据的方法上使用@ResponseBody

JavaBean规范 - 必须有包 - 实现序列化接口 - 为属性增加set/get方法 - 创建无参构造器 - 有ID属性时,重写equals/hashcode方法

云笔记

  • 项目概述
  • 模块划分 用户模块 笔记本模块 笔记模块 活动模块 笔记的分享和收藏模块 回收站模块

  • 设计思想 基于MVC分层思想,分为

  • 表现层(V) HTML+javascript+jQuery+ajax
  • 控制层(C) DServlet + Controller
  • 业务层(M) Service组件
  • 数据层(M) Dao组件
  • 技术架构

采用的技术:java+javascript+jQuery+Ajax+SpringIOC+SpringAOP+Mybatis

  • java: 核心技术
  • javascript: 用于HTML
  • jQuery: 简化js代码
  • Ajax: 异步处理
  • SpringIOC: 管理组件
  • SpringAOP: 主要用户日志生成/事务处理
  • Mybatis: 作用于持久层

项目整体规范

  • 发送请求($.ajax)
  • HTML+JS
  • 服务器返回数据,采用JSON 进行处理
  • Result{state,data,message}

数据库构建

E-R图 entity-relation

  • 通过业务的分析得到E-R图

  • 关系:1对1/1对多/多对多

数据库信息

启动mysql: mysql -uroot -p

常用命令

  • show databases; 显示数据库列表

  • use 数据库名; 连接具体数据库实例

  • show tables; 显示实例下的所有表

  • source sql脚本文件

  • set names utf8;

  • source /home/soft01/cloud_note.sql;

  • source e:\cloud_note.sql;

spring+mybatis整合

  • 导包
  • 配置文件
  • 测试

项目环境搭建

  • 导包(两个案例的包)
  • 配置文件(web.xml conf/spring-mvc.xml conf/spring-mybatis.xml)
  • 数据准备

代码:

src/main/java

cn.tedu.cloudnote.dao

package cn.tedu.cloudnote.dao;

import cn.tedu.entity.User;

public interface UserDao {
User findByName(String name);
}

UserDao.java

cn.tedu.entity

package cn.tedu.entity;

import java.io.Serializable;

public class User implements Serializable{

    private static final long serialVersionUID = -2074369796447083139L;
/**
* 参考cn_user表定义属性
* 属性名与字段名保持一致
*/
private String cn_user_id;
private String cn_user_name;
private String cn_user_password;
private String cn_user_token;
private String cn_user_nick;
public User(){ }
public String getCn_user_id() {
return cn_user_id;
}
public void setCn_user_id(String cn_user_id) {
this.cn_user_id = cn_user_id;
}
public String getCn_user_name() {
return cn_user_name;
}
public void setCn_user_name(String cn_user_name) {
this.cn_user_name = cn_user_name;
}
public String getCn_user_password() {
return cn_user_password;
}
public void setCn_user_password(String cn_user_password) {
this.cn_user_password = cn_user_password;
}
public String getCn_user_token() {
return cn_user_token;
}
public void setCn_user_token(String cn_user_token) {
this.cn_user_token = cn_user_token;
}
public String getCn_user_nick() {
return cn_user_nick;
}
public void setCn_user_nick(String cn_user_nick) {
this.cn_user_nick = cn_user_nick;
}
@Override
public String toString() {
return "User [cn_user_id=" + cn_user_id + ", cn_user_name=" + cn_user_name + ", cn_user_password="
+ cn_user_password + ", cn_user_token=" + cn_user_token + ", cn_user_nick=" + cn_user_nick + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((cn_user_id == null) ? 0 : cn_user_id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (cn_user_id == null) {
if (other.cn_user_id != null)
return false;
} else if (!cn_user_id.equals(other.cn_user_id))
return false;
return true;
}
}

User.java

src/main/resources

  conf

<?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:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
<!-- 配置数据库的连接参数及连接池 -->
<bean id="dbcp"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="username"
value="root"></property>
<property name="password"
value="root"></property>
<property name="driverClassName"
value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql:///cloud_note"></property>
</bean>
<!-- 配置sqlSessionFactory -->
<bean id="ssf"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource"
ref="dbcp"></property>
<property name="mapperLocations"
value="classpath:mapper/*.xml"></property>
</bean>
<!-- 配置mapper扫描 -->
<bean id="mapperScanner"
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage"
value="cn.tedu.cloudnote.dao"></property>
</bean> </beans>

spring-mybatis.xml

  mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.tedu.cloudnote.dao.UserDao">
<select id="findByName"
parameterType="String"
resultType="cn.tedu.entity.User">
select * from cn_user
where cn_user_name=#{name}
</select>
</mapper>

UserMapper.xml

src/test/java

  cn.tedu.test

package cn.tedu.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.tedu.cloudnote.dao.UserDao;
import cn.tedu.entity.User; public class TestUserDao {
@Test
public void test(){
ApplicationContext ctx
=new ClassPathXmlApplicationContext(
"conf/spring-mybatis.xml");
//测试dao接口
UserDao dao=ctx.getBean(
"userDao",UserDao.class);
User user=dao.findByName("demo");
if(user!=null){
System.out.println("用户存在");
System.out.println(user);
}else{
System.out.println("用户不存在");
}
}
}

TestUserDao.java

  <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>

pom.xml

02 - Unit01:服务器返回数据的json处理+搭建项目环境的更多相关文章

  1. js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)

    js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...

  2. Postman----模拟服务器返回数据

    使用场景:在某些情况下,比如A接口还没开发好,我们需要测试B接口,刚好B接口的请求数据中需要包含A接口返回的数据,这时我们就可以模拟A接口服务器返回的数据来测试B接口 解决办法: 举例:模拟此 htt ...

  3. datatables 服务器返回数据后的处理-表格数据属性的操作方法(ajax.dataSrc)

    http://dt.thxopen.com/reference/option/ajax.dataSrc.html http://datatables.net/reference/option/ajax ...

  4. ICE学习第四步-----客户端请求服务器返回数据

    这次我们来做一个例子,流程很简单:客户端向服务器发送一条指令,服务端接收到这条指令之后,向客户端发送数据库中查询到的数据,最终显示在DataGridView上. 根据上一篇文章介绍的Slice语法,我 ...

  5. web api 返回数据XML JSON

    WEBAPI返回的数据格式一般是XML和JSON.能根据请求的要求返回.经过试验如下: public object Get(string uid) { return new {msg="成功 ...

  6. 用ajax的同步请求解决登陆注册需要根据服务器返回数据判断是否能提交的问题

    最近在写www.doubilaile.com的登陆注册.需要用ajax请求服务器判断用户名是否存在,用户名和密码是否匹配,进而提交数据.碰到的问题是异步请求都能成功返回数据,但是该数据不能作为紧接着的 ...

  7. 关于Node.js中HTTP请求返回数据需要JSON解析的问题

    在编写项目过程中,需要用到实时数据的推送需求, 所以首先想到了NodeJS的websocket模块 在网上找了一个聊天室的例子  然后将其改为自己需求的推送 其中遇到的问题 返回数据问题  :   由 ...

  8. [转]IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取

    兼容问题1: 页面的分享等插件加载不全,并无法点击. 兼容问题2: IE下页面选择器(#id..class.etc.)绑定click事件无法访问到,后台springmvc方法,也无法获取ajax的su ...

  9. jQuery的ajax请求express服务器返回数据

    html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

随机推荐

  1. zen cart 空白页面的解决方案

    在安装zen cart 这套CMS时, 有时候会由于修改了某些页面或者是由于环境的某些组件的版本问题导致前台页面出现空白页, 由于在空白页面处没有任何提示, 并且在日志中也没有这样的出错提示, 导致在 ...

  2. date.timezone not set in php.ini. Please contact ...解决方案

    无论是在LAMP还是在LNMP系统环境下, 只要PHP的版本在5.3及其以上的版本时, 无论是在安装oscommerce, 还是在安装zen cart, 以及其他的CMS时, 都会遇到如下所示的错误信 ...

  3. gitlab下载安装及部署

    初次操作成功,记录一下   1. 安装依赖软件 yum -y install policycoreutils openssh-server openssh-clients postfix   2.设置 ...

  4. Markdown - 让网络书写变得简单

    概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所 ...

  5. SSM整合AOP,日志框架和拦截器

    前言 日志是所有系统必不可少的部分,而AOP在MVC通常用于监控方法调用,可以生成一个traceid,记录从用户调用到底层数据库的数据链路,帮助监控和排查问题. AOP 现在做一个简单的前置切面,用来 ...

  6. QUnit 学习笔记 使用说明(一)

    一.单元测试前言 什么是单元测试? 如果是新接触单元测试的童鞋,简要的解释:就是一个JS函数/功能/模块的测试. 单元测试的工具:这里介绍QUnit Qunit原本是jqury家的,不过现在已经独立了 ...

  7. 利用 squid 反向代理提高网站性能(转载)

    本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性.安全性方面有很好的用途.作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术, ...

  8. Java基础拾遗(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358391冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  9. D3.js 使用心得

    教程 D3.js 入门教程系列 http://www.ourd3js.com/wordpress/296/ 全球地图数据

  10. 【pandas】生日转年龄

    数据挖掘比赛中,获得的数据中可能有个人的生日,在数据分析中并不需要生日,而是需要年龄.不同年龄会呈现不同的状态,比如收入.健康.居住条件等,年龄能够很好的把不同样本的差异性进行大范围的划分.下面讲述如 ...