Spring Boot合并SSM框架maven管理的单体项目练习

版权声明:转载请标明出处: https://blog.csdn.net/gaofengyan/article/details/86572512

          idea下用spring boot搭建整合SSM框架的单体微服务项目过程可参考另一篇博客:https://blog.csdn.net/gaofengyan/article/details/85268253,这里不再赘述,直接上练习代码。既然是微服务项目,在idea下能完成,也可以直接迁移到Linux系统,增加对分布式文件的上传,下载等操作。

         如果需要源码和联系项目的静态资源(图片和jQuery和css等资源的)需要去下载https://download.csdn.net/download/gaofengyan/10930032  如果只是看代码研究,可以直接看这里的。

          数据库 netdisk.sql

/*
SQLyog Ultimate v11.27 (32 bit)
MySQL - 5.7.21 : Database - netdisk
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`netdisk` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `netdisk`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `userName` varchar(50) NOT NULL,
  `password` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`id`,`userName`,`password`) values (1,'zhangsan','123'),(2,'lisi','123');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

创建工程【springboot-netdisk】,并创建普通maven管理的项目模块【netdisk】。

pom.xml配置依赖(如果架包有冲突,需要自己去重,没有springboot启动插件,也需要手动给加上,在后面的插件配置):

<?xml version="1.0" encoding="UTF-8"?>
<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>org.kgc1803</groupId>
    <artifactId>netdisk</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>netdisk</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
        <mybaties.spring.boot.version>1.3.2</mybaties.spring.boot.version>
        <mysql.driver.version>5.1.46</mysql.driver.version>
    </properties>

    <dependencies>
        <!--spring-*.jar-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${spring.boot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--spring mvc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.driver.version}</version>
        </dependency>
        <!--mybaties、mybaties-spring、spring-jdbc-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybaties.spring.boot.version}</version>
        </dependency>
        <!--jsp 页面插件jar包-->
        <!--ideal 内置tomcat不支持jsp,增加jsp jar包-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>9.0.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jsp-api</artifactId>
            <version>9.0.12</version>
            <scope>provided</scope>
        </dependency>
        <!-- 文件上传和下载的两个包 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>${spring.boot.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- log4j.jar日志文件 -->
        <!--<dependency>-->
            <!--<groupId>log4j</groupId>-->
            <!--<artifactId>log4j</artifactId>-->
            <!--<version>1.2.13</version>-->
        <!--</dependency>-->

    </dependencies>

    <build>
        <finalName>netdisk</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

  pojo User.java 实体类:

package org.kgc1803.netdisk.pojo;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;

/**
 * @author hduser User 类
 */
public class User implements Serializable {
    @JsonProperty
    private Integer id;
    @JsonProperty
    private String userName;
    @JsonProperty
    private String password;

    public User() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

 dao UserMapper.java 接口(含SQL语句):

package org.kgc1803.netdisk.dao;

import org.apache.ibatis.annotations.*;
import org.kgc1803.netdisk.pojo.User;
import org.springframework.stereotype.Repository;

@Mapper
@Repository
public interface UserMapper {
    /**
     * 登陆
     * @param user
     * @return
     */
    @Select("SELECT userName,password FROM user WHERE userName=#{userName} AND PASSWORD=#{password}")
    @Results(id = "userMap",value = {
            @Result(property = "userName",column = "userName",javaType = String.class),
            @Result(property = "password",column = "password",javaType = String.class)
    })
    User getUser(User user);

    /**
     * 注册
     * @param user
     * @return
     */
    @Insert("INSERT INTO user (userName,password) VALUE (userName=#{userName},password=#{password})")
    User registUser(User user);
}

service 接口 UserService .java:

package org.kgc1803.netdisk.service;

import org.kgc1803.netdisk.pojo.User;

public interface UserService {
    //登陆
    User loginUser(User user);
    //注册
    User registUser(User user);
}

serviceimpl实现类 UserServiceImpl.java :

package org.kgc1803.netdisk.service.impl;

import org.kgc1803.netdisk.dao.UserMapper;
import org.kgc1803.netdisk.pojo.User;
import org.kgc1803.netdisk.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    public User loginUser(User user) {
        return userMapper.getUser(user);
    }

