跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教下后端 Java 大佬
未分類
10 2 月 2021

请教下后端 Java 大佬

请教下后端 Java 大佬

資深大佬 : supuwoerc 2

最近小弟在家自学 java,刚刚自己搭建了一个 Maven 的 javaweb 项目,刚刚写了几个接口,遇到了一些问题,希望大家能指导下我,提前感谢~~

问题 list:

1.文件上传一般是放在什么地方呢?我现在是写了个 properties,里面配置了绝对路径,但是网上有的说存到 WEB-INF 下的 upload 文件夹,我也试了一下,发现路径怎么写都不对,不知道应该怎么写?(我想这文件应该不必存储到项目下,但是还是想弄清楚怎么将文件写入 WEB-INF/upload 下)

2.在封装 json 的时候,上传 markdown 我将 markdown 实例写到了 json 的 data 里面,但是上传其他文件的时候我想起来一个问题,难道还要再封装一个 Bean 来描述文件信息吗? (之所以要存 markdown 信息是因为我想回显上传内容),不知道实际开发中大佬们怎么做的?

3.现在还是不太清楚 Servlet 和 service 中代码怎么写,总是写着写着发现 Servlet 全干完了,Dao 中代码倒比较清晰,但是 Servlet 和 service 区分模糊的很,希望大佬能解释下。

上传文件的代码如下:

@WebServlet("/uploadFile/*") public class UploadFile extends BaseServlet {     private UploadFileService uploadFileService = new UploadFileServiceImpl();     public void upload(HttpServletRequest request, HttpServletResponse response) {         response.setContentType("application/json;charset=utf-8;");         boolean isMultipart = ServletFileUpload.isMultipartContent(request);  //判断 enctype 属性是否是 multipart/form-data         try {             if (isMultipart) {                 FileItemFactory factory = new DiskFileItemFactory();  //工厂实例                 ServletFileUpload upload = new ServletFileUpload(factory);  //ServletFileUpload 实例依赖于 FileItemFactory 工厂                 List<FileItem> itemList = upload.parseRequest(request);  //解析表单字段,封装成一个 FileItem 实例的集合                 Iterator<FileItem> iterator = itemList.iterator();  //迭代器                 while (iterator.hasNext()) {                     FileItem fileItem = iterator.next();  //依次解析每一个 FileItem 实例,即表单字段                     if (!fileItem.isFormField()) {                         //文件表单字段                         String fileUpName = fileItem.getName();  //用户上传的文件名                         Properties properties = new Properties();                         properties.load(UploadFile.class.getClassLoader().getResourceAsStream("client.properties"));                         String fileDir = properties.getProperty("fileDir");                         //默认存到 WEB-INF 下的 upload 文件夹  (构建项目后存到 target 目录下)                         String pathName = UploadFile.class.getClassLoader().getResource("").getPath().replace("classes", "upload");                         if (fileDir != null && !("".equals(fileDir))) {                             pathName = fileDir;                         }                         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");                         String dirName = pathName+ File.separator + simpleDateFormat.format(new Date());                         File rebornDir = new File(dirName);                         if (!rebornDir.isDirectory()) {                             rebornDir.getAbsolutePath();                             rebornDir.mkdirs();        //不存在目录时创建目录                         }                         File file = new File(rebornDir + File.separator + fileUpName);  //保存的文件                         System.out.println(file);                         if (!file.exists()) {                             file.getAbsolutePath();                             file.createNewFile();    //创建文件                         }                         fileItem.write(file);  //写入,保存到目标文件                         String prefix = fileUpName.substring(fileUpName.lastIndexOf(".") + 1);                         //如果是 markdown 文件的话需要存到数据库里面,其他格式的文件存到文件夹里面就行                         Markdown addResult = null;                         if("md".equals(prefix)){                             addResult = uploadFileService.uploadMarkdownFile(file, "ceshi", 2, file.getPath());                         }else{                             addResult = null;                         }                         ResultInfo resultInfo = new ResultInfo();                         resultInfo.setSuccess(true);                         resultInfo.setMessage("上传成功!");                         resultInfo.setData(addResult);                         writeValue(response, resultInfo);                     }                 }             }         } catch (Exception e) {             e.printStackTrace();             System.out.println("文件上传出现异常");             ResultInfo resultInfo = new ResultInfo();             resultInfo.setSuccess(false);             resultInfo.setMessage("上传失败!");             resultInfo.setData(null);             writeValue(response, resultInfo);         }     } }  

大佬有話說 (4)

  • 資深大佬 : serverABCD

    直接用 Spring 吧,你写的这些以后工作基本用不到,直接背一背知识点面试用就行了。

  • 資深大佬 : CCIP

    业务逻辑写到 service 参数校验放到 Servlet

  • 資深大佬 : cslive

    Servlet 了解会用就行,后面直接 springboot 吧,另外这个上传路径放在哪都行,你看的教程太老了,找点 springbootj 教程看

  • 資深大佬 : night98

    Servlet 知道个大概就行了,把 httprequest 和 response 对象了解清楚就行,然后看 springmvc 就行

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具