VerifyCodeServlet(一次性驗證碼)
通過在表單中總是需要使用一次性驗證碼,這一問題可以使用VerifyCodeServlet來處理。讓<img>元素的src指向VerifyCodeServlet即可在頁面中生成一次性驗證碼。而且VerifyCodeServlet還會把驗證碼保存到session中,名稱為:vCode,也就是說,你可以通過session來獲取驗證碼文本:session.getAttribute(“vCode”)。
web.xml
<servlet> <servlet-name>VerifyCodeServlet</servlet-name> <servlet-class>cn.itcast.vcode.servlet.VerifyCodeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VerifyCodeServlet</servlet-name> <url-pattern>/VerifyCodeServlet</url-pattern> </servlet-mapping>
MyJsp.jsp
<form action="<c:url value='/UserServlet'/>" method="post"> <input type="hidden" name="method" value="regist"/> 驗證碼:<input type="text" name="verifyCode"/> <!--讓<img>的src指向VerifyCodeServlet即可生成一次性驗證碼--> <img src="<c:url value='/VerifyCodeServlet'/>" border="1"/><br/> <input type="submit" value="注冊"/> </form>
因為用戶可能看不清楚圖片上的文本,所以我們需要給用戶提供一個“換一張”超鏈接。其實實現(xiàn)這一步很簡單,只需要使用javascript讓<img>元素src指向VerifyCodeServlet即可。但因為瀏覽器可能會緩存上一次生成的圖片,所以我們還需要使用時間為參數(shù)“強迫”瀏覽器訪問服務器,而不是使用緩存。
MyJsp.jsp
<script type="text/javascript" src="<c:url value='/js/jquery-1.5.1.js'/>"></script>
<script type="text/javascript">
//在點擊“換一張”時會調(diào)用本方法
function change() {
$("#img").attr("src", "<c:url value='/VerifyCodeServlet?'/>" + new Date().getTime());//指定<img>元素的src屬性值為VerifyCodeServlet,并且追加參數(shù)為當前時間毫秒,它是不會重復的值,所以瀏覽器不會使用緩存,而是訪問服務器。
}
</script>
…
<form action="<c:url value='/UserServlet'/>" method="post">
<input type="hidden" name="method" value="regist"/>
驗證碼:<input type="text" name="verifyCode"/>
<!-- 指定id為img,方法使用jquery來查找該元素-->
<img id="img" src="<c:url value='/VerifyCodeServlet'/>" border="1"/>
<a href="javascript:change();" rel="external nofollow" >換一張</a><!--點擊該超鏈接會調(diào)用change()方法-->
<br/>
<input type="submit" value="注冊"/>
</form>
當用戶在表單中填寫了驗證碼,而且提交了表單,到達UserServlet的regist()方法,在regist() 方法中需要比較用戶在表單中輸入的驗證碼,與驗證碼圖片上的文本是否相同。
獲取用戶輸入的驗證碼:request.getParameter(“verifyCode”);
獲取圖片上的驗證碼:session.getAttribute(“vCode”);
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
springcloud + mybatis + seate集成示例
本文主要介紹了springcloud + mybatis + seate集成示例,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06
后端報TypeError:Cannot?read?properties?of?null?(reading?‘
這篇文章主要給大家介紹了關于后端報TypeError:Cannot?read?properties?of?null?(reading?‘xxx‘)錯誤的解決辦法,這個錯誤是開發(fā)中常見的錯誤之一,需要的朋友可以參考下2023-05-05
SpringBoot ResponseEntity標識Http響應方式
這篇文章主要介紹了SpringBoot ResponseEntity標識Http響應方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07

