【5】图书在线平台系统(SSH框架+Bootstrap/Angular+...)实现---【用户管理后台的实现】

此处更新实现的内容有:

1、使用struts2实现全局登录拦截器验证

2、对用户个人信息的管理平台进行了管理实现

(1)用户可以查看自己上传至平台的书籍内容、并进行删除、修改

(2)用户可以查看自己的个人下载记录、历史

(3)用户可以进行新书籍的上传与发布

(4)用户可以对自己的账户个人信息进行设置

【以上对书籍进行操作的功能均需要管理员进行验证】


3、具体页面:


(1)查看个人上传记录、并提供删除,修改功能



   (1-1)点击修改书籍时,可对书籍具体内容进行修改



(1-2)点击删除书籍时,需要验证个人信息:密保,才可提交删除请求



(2-1)上传新书籍



(2-2)上传书籍,获取分类的实现以及预览所选照片的实现



(3)查看用户个人下载记录


(4)账户设置





Ok!

以上就是实现了的具体功能,因为功能不外乎就那么操作,接下来介绍一下,在实现过程中遇到的问题,以及解决思路


一、Bootstrape4提供了tab-pane可以用于帮助实现左右结构的布局以及管理

二、Angular.js的$http与后台数据交互的时候,关于数据格式的问题,与ajax不同,我们需要对数据进行“改造”

 headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
				    transformRequest: function (dataName) {
			        return $.param(dataName);
			    }


三、上传信息,数据的字符串清洗,用于避免以及初步筛选出不需要或者指定的格式

四、上传新书籍部分;采用了ajaxfileupload.js模块进行上传,具体可以百度实现方式;或者formdata的形式也是可行的

五、在页面显示所选择的图片:

eleFile.addEventListener('change', function() {
        var file = this.files[0];                
        // 确认选择的文件是图片                
        if(file.type.indexOf("image") == 0) {
            var reader = new FileReader();
            reader.readAsDataURL(file);                    
            reader.onload = function(e) {
                // 图片base64化
                var newUrl = this.result;
                preview.style.backgroundImage = 'url(' + newUrl + ')';
            };
        }
    });

具体实现是依靠:filereader()方法进行操作

FileReader提供了如下方法:

readAsArrayBuffer(file) 按字节读取文件内容,结果用ArrayBuffer对象表示
readAsBinaryString(file) 按字节读取文件内容,结果为文件的二进制串
readAsDataURL(file) 读取文件内容,结果用data:url的字符串形式表示
readAsText(file,encoding) 按字符读取文件内容,结果用字符串形式表示
abort() 终止文件读取操作


------JAVA部分------

一、实现后台传回对象组,我们可以将查询结果装载入相应的对象List中,返回前台后,使用Angular.js提供的ng-repeat对二位数组进行扫描与提取


二、文件的写入/上传/保存:

//传入的图片文件
	private File file;            //文件  
	public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}

	private String fileFileName;  //文件名   
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	private String filePath;      //文件路径  
	public String getFilePath() {
		return filePath;
	}
	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}

public String UpBook(){
		System.out.println(newuobookowner);
		String path = "F:\\Myeclipse2017-10\\Jayant-BookShop\\WebRoot\\Pic\\BookPicUrl"; 
		//System.out.println(path);
		File file = new File(path); // 判断文件夹是否存在,如果不存在则创建文件夹  
		if (!file.exists()) {  
			file.mkdir();  
		}  
		try {  
			if (this.file != null) {  
				//**
				File f = this.getFile();  
			      
			     // 保存在硬盘中的文件名  
			    String name = newupbookname+ fileFileName.substring(fileFileName.lastIndexOf("."));
			    PicUrl = name;
			    //System.out.println(name);
			    FileInputStream inputStream = new FileInputStream(f);  
			    FileOutputStream outputStream = new FileOutputStream(path+ "\\" + name);  
			    //分配1024个字节内存给buf
			    byte[] buf = new byte[1024];  
		        int length = 0;  
		        while ((length = inputStream.read(buf)) != -1) {  
		               outputStream.write(buf, 0, length);  
		         }  
			    inputStream.close();  
			    outputStream.flush();  
			    //文件保存的完整路径  比如:D:\tomcat6\webapps\eserver\\upload\a0be14a1-f99e-4239-b54c-b37c3083134a.png  
			    filePath = path+"\\"+name;  
			    //System.out.println(filePath);
			    //**
			    return "success";
	          }  
	        } catch (Exception e) {  
		            e.printStackTrace();  
	       }  
	        return "error";
		
	}
【省略的部分代码----**----大致实现】




-***************************-

结束,其他的可以操作【1】博文中提供的项目地址,下载后,进行了解

---------

问题:

在项目中,我遇到一个问题是:

HQL语句查询时,如果提供中文条件无法查询出结果:

1、事实打印出HQL语句后,并没有错误,并且将语句提供至数据库进行查询,可以得到正确结果********也就是语句本身没有错误

2、编码,按照网上搜索到的解决方案,修改了编码形式,指定一致的数据库编码以及代码文件编码等,依然无法准确查询出搜索答案


【所以在此请问是否有小伙伴有遇到过类似的问题,以及最终的解决方案是什么,可能问题描述有些含糊,希望有相似经历的朋友们可以提供一下帮助,谢谢】

猜你喜欢

转载自blog.csdn.net/jayant89/article/details/80425981