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

时间:2023-03-09 10:06:02
02 - Unit01:服务器返回数据的json处理+搭建项目环境

    服务器返回数据的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)
  • 数据准备

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

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

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

代码:

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

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