    public User registUser(User user){
        return userMapper.registUser(user);
    }
}

控制器 controller层

首页访问:

扫描二维码关注公众号,回复: 5123496 查看本文章
package org.kgc1803.netdisk.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {
    @RequestMapping("/")
    public String index(){
        return "login";
    }
}

用户登陆的控制器,这里简单写了下快速登陆及注册的效果

package org.kgc1803.netdisk.controller;

import org.kgc1803.netdisk.pojo.User;
import org.kgc1803.netdisk.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;

    /**
     * 快速登陆及注册
     * @param userName
     * @param password
     * @param regFlag
     * @param session
     * @return
     */
    @RequestMapping("/getuser")
    public String getUserInfo(String userName,String password,String regFlag, HttpSession session){
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        User u = userService.loginUser(user); //调用登陆方法
        if (regFlag!=null && !userName.equals("") && !password.equals("")){
            if (u!=null){//登陆成功
                session.setAttribute("session_user",u); //保存用户到session
                return "my";
            }else {//登陆失败
                u = userService.registUser(user); //调用注册
                session.setAttribute("session_user",u); //保存用户到session
                return "my";
            }
        }else {
            if (u!=null){//登陆成功
                session.setAttribute("session_user",u); //保存用户到session
                return "my";
            }else {//登陆失败
                return "login";
            }
        }
    }
}

创建resources资源文件并增加application.properties配置文件:

#dataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.3.55:3306/netdisk?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
#mybatis.type-aliases-package=org.kgc1803.netdisk.pojo
#spring mvc
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#spring 字符集
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
#服务器
server.port=8081
server.tomcat.uri-encoding=UTF-8

设置 webapp 静态资源目录,这里简单给两个jsp,一个是登陆的页面login.jsp,一个是首页my.jsp

登录页:

<%@ page language="java" 
	contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xxxxxx登陆</title>
    <link rel="stylesheet" href="../css/common.css"/>
    <link rel="stylesheet" href="../css/register.css"/>
</head>
<body>
<div class="box">
    <div class="nav cl">
        <div class="nav_z z">
            <img src="../images/register01.png"/>
        </div>
        <div class="nav_y y">
            <a href="">关于我们</a>
            <span>丨</span>
            <a href="">联系我们</a>
        </div>
    </div>
    <div class="main cl">
        <div class="main_z z">
            <img src="../images/register02.png"/>
        </div>
        <div class="main_y y">
            <div class="main_y_title">
                欢迎使用
            </div>
            <div class="meta">${errorInfo}</div>
            <div class="main_y_content">
                <%-- 登陆操作 --%>
				<form action="${pageContext.request.contextPath}/user/getuser" method="post" id="loginForm">
				
                <div class="main_input">
                    <input type="text" placeholder="请输入用户名" class="userName" name="userName" maxlength="11"/>
                    <img src="../images/register03.png"/>
                </div>
                <div class="main_input">
                    <input type="password" placeholder="请输入密码" class="password" name="password" maxlength="18"/>
                    <img src="../images/register03.png"/>
                </div>
                <div class="remember_password">
                    <input type="checkbox" checked="checked" name="regFlag" value="true" class="examine"/>
                    <span>快速注册</span>
                </div>
                   <div class="register" >
                      	 <input type="submit" style="color:white;" value="登&nbsp;录">
                   </div>
                <div class="main_y_content_buttom">
                    <a href="">忘记密码?</a>
                </div>
               </form>
            </div>
            
        </div>
    </div>
    <div class="footer">
        2016 youlianyun inc. All Rights Reserved
    </div>
</div>
<script type="text/javascript" src="../js/jquery-2.2.3.min.js"></script>
<script type="text/javascript" src="../js/register.js"></script>
<script>
</script>

</body>
</html>

<!--此段可直接删除-开始-->
<script type="text/javascript" src="http://www.sucainiu.com/themes/jsApi/demoAd/01.js" charset="UTF-8"></script>
<!--此段可直接删除-结束-->

