驗證碼、jsp動作、檔案上傳和下載
阿新 • • 發佈:2018-12-15
1.圖片驗證碼的實現
2行
註冊、下單、支付
目的: 1) 驗證操作者是否是人 2) 防止表單重複提交 生成驗證碼的要點: 1) 使用java程式碼生成圖片物件 BufferedImage 2) 使用Random生成隨機字串 3) 將圖片物件用 ImageIO.write(圖片物件, "jpeg|png", 響應位元組輸出流) 返回給客戶端瀏覽器 驗證驗證碼:要點: 1) 將驗證碼文字存入session作用域 2) 表單提交時,對比session中的驗證碼和表單中的驗證碼
2. 簡訊驗證碼
呼叫第三方的簡訊服務 阿里雲的簡訊服務使用方法:https://www.aliyun.com/
- 充值
- 下載簡訊的sdk (軟體開發包)
- 生成開發者的id 和 secret 管理控制檯=>使用者資訊管理=>建立AccessKEY
- 設定簡訊模板和簡訊簽名 簡訊服務=>國內訊息 簡訊簽名:傳送者是誰 簡訊模板:規定了簡訊的內容
3. 動態include和靜態include
靜態include <%@ include file="目標檔案" %> 1.jsp+2.jsp 合併在一起 => 一個servlet
動態include <jsp:include page="目標檔案" /> 1.jsp 生成servlet1, 2.jsp 生成servlet2 把servlet1生成的結果和servlet2的結果合併在一起
另外注意page和file的區別 file後只能是jsp(實際存在的檔案) page除了可以是一個jsp以外,還可以是一個servlet的地址
4. jsp動作
java 15行
<!-- 等價於 request.setAttribute("stu", new Student()); --> <jsp:useBean id="stu" class="entity.Student" scope="request"/> <!-- stu.setName("張三"); --> <jsp:setProperty name="stu" property="name" value="張三"/> <!-- stu.getName(); --> <jsp:getProperty name="stu" property="name"/> <!-- 動態include --> <%--<jsp:include page="2.jsp"/>--%> <!-- 轉發 --> <%--<jsp:forward page="1.jsp"/>--%>
4. 檔案上傳
注意: 1) method必須是post 2) 必須採用複雜的格式,不能是name=value的引數格式, 必須是multipart/form-data的格式
apache提供了 commons-fileupload.jar 專門用來解析multipart/form-data的格式 commons-io.jar
// 通過程式建立目錄 new File("e:\images").mkdirs()
5.檔案下載
// 2) 如果要把圖片進行下載操作
resp.setContentType("application/octet-stream");
resp.addHeader("content-disposition","attachment;filename=1.jpg");
// 把【瀏覽器的路徑】 轉換為 【伺服器的磁碟路徑】
String uri = req.getRequestURI(); // 獲取瀏覽器實際輸入路徑
System.out.println(uri);
String path = "e:\\" + uri;// 圖片的磁碟路徑
// 如果檔案不存在,返回404
if( !new File(path).exists() ) {
resp.sendError(404);
return ;
}
// 如果存在,從檔案輸入流讀取,向響應的輸出流寫
FileInputStream is = new FileInputStream(path);
OutputStream os = resp.getOutputStream();
IOUtils.copy(is, os);
IOUtils.closeQuietly(is);
}
}