服务器返回数据的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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.tedu.cloudnote.dao; import cn.tedu.entity.User; public interface UserDao { User findByName(String name); }
cn.tedu.entity
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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; } }
src/main/resources
conf
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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>
mapper
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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>
src/test/java
cn.tedu.test
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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("用户不存在"); } } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<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>