zoukankan      html  css  js  c++  java
  • 02

        服务器返回数据的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
  • 相关阅读:
    正则表达式分组小记
    Python中关于try...finally的一些疑问
    hello,world!
    02操控奴隶——掌握它的语言“Python”
    01操控奴隶——奴隶的构成与运行方式
    vue特殊属性 key ref slot
    vue内置组件 transition 和 keep-alive 使用
    vue文档全局api笔记2
    vue文档全局api笔记1
    vue 二三倍图适配,1像素边框
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6582767.html
Copyright © 2011-2022 走看看