首页,这里下面已经写了部分分布式的上传,下载,删除文件等操作,可以修改后进行分布式【hdfs】相关操作。:

<%@page import="java.io.FileOutputStream"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.io.File"%>
<%@ page language="java" 
	contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文档管理系统 - 素材牛模板演示</title>
    <link rel="stylesheet" href="../css/common.css" type="text/css"/>
    <link rel="stylesheet" href="../css/index.css" type="text/css"/>
    <link rel="stylesheet" href="../css/my.css" type="text/css" media="screen"/>
    <link rel="stylesheet" href="../page/base.css" type="text/css" media="screen"/>
    <link rel="stylesheet" href="../page/pageGroup.css" type="text/css" media="screen"/>
</head>
<%--<jsp:include page="common.jsp" />--%>
<!--顶部-->
<div class="nav">
    <div class="nav cl">
        <div class="nav_z z">
            <img src="../images/register01.png"/>
        </div>

        <div class="nav_y y">
            <a href="">关于我们</a>
            <span>丨</span>
            <a href="">联系我们</a>
        </div>
        <div class="userNumber y">
            你好,<span>${session_user.userName }</span>
        </div>
    </div>

</div>
<!--顶部结束-->
<!--菜单-->
<div class="left-menu">
    <div class="left-menu-top">
        <a href="javascript:void(0)">
            <div class="left-menu-top-small">
                <img src="../images/index_02.png"/>
            </div>
        </a>
    </div>
   
    <div class="left-menu-four">
        <div class="left-menu-four-small">
            <div class="left-menu-four-small-new"></div>
        </div>
        <div class="contain_four">
            <div class="contain_four_main">
                <span>容量:</span>
                <span class="cont">5</span>GB;可用
                <span class="use">3</span>GB
            </div>
            <div class="max_add">
                <button class="max_container" >升级容量</button>
            </div>
        </div>
    </div>

    <div class="foot">
        <a href="">返回意见</a>丨
        <a href="">帮助中心</a>
    </div>
</div>
<!--菜单end-->
<!--菜单右边的iframe页面-->
<div id="right-content" class="right-content">
    <div class="content">
        <div id="page_content">
            <div class="zuijinTop cl">
                <img src="../images/xiazai.png" class="xiazai z" alt="">
                <img src="../images/chong.png" class="chong z" alt="">
                <img src="../images/shanchu.png" class="shanchu z" alt="">
                <img src="../images/xinjian.png" class="xin z" alt="">
                <div class="sousuo y">
                    <div class="ss1 z"></div>
                    <input type="text" placeholder="请输入关键字搜索文件" class="z sousouInput" />
                </div>
            </div>
            <div class="zuijinTitle cl">
                <img src="../images/select.png" data-all="no" class="z allIcon allSelect" alt="">
                <div class="z the">我的文档</div>
                <div class="z the">人事</div>
            </div>
            <div id="contentDiv" class="content cl" style="padding-left: 2%;height:500px;overflow-y:auto;pisition:relative;">
               <%--<% //这里写java 代码--%>
                  <%--String userName = ""+session.getAttribute("session_user");--%>
                  <%--File  dir = new File("f:/netdisk/"+userName);--%>
                  <%--if(!dir.exists()){//如果没有新建--%>
                	  <%--dir.mkdir();--%>
                  <%--}--%>
                  <%--for(File f :dir.listFiles()){--%>
                	  <%--%>--%>
                	  <%--<div class="box template" id="<%=f.getName() %>" data-show="no">--%>
		                    <%--<img src="../images/wenjian.png" class="icon" alt="">--%>
		                    <%--<div>--%>
		                        <%--<p><%=f.getName() %></p>--%>
		                        <%--<input type="text" class="none">--%>
		                    <%--</div>--%>
		                    <%--<img src="../images/select.png" class="select" alt="">--%>
		                <%--</div>--%>
                	  <%--<% --%>
                  <%--}--%>
               <%--%>--%>
               <%----%>
               
              <!--   <div class="box2 template" data-show="no">
                    <img src="images/icon2.png" class="icon" alt="">
                    <div>
                        <p>合同管理</p>
                        <input type="text" class="none">
                    </div>
                    <img src="images/select.png" class="select" alt="">
                </div>
                <div class="box2 template" data-show="no">
                    <img src="images/icon1.png" class="icon" alt="">
                    <div>
                        <p>合同管理</p>
                        <input type="text" class="none">
                    </div>
                    <img src="images/select.png" class="select" alt="">
                </div>
                <div class="box2 template" data-show="no">
                    <img src="images/icon3.png" class="icon" alt="">
                    <div>
                        <p>合同管理</p>
                        <input type="text" class="none">
                    </div>
                    <img src="images/select.png" class="select" alt="">
                </div> -->
                
            </div>
            <div style='width:90%;position:fixed;bottom:10px;margin:auto'>
                    <div id="pageGro" class="cb">
                        <div class="pageUp">上一页</div>
                        <div class="pageList">
                            <ul>
                                <li>1</li>
                                <li>2</li>
                                <li>3</li>
                                <li>4</li>
                                <li>5</li>
                            </ul>
                        </div>
                        <div class="pageDown">下一页</div>
                    </div>
                </div>
            <!--移动弹窗-->
            <div class="moveBox none">
                <div class="moveTitle">
                        <span>上传</span>
                </div>
                <div class="closeMove">+</div>
                <div class="wenjian cl">
                    <img src="../images/icon3.png" class="z" alt="">
                </div>
                <div class="urlBox">
                        <div class="urlBoxTitle">
                           	 选择目标
                        </div>
                    <div class="contentMain cl">
                      			<input type="file" id="uploadFile" >
                       
                    </div>
                </div>
                <input type="button" class="y quxiao" value="取消">
                <input type="button" class="y ok" value="确定">
            </div>
        </div>
    </div>
