完整的Spring-boot实现(部门与员工)
来源:互联网 发布:淘宝类目会影响排名吗 编辑:程序博客网 时间:2024/05/27 08:13
完整的spring-boot实现
工具:jdk1.7 -- eclipse -- Maven
目的:实现通过部门ID查询部门及所有员工信息
目录结构:
index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><input type="button" value="查询 员工信息" onclick="window.location.href='/spring-mvc-jpa/getAllEmp'"><br/><input type="button" value="模糊 查询员工" onclick="window.location.href='/spring-mvc-jpa/jsp/LikeEmp.jsp'"><br/><input type="button" value="查询 部门信息" onclick="window.location.href='/spring-mvc-jpa/getAllDept'"><br/><input type="button" value="部门与员工信息" onclick="window.location.href='/spring-mvc-jpa/jsp/DeptNo.jsp'"><br/><input type="button" value="添加 部门信息" onclick="window.location.href='/spring-mvc-jpa/jsp/AddDept.jsp'"><br/></body></html>DeptNo.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><form action="/spring-mvc-jpa/getAllMessage" method="get"><table><tr><td>部门号:<input type="text" name="did" id="did"></td></tr></table><input type="submit" value="查询"></form></body></html>
DeptAndEmp.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><table border="1px" cellpadding="0px" cellspacing="0px"><tr><td>编号</td><td>姓名</td><td>雇佣日期</td><td>薪水</td><td>所属部门</td><td>部门地址</td></tr><c:forEach var="h" items="${allList.sets}"><tr><td>${h.eid}</td><td>${h.ename}</td><td>${h.hiredate}</td><td>${h.salery}</td><td>${allList.dname}</td><td>${allList.addres}</td></tr></c:forEach></table></body></html>配置环境文件:
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--过滤器,防止乱码 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/</url-pattern></filter-mapping><filter><filter-name>Spring OpenEntityManagerInViewFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class><init-param><!-- 指定org.springframework.orm.jpa.LocalEntityManagerFactoryBean在spring配置文件中的名称,默认值为entityManagerFactory 如果LocalEntityManagerFactoryBean在spring中的名称不是entityManagerFactory,该参数一定要指定,否则会出现找不到entityManagerFactory的例外 --><param-name>entityManagerFactoryBeanName</param-name><param-value>entityManagerFactory</param-value></init-param></filter><filter-mapping><filter-name>Spring OpenEntityManagerInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
springmvc-servlet.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!--注解驱动配置--> <mvc:annotation-driven /> <!--自动扫描目录下所有的类文件 --> <context:component-scan base-package="com.java.controller" /> <!--对模型视图名称的解析 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsp/" /> <property name="suffix" value=".jsp" /> </bean></beans>
applicationContext.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:jaxws="http://cxf.apache.org/jaxws" 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.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" default-lazy-init="true"> <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 --> <context:component-scan base-package="com.java"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 属性文件位置 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 数据源 --> <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"> <!-- 数据库驱动 --> <property name="driverClass" value="${jdbc.driver}" /> <!-- 相应驱动的jdbcUrl--> <property name="jdbcUrl" value="${jdbc.url}" /> <!-- 数据库的用户名 --> <property name="username" value="${jdbc.username}" /> <!-- 数据库的密码 --> <property name="password" value="${jdbc.password}" /> </bean> <!-- 设置JPA实现厂商的特定属性 --> <bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <!--方言 --> <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> </bean> <!-- JPA实体管理器工厂 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" /> <!-- 扫描包下的entity --> <property name="packagesToScan" value="com.java" /> <property name="jpaProperties"> <props> <prop key="spring.jpa.open-in-view">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop><!-- validate/update/create --> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <!-- 建表的命名规则 --> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> </props> </property> </bean> <!-- Jpa 事务配置 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- Spring Data Jpa配置 --> <jpa:repositories base-package="com.java" transaction-manager-ref="transactionManager" entity-manager-factory-ref="entityManagerFactory"/> <!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /></beans>
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/db_spring_mvc_jpa?characterEncoding=utf-8jdbc.username=rootjdbc.password=123456pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.third.spring-mvc-jpa</groupId><artifactId>spring-mvc-jpa</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>spring-mvc-jpa</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.11.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.3.11.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-ehcache</artifactId><version>4.3.11.Final</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp</artifactId><version>0.8.0.RELEASE</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-provider</artifactId><version>0.8.0-alpha1</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.7</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>3.2.0</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>ant</groupId><artifactId>ant</artifactId><version>1.6.5</version></dependency><dependency><groupId>org.apache.avro</groupId><artifactId>avro</artifactId><version>1.7.7</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.2</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>18.0</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.20.0-GA</version></dependency><dependency><groupId>org.jboss.logging</groupId><artifactId>jboss-logging</artifactId><version>3.3.0.Final</version></dependency><!-- jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.7.1.RELEASE</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build></project>控制层
DeptController.java
package com.java.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.servlet.ModelAndView;import com.java.model.Dept;import com.java.service.DeptService;/* * * Dept查询是通过自定义sql语句查询 * */@RestControllerpublic class DeptController {@Autowiredprivate DeptService deptservice;//查询所有部门信息@RequestMapping("getAllDept")public ModelAndView getAllDept() {ModelAndView model = new ModelAndView();model.addObject("listDept",deptservice.getAllDept() );model.setViewName("AllDept");return model;}//根据部门号查询部门及所有员工信息@RequestMapping("getAllMessage")public ModelAndView getAllMessage(@RequestParam(value="did") Long id) {System.out.println(id);ModelAndView model = new ModelAndView();Dept dept = deptservice.getAllMessage(id);model.addObject("allList",dept );model.setViewName("DeptAndEmp");return model;}//添加部门信息@RequestMapping(value="addDept",method=RequestMethod.POST,headers="application/json")public ModelAndView addDept(@RequestBody Dept dept) {ModelAndView model = new ModelAndView();deptservice.addDept(dept);model.setViewName("success");return model;}}
EmpController.java
package com.java.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;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.RequestParam;import org.springframework.web.servlet.ModelAndView;import com.java.service.EmpService;/* * EMP 部门查询是通过jpa解析方法名查询 * */@Controllerpublic class EmpController {@Autowiredprivate EmpService empservice;//查询所有员工信息t@RequestMapping("getAllEmp")public ModelAndView getAllEmp(){ModelAndView model = new ModelAndView();model.addObject("empList", empservice.getAllEmp());model.setViewName("AllEmp");return model;}//模糊查询员工信息@RequestMapping(value = "getLikeEmp",method=RequestMethod.GET)public ModelAndView getLikeEmp(@RequestParam(value = "name") String name) {ModelAndView model = new ModelAndView();System.out.println("name:"+name);model.addObject("empList", empservice.getLikeEmp("%"+name+"%"));model.setViewName("AllEmp");return model;}//通过名字查询员工信息@RequestMapping(value="getEmpByName")public ModelAndView getEmpByName() {ModelAndView model = new ModelAndView();model.addObject("empList", empservice.getEmpByName("lisi"));model.setViewName("AllEmp");return model;}}
数据层
EmpDao.java
package com.java.dao;import java.util.List;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query;import org.springframework.stereotype.Repository;import com.java.model.Emp;@Repositorypublic interface EmpDao extends JpaRepository<Emp, Long>{//模糊查询员工信息public List<Emp> findByEnameLike(String name);@Query("select e from Emp e where e.ename =?1")List<Emp> findByEname(String name);}
DeptDao.java
package com.java.dao;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;import com.java.model.Dept;@Repositorypublic interface DeptDao extends JpaRepository<Dept,Long>{}
模型层
Dept
package com.java.model;/* * * 单向的一对多 * */import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;@Entity@Table(name = "dept")public class Dept {@Id@Column(name = "did")@GeneratedValue(strategy = GenerationType.AUTO)private Long did;private String dname;private String addres;@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=Emp.class)@JoinColumn(name = "did",nullable = false)private Set<Emp> sets;public Set<Emp> getSets() {return sets;}public void setSets(Set<Emp> sets) {this.sets = sets;}public Long getDid() {return did;}public void setDid(Long did) {this.did = did;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getAddres() {return addres;}public void setAddres(String addres) {this.addres = addres;}}
Emp
package com.java.model;import java.sql.Date;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "emp")public class Emp {@Id@GeneratedValue(strategy=GenerationType.AUTO)private Long eid;private String ename;private Date hiredate;private double salery;public Long getEid() {return eid;}public void setEid(Long eid) {this.eid = eid;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public Date getHiredate() {return hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public double getSalery() {return salery;}public void setSalery(double salery) {this.salery = salery;}}
Service层
DeptService
package com.java.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.java.dao.DeptDao;import com.java.model.Dept;@Servicepublic class DeptService<T> {@Autowiredprivate DeptDao deptdao;//查询所有部门信息public List<Dept> getAllDept(){return deptdao.findAll();}//根据部门号查询所有信息public Dept getAllMessage(Long id){return deptdao.findOne(id);//return deptdao.getOne(id);}//添加部门信息public void addDept(Dept dept) {deptdao.saveAndFlush(dept);}}
EmpService
package com.java.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.stereotype.Service;import com.java.dao.EmpDao;import com.java.model.Emp;@Servicepublic class EmpService {@Autowiredprivate EmpDao empdao;//查询所有员工信息public List<Emp> getAllEmp(){return empdao.findAll();}//模糊查询员工信息public List<Emp> getLikeEmp(String name){return empdao.findByEnameLike(name);}//通过名字查询信息public List<Emp> getEmpByName(String name){return empdao.findByEname(name);}}最后是,,,结果:
阅读全文
0 0
- 完整的Spring-boot实现(部门与员工)
- 员工与部门之间的关系
- ssm项目---人事管理系统:员工与部门、职位实现一对一
- Java实现AD 部门和员工的增删改查
- 一道关于员工与部门查询的SQL笔试题
- 关于员工与部门查询的SQL笔试题
- 列出与'SCOTT'从事相同工作的所有员工及部门名称、部门人数、平均工资
- hiberante 部门与员工案例操作
- oracle查询员工人数最少的部门
- oracle查询员工人数最少的部门
- 删除没有任何员工的部门信息
- 保存员工同时保存关联的部门
- oracle实现查询每一个部门的员工工资排在前三的员工的基本信息详细举例
- 传智播客--OA的部门管理和员工管理模块的实现总结
- OA的部门管理和员工管理模块的实现总结
- spring boot session redis 分布式session实现,提供完整源码
- Spring Boot + JPA + Freemarker 实现后端分页 完整示例
- 一条SQL语句实现查询每个部门中年龄最大的员工信息
- Android:JNI 与 NDK到底是什么?(含实例教学)
- 23种设计模式之-----模板方法模式(Template Method Pattern)
- 【AKKA 官方文档翻译】示例介绍
- 【计算机算法分析】贪心算法——单源最短路径
- NKOJ 2895 万径人踪灭(Manacher+FFT)
- 完整的Spring-boot实现(部门与员工)
- TortoiseGit处理代码冲突
- 【AKKA 官方文档翻译】第一部分:Actor架构
- Kafka无消息丢失配置
- 【AKKA 官方文档翻译】第二部分:创建第一个actor
- OpenGLES2.0基础(5)
- js中Base64
- macbook磁盘容量不够了!!!
- 点餐系统开发总结: