Review学生作业管理系统
讓后臺立即響應前端,前端不等待處理過程
描述:學生作業管理系統里面有一個郵件提醒的功能,如果不加以處理前端就會一直等待返回結果不會彈出發送成功的提示,直到郵件已經發送出去。
1、使用try{}finally{}(會快一點)
使用try{}finally{}語句,讓try語句直接先返回結果,最后才執行發送郵件代碼。
2、使用多線程(秒返回結果)
new thread(()->{//發送郵件代碼... }).start(); return ApiResult.success("發送成功");原本由main線程執行的發送郵件代碼交給其他線程處理,main線程直接返回結果。
讓頁面加載完成就立即發送Ajax請求
$(document).ready(function () { //此處頁面打開即請求api$.ajax({type: 'GET',url: '/ssm/homework/getHomeWork',dataType: "json",async: false,success: function (data) {}}});});以前一直要刷新幾次才顯示數據出來,原來是要加async:false把異步請求變為同步請求,以前一直以為加了$(document).ready()就可以加載出來。Ajax參數詳解
SpringBoot熱部署
在pom.xml加入spring-boot-devtools
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> </dependency>如果改完代碼需要按Ctrl + Shift + F9才可以完成熱部署,以前只知道devtools可以用來熱部署。SpringBoot 在IDEA中實現熱部署
413 (Request Entity Too Large)
在上傳文件是報出413
修改Nginx的配置文件
還可以修改tomcat的配置文件(在application.properties修改)
server.tomcat.max-http-form-post-size=-1設置post請求的最大容量為不限
優化SQL
創建索引
優化limit語句
select * from operation_log 1 limit 3000000 , 10;
select * from operation_log t , (select id from operation_log order by id limit
3000000,10) b where t.id = b.id ;
文件下載方式
1、利用springmvc提供的ResponseEntity類型,使用它可以很方便地定義返回的HttpHeaders和HttpStatus。(單個文件)
@RequestMapping("/download") public ResponseEntity<byte[]> export(String fileName,String filePath) throws IOException { HttpHeaders headers = new HttpHeaders(); File file = new File(filePath);headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", fileName); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }2、多文件下載打包成zip包
//批量文件壓縮后下載@RequestMapping("/downLoad2")public ResponseEntity<byte[]> download2(HttpServletRequest request) throws IOException {//需要壓縮的文件List<String> list = new ArrayList<String>();list.add("test.txt");list.add("test2.txt");//壓縮后的文件String resourcesName = "test.zip";ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D:/"+resourcesName));InputStream input = null;for (String str : list) {String name = "D:/"+str;input = new FileInputStream(new File(name)); zipOut.putNextEntry(new ZipEntry(str)); int temp = 0; while((temp = input.read()) != -1){ zipOut.write(temp); } input.close();}zipOut.close();File file = new File("D:/"+resourcesName);HttpHeaders headers = new HttpHeaders();String filename = new String(resourcesName.getBytes("utf-8"),"iso-8859-1");headers.setContentDispositionFormData("attachment", filename);headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED);}前端代碼:
1、使用Ajax請求
2、使用隱藏表單提交(推薦)
var form = $("<form>"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",rootPath + "T_academic_essay/DownloadZipFile.do"); var input1 = $("<input>"); input1.attr("type","hidden"); input1.attr("name","strZipPath"); input1.attr("value",strZipPath); $("body").append(form); form.append(input1); form.submit(); form.remove();總結
以上是生活随笔為你收集整理的Review学生作业管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC传递JSON数据的方法
- 下一篇: 解决Redis超卖问题