</div>

<body>
<script type="text/javascript" src="../js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="../page/pageGroup.js"></script>
<script type="text/javascript" src="../js/index.js"></script>
<script>
    $(".sousouInput").blur(function(){
        $(".sousuo").css({
            border:"1px solid #ccc"
        });
        $(".ss1").removeClass("focusState");
    });
    $(".sousouInput").focus(function(){
        $(".sousuo").css({
            border:"1px solid #9cf"
        });
        $(".ss1").addClass("focusState");
    });
    $(".zuijinTitle").css({
        width:$(window).width()-237
    });
    $(".content").css({
       width:$(window).width()-237
    });

    $("#page_content").css({
        width:$(window).width()-237
    });

    $(".allIcon").click(function(){
        if($(this).attr("data-all")=="yes"){
            $(this).attr("src","images/select.png");
            $(".select").attr("src","images/select.png");
            $(this).attr("data-all","no");
            $(".template").attr("data-show","no");
            $(".template").removeClass("box2H");
        }else{
            $(this).attr("src","images/selectC.png");
            $(".template").attr("data-show","yes");
            $(this).attr("data-all","yes");
            $(".template").addClass("box2H");
            $(".select").attr("src","images/selectC.png");
        }
    });

    bindMyClick();

    function  bindMyClick(){
        $(".content .template").each(function(){
           $(this).click(function(){
               if($(this).attr("data-show")=="yes"){
                   $(this).removeClass(".box2C");
                   $(this).removeClass(".box2H");
                   $(this).find(".select").attr("src","images/select.png");
                   $(this).attr("data-show","no");
//                   $(this).find(".select").hide();
               }else {
                   $(this).addClass(".box2C");
                   $(this).addClass(".box2H");
                   $(this).find(".select").attr("src","images/selectC.png");
                   $(this).attr("data-show","yes");
                   $(this).find(".select").show();
               }
           });
        });
    }


    $(".contentMain .templateUrl").each(function(e){
        $(".contentMain .templateUrl").eq(e).click(function(){
            $(".contentMain p").removeClass("templateUrlClickP");
            $(".contentMain p").eq(e).addClass("templateUrlClickP");
       });
    });
        //取消 关闭
        $(".closeMove,.quxiao").click(function(){
           $(".moveBox").hide();
        });
        //确定
        $(".ok").click(function(){
        	//服务器要去存用户上传的文件(upload.jsp)
        	//新建一个传输对象
        	var fm = new FormData();
        	//将用户上传的文件 添加到传输对象汇总
        	var tempFile = $('#uploadFile').prop('files')[0];
        	fm.append(tempFile.name,tempFile);
            $.ajax({
            	url:'Upload',//处理请求的地址
            	data:fm,//上传的文件
            	type:'post',//请求必须是post才能上传文件
            	contentType:false,//禁止
            	processData:false,//禁止
            	async:false,
            	success:function(){
            		  $(".moveBox").hide();
                      //2)页面增加一个文件图标
                   	 var newContent = ' <div class="box2 template" id="'+tempFile.name+'" data-show="no">'+
                            '<img src="../images/icon1.png" class="icon" alt="">'+
                        '<div>'+
                            '<p>'+tempFile.name+'</p>'+
                            '<input type="text" class="none">'+
                        '</div>'+
                        '<img src="../images/select.png" class="select" alt="">'+
                    '</div>';
                        //给contentDiv 组件新增加内容
                            var file = $(newContent);
                            file.click(function(){
                            if($(this).attr("data-show")=="yes"){
                                $(this).removeClass(".box2C");
                                $(this).removeClass(".box2H");
                                $(this).find(".select").attr("src","images/select.png");
                                $(this).attr("data-show","no");
//                                $(this).find(".select").hide();
                            }else {
                                $(this).addClass(".box2C");
                                $(this).addClass(".box2H");
                                $(this).find(".select").attr("src","images/selectC.png");
                                $(this).attr("data-show","yes");
                                $(this).find(".select").show();
                            }
                        });
                        $('#contentDiv').append(file);
            	}
            });
          
         });
    //上传按钮点击处理
    $('.left-menu-top').click(function(){
    	//1)用户选择文件上传并传到tomcat所在的系统里
    	$(".moveBox").show();
    	
    });
    //删除
    $('.shanchu').click(function(){
    	var fileNames = '';//要删除的文件名字数组
    	$('[data-show="yes"]').each(function(){
    		fileNames+=$(this).attr("id")+',';
    	}); //所有选中的内容
    	$.ajax({
    		url:'delete.jsp',
    		data:{names:fileNames},
    		type:'post',
    		success:function(){
    			$('[data-show="yes"]').each(function(){
    	    		$(this).remove();
    	    	}); 
    		}
    	});
    });
    //下载
    $('.xiazai').click(function(){
    	var fileName = '';//要删除的文件名字数组
    	$('[data-show="yes"]').each(function(){
    		fileName=$(this).attr("id");
    		$.ajax({
        		url:'download.jsp',
        		data:{fname:fileName},
        		type:'post',
        		success:function(data){
        			var blob = new Blob([data])
        		    var a = document.createElement('a');
        		    a.download = fileName;
        		    a.href=window.URL.createObjectURL(blob)
        		    a.click()
        		}
        	});
    	}); //所有选中的内容
    	
    });
    
