3 分类管理模块的开发
程序员文章站
2024-03-22 17:38:22
...
分类管理模块的开发
通过递归算法算出父子内的分类
/**
* 递归查询本节点的id及孩子节点的id
* @param categoryId
* @return
*/
public ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId){
Set<Category> categorySet = Sets.newHashSet();
findChildCategory(categorySet,categoryId);
List<Integer> categoryIdList = Lists.newArrayList();
if(categoryId != null){
for(Category categoryItem : categorySet){
categoryIdList.add(categoryItem.getId());
}
}
return ServerResponse.createBySuccess(categoryIdList);
}
//递归算法,算出子节点
private Set<Category> findChildCategory(Set<Category> categorySet ,Integer categoryId){
Category category = categoryMapper.selectByPrimaryKey(categoryId);
if(category != null){
categorySet.add(category);
}
//查找子节点,递归算法一定要有一个退出的条件
List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
for(Category categoryItem : categoryList){
findChildCategory(categorySet,categoryItem.getId());
}
return categorySet;
}
通过springMVC上传文件到ftp服务器(centos)
在服务器配置vsftp服务器
步骤:先下载ftp,创建上传后的文件夹,配置个用户拥有上传该文件夹权限,修改该用户的密码,修改配置文件(指向我的目录,禁止匿名登录,配置用户集合),防火墙的配置,启动ftp服务器
web项目上传:
配置ip,用户名,密码
ftp.server.ip=192.168.50.128
ftp.user=ftpuser
ftp.pass=12345
ftp.server.http.prefix=http://img.happymmall.com/
alipay.callback.url=http://www.happymmall.com/order/alipay_callback.do
password.salt = [email protected]#[email protected]#$#@KJdjklj;D../dSF.,
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
<body>
<h2>Hello World!</h2>
springmvc上传文件
<form name="form1" action="/mmall/manage/product/upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
<input type="submit" value="springmvc上传文件" />
</form>
富文本图片上传文件
<form name="form2" action="/mmall/manage/product/richtext_img_upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
<input type="submit" value="富文本图片上传文件" />
</form>
</body>
</html>
控制器,业务层:
@RequestMapping("upload.do")
@ResponseBody
public ServerResponse upload(HttpSession session,@RequestParam(value = "upload_file",required = false) MultipartFile file,HttpServletRequest request){
User user = (User)session.getAttribute(Const.CURRENT_USER);
if(user == null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录管理员");
}
if(iUserService.checkAdminRole(user).isSuccess()){
String path = request.getSession().getServletContext().getRealPath("upload");
String targetFileName = iFileService.upload(file,path);
String url = PropertiesUtil.getProperty("ftp.server.http.prefix")+targetFileName;
Map fileMap = Maps.newHashMap();
fileMap.put("uri",targetFileName);
fileMap.put("url",url);
return ServerResponse.createBySuccess(fileMap);
}else{
return ServerResponse.createByErrorMessage("无权限操作");
}
}
public String upload(MultipartFile file,String path){
String fileName = file.getOriginalFilename();
//扩展名
//abc.jpg
String fileExtensionName = fileName.substring(fileName.lastIndexOf(".")+1);
String uploadFileName = UUID.randomUUID().toString()+"."+fileExtensionName;
logger.info("开始上传文件,上传文件的文件名:{},上传的路径:{},新文件名:{}",fileName,path,uploadFileName);
File fileDir = new File(path);
if(!fileDir.exists()){//判断为空创建文件夹
fileDir.setWritable(true);//赋予可写的权限
fileDir.mkdirs();
}
File targetFile = new File(path,uploadFileName);
try {
file.transferTo(targetFile);//springmvc上传文件的方法
//文件已经上传成功了
FTPUtil.uploadFile(Lists.newArrayList(targetFile));//gvava的工具类
//已经上传到ftp服务器上
targetFile.delete();
} catch (IOException e) {
logger.error("上传文件异常",e);
return null;
}
//A:abc.jpg
//B:abc.jpg
return targetFile.getName();
}
ftp上传文件的工具类
package com.mmall.util;
import org.apache.commons.net.ftp.FTPClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
/**
* Created by geely
*/
public class FTPUtil {
private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);
private static String ftpIp = PropertiesUtil.getProperty("ftp.server.ip");
private static String ftpUser = PropertiesUtil.getProperty("ftp.user");
private static String ftpPass = PropertiesUtil.getProperty("ftp.pass");
public FTPUtil(String ip,int port,String user,String pwd){
this.ip = ip;
this.port = port;
this.user = user;
this.pwd = pwd;
}
public static boolean uploadFile(List<File> fileList) throws IOException {
FTPUtil ftpUtil = new FTPUtil(ftpIp,21,ftpUser,ftpPass);
logger.info("开始连接ftp服务器");
boolean result = ftpUtil.uploadFile("img",fileList);
logger.info("开始连接ftp服务器,结束上传,上传结果:{}");
return result;
}
private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
boolean uploaded = true;
FileInputStream fis = null;
//连接FTP服务器
if(connectServer(this.ip,this.port,this.user,this.pwd)){
try {
ftpClient.changeWorkingDirectory(remotePath);//切换工作目录,如果remotePath为空就不需要切换文件夹了
ftpClient.setBufferSize(1024);//设置缓冲区
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//把文件类型设置成二进制的类型,为了解决乱码的问题
ftpClient.enterLocalPassiveMode();//打开本地的被动模式
for(File fileItem : fileList){//开始上传
fis = new FileInputStream(fileItem);
System.out.println(ftpClient.storeFile(fileItem.getName(),fis));//上传成功返回true
}
} catch (IOException e) {
logger.error("上传文件异常",e);
uploaded = false;
e.printStackTrace();
} finally {//释放链接资源
fis.close();
ftpClient.disconnect();
}
}
return uploaded;
}
//链接ftp服务器
private boolean connectServer(String ip,int port,String user,String pwd){
boolean isSuccess = false;
ftpClient = new FTPClient();
try {
ftpClient.connect(ip,port);
isSuccess = ftpClient.login(user,pwd);//链接成功返回true
} catch (IOException e) {
logger.error("连接FTP服务器异常",e);
}
return isSuccess;
}
private String ip;
private int port;
private String user;
private String pwd;
private FTPClient ftpClient;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public FTPClient getFtpClient() {
return ftpClient;
}
public void setFtpClient(FTPClient ftpClient) {
this.ftpClient = ftpClient;
}
}
推荐阅读
-
3 分类管理模块的开发
-
动手开发自己的mvc-3----容器该帮我们做什么?(非常的重点) 博客分类: 实现自己的MVCjava综合
-
[转]EJB3.0中的依赖注入,截获器及其在WebLogic Server 10中的扩展 博客分类: J2EE开发技术指南企业应用面临的问题EJB3开发应用 weblogicejb企业应用应用服务器spring
-
快速开发 HTML5 WebGL 的 3D 斜面拖拽生成模型 博客分类: hightopo html5canvas3d工控电信网管
-
Unity3D开发之获取物体的尺寸
-
开发者必了解的JavaScript图表库大全(3/4) javascript数据可视化图表库图表解决方案
-
Struts多模块开发_需注意的地方 博客分类: SSH StrutsJSPXMLWeb框架
-
java-SpringBoot的学习心得(3)——分类管理与标签
-
python3使用requests模块爬取页面内容的实战演练
-
Python基于pygame模块播放MP3的方法示例