JSP使用自定義標(biāo)簽防止表單重復(fù)提交的方法
本文實(shí)例講述了JSP使用自定義標(biāo)簽防止表單重復(fù)提交的方法。分享給大家供大家參考。具體如下:
1. 編寫(xiě)servelt:
package cn.itcast.apsliyuan.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServet extends HttpServlet { /** * 反序列化 */ private static final long serialVersionUID = 4960707156159691747L; @Override public void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException { // 獲得輸入框中的值 String token = requset.getParameter("tokenName"); // 獲得session中的值 String sessionToken = (String) requset.getSession().getAttribute( "token"); if (token.equals(sessionToken)) { response.getWriter().print("保存成功"); requset.getSession().removeAttribute("token");//為了保證session中的值不重復(fù),所以移除 } else { response.getWriter().print("對(duì)不起不能重復(fù)提交"); } } }
2. 編寫(xiě)自定義標(biāo)簽的類(lèi):
package cn.itcast.apsliyuan.tag; import java.io.IOException; import java.util.UUID; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; public class LoginTokenTag extends TagSupport{ /** * 凡序列化 */ private static final long serialVersionUID = -1815168785364991254L; @Override public int doStartTag() throws JspException { // TODO Auto-generated method stub //得到uuid String uuid=UUID.randomUUID().toString().replace("-",""); //得到session,pageContext 是域?qū)ο笸瑯右彩枪ぞ哳?lèi) pageContext.getSession().setAttribute("token",uuid); String html="<input type='text' name='tokenName' readonly='readonly' value="+uuid+">"; try { pageContext.getOut().print(html); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return EVAL_BODY_INCLUDE; } }
3. 編寫(xiě)×.tld文件:
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <!-- 定義版本 --> <tlib-version>1.0</tlib-version> <!-- 定義名字 --> <short-name>apsliyuan</short-name> <!-- 定義uri --> <uri>http://my.oschina.net/aps</uri> <tag> <name>loginTokenTag</name> <tag-class>cn.itcast.apsliyuan.tag.LoginTokenTag</tag-class> <body-content>JSP</body-content> </tag> </taglib>
4. jsp中的代碼:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://my.oschina.net/aps" prefix="aps" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>index.jsp</title> </head> <body> <form action="${pageContext.request.contextPath}/server/Login" method="post"> <aps:loginTokenTag/> <input type="submit" value="Login"/> </form> </body> </html>
5. 防止亂碼的攔截器:
package cn.itcast.apsliyuan.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UncodeFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub System.out.println("攔截完成"); } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) res; request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); chain.doFilter(request, response); } public void destroy() { // TODO Auto-generated method stub } }
6. web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Tag</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>cn.itcast.apsliyuan.web.servlet.LoginServet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/server/Login</url-pattern> </servlet-mapping> <filter> <filter-name>UncodeFilter</filter-name> <filter-class>cn.itcast.apsliyuan.filter.UncodeFilter</filter-class> </filter> <filter-mapping> <filter-name>UncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
希望本文所述對(duì)大家的JSP程序設(shè)計(jì)有所幫助。
相關(guān)文章
Struts2 OGNL調(diào)用公共靜態(tài)方法詳細(xì)介紹
這篇文章主要介紹了Struts2 OGNL調(diào)用公共靜態(tài)方法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01基于jsp:included的使用與jsp:param亂碼的解決方法
本篇文章是對(duì)jsp:included的使用與jsp:param亂碼的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05JSP中通過(guò)Servlet 將服務(wù)器硬盤(pán)圖片并展示到瀏覽器
這篇文章主要介紹了JSP中通過(guò)Servlet 將服務(wù)器硬盤(pán)圖片并展示到瀏覽器的相關(guān)資料,希望通過(guò)本文大家可以實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-08-08關(guān)于jsp中cookie丟失問(wèn)題(詳解)
下面小編就為大家?guī)?lái)一篇關(guān)于jsp中cookie丟失問(wèn)題(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05JSP學(xué)習(xí)筆記之基礎(chǔ)語(yǔ)法
本文是JSP學(xué)習(xí)筆記系列的第一篇文章,跟之前一樣,我們先來(lái)看看jsp的基礎(chǔ)語(yǔ)法,有需要的小伙伴自己參考下。2015-09-09通用大型網(wǎng)站頁(yè)面靜態(tài)化解決方案
在開(kāi)發(fā)大型網(wǎng)站時(shí),避免不了處理大量的頁(yè)面靜態(tài)化操作,這樣方便加快網(wǎng)站訪(fǎng)問(wèn)速度與流量分流,那么如何來(lái)實(shí)現(xiàn)呢?其實(shí)說(shuō)白了比較簡(jiǎn)單,網(wǎng)站靜態(tài)化主要包括以下幾方面的工作2008-10-10