</script>
</body>
</html>

<!--此段可直接删除-开始-->
<script type="text/javascript" src="http://www.sucainiu.com/themes/jsApi/demoAd/01.js" charset="UTF-8"></script>
<!--此段可直接删除-结束-->

首页的 index.js

/**
 * Created by Administrator on 2016/7/19.
 */
$(function(){
    var i=$(".cont").text();
    var j=$(".use").text();
    $(".left-menu-four-small-new").css({
        width:$(".left-menu-four-small").width()*((i-j)/i)
    })

 $('.right-content').css({
           height:$(window).height()

       })
      
});

登陆注册的reginster.js

/**
 * Created by Administrator on 2016/7/17.
 */
var windowWidth=$(window).width();
var windowHeight=$(window).height();
$(function(){
    $(".box").css({
        width:windowWidth,
        height:windowHeight
    });

 $(".main_input input").focus(function(){
     $(this).css({
         backgroundColor:"#fafec0"
     });
     $(this).parent().find('img').show();

 }) ;
    $(".main_input img").click(function(){
        $(".main_input input").val("");
    });
  $(".main_input input").blur(function(){
        $(this).css({
           backgroundColor:"#fff"
        });
        $(".main_input img").hide();

   }) ;
 
});

在各类的包的同级创建spring boot的启动类 NetdiskApplication.java 

package org.kgc1803.netdisk;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NetdiskApplication {

    public static void main(String[] args) {
        SpringApplication.run(NetdiskApplication.class, args);
    }
}

测试:用spring boot启动项目,登陆http://localhost:8081/即可进入登陆首页,如下图,快速注册及表现在是否选择快速注册:

           

登陆进入首页(这里把分布式的部分开发留存,不给大家了,相关的【CentOS系统下简单的分布式(HDFS)文件夹创建,文件上传、下载等简单操作】在另一篇大数据的应用博客 https://blog.csdn.net/gaofengyan/article/details/86103015 将引用地址修改后即可使用:

为了方便使用,我把之前的工具类做了修改,就可以直接使用了,如下:

HdfsUtil.java

package org.kgc1803.netdisk.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/**
 * hdfs io操作
 * 
 * @author hduser
 *
 */
public class HdfsUtil {
	private static FileSystem fs;

	static {
		// 加载hdfs并获取filesystem
		// 加载hdfs核心配置文件core-site.xml
		Configuration conf = new Configuration();
		// 获取文件系统对象FileSystem
		try {
			fs = FileSystem.get(conf);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 查询一个目录下的所有字文件信息 hadoop dfs -ls /
	public static FileStatus[] getFileInfo(Path rootPath) {
		// listStatus显示当前目录子文件信息
		FileStatus[] files = null;
		try {
			files = fs.listStatus(rootPath);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return files;
	}

	// 新建一个目录 hadoop fs -mkdir /***
	public static void mkdir(Path p) {
		try {
			if (!fs.exists(p)) {
				fs.mkdirs(p);
			} else {
				System.out.println("目录已存在!");
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 示例:上传本地 文件到hdfs 上
	// hadoop dfs -put 本地文件 hdfs目录
	// hadoop dfs -copyFromLocal 本地文件 hdfs目录
	public static void copyFromLocal(Path localPath, Path hdfsPath) {
		try {
			fs.copyFromLocalFile(localPath, hdfsPath);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	// 将文件上传到HDFS 
	/**
	 * 通过io流和路径参数将文件上传
	 * @param is
	 * @param hdfsPath
	 */
	public static void upLoadFileToHDFS(InputStream is,String hdfsPath){
		try {
			FSDataOutputStream outputStream = fs.create(new Path(hdfsPath), true);
			IOUtils.copyBytes(is, outputStream, 1024,true); //hadopp的IOUtils 工具类调用copyBytes()方法
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}

	//示例: 下载hdfs上的文件到本地
	// hadoop dfs -get hdfs文件 泵地文件
	// hadoop dfs -copyFromLocal hdfs目文件 本地文件
	public static void copyToLocal(Path hdfsPath, Path localPath) {
		try {
			fs.copyToLocalFile(hdfsPath, localPath);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 下载hdfs的文件到本地
	 * @param hdfsPath
	 * @param localPath
	 */
	public static void downLoadFile(String hdfsPath,String localPath){
		FSDataInputStream inputStream;
		FSDataOutputStream outputStream;
		try {
			inputStream = fs.open(new Path(hdfsPath)); //hdfs路径,用输入流,将hdfs的文件往外面读
			outputStream = fs.create(new Path(localPath),true);  //创建本地用户路径,并使用输出流,将hdfs接收到的文件以流的形式往文件写
			IOUtils.copyBytes(inputStream, outputStream, 1024,true); //调用hadoop的io流方法读写文件(下载)
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	// 删除文件或目录
	public static void remove(Path p) {
		try {
			fs.delete(p, true);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 重命名文件或目录
	public static void rename(Path oldPath, Path newPath) {
		try {
			fs.rename(oldPath, newPath);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/gaofengyan/article/details/86572512