首页 > 编程 > JSP > 正文

JSP使用自定义标签防止表单重复提交的方法

2024-09-05 00:22:17
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JSP使用自定义标签防止表单重复提交的方法,以实例形式较为详细的分析了JSP基于自定义标签防止表单重复提交的具体步骤与实现方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了JSP使用自定义标签防止表单重复提交的方法。分享给大家供大家参考。具体如下:

1. 编写servelt:

 

 
  1. package cn.itcast.apsliyuan.web.servlet; 
  2. import java.io.IOException; 
  3. import javax.servlet.ServletException; 
  4. import javax.servlet.http.HttpServlet; 
  5. import javax.servlet.http.HttpServletRequest; 
  6. import javax.servlet.http.HttpServletResponse; 
  7. public class LoginServet extends HttpServlet { 
  8. /** 
  9. * 反序列化 
  10. */ 
  11. private static final long serialVersionUID = 4960707156159691747L; 
  12. @Override 
  13. public void doPost(HttpServletRequest requset, 
  14. HttpServletResponse response) throws ServletException, IOException { 
  15. // 获得输入框中的值 
  16. String token = requset.getParameter("tokenName"); 
  17. // 获得session中的值 
  18. String sessionToken = (String) requset.getSession().getAttribute( 
  19. "token"); 
  20. if (token.equals(sessionToken)) { 
  21. response.getWriter().print("保存成功"); 
  22. requset.getSession().removeAttribute("token");//为了保证session中的值不重复,所以移除 
  23. else { 
  24. response.getWriter().print("对不起不能重复提交"); 

2. 编写自定义标签的类:

 

 
  1. package cn.itcast.apsliyuan.tag; 
  2. import java.io.IOException; 
  3. import java.util.UUID; 
  4. import javax.servlet.jsp.JspException; 
  5. import javax.servlet.jsp.tagext.TagSupport; 
  6. public class LoginTokenTag extends TagSupport{ 
  7. /** 
  8. * 凡序列化 
  9. */ 
  10. private static final long serialVersionUID = -1815168785364991254L; 
  11. @Override 
  12. public int doStartTag() throws JspException { 
  13. // TODO Auto-generated method stub 
  14. //得到uuid 
  15. String uuid=UUID.randomUUID().toString().replace("-",""); 
  16. //得到session,pageContext 是域对象同样也是工具类 
  17. pageContext.getSession().setAttribute("token",uuid); 
  18. String html="<input type='text' name='tokenName' readonly='readonly' value="+uuid+">"
  19. try { 
  20. pageContext.getOut().print(html); 
  21. catch (IOException e) { 
  22. // TODO Auto-generated catch block 
  23. e.printStackTrace(); 
  24. return EVAL_BODY_INCLUDE; 

3. 编写×.tld文件:

 

 
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  4. http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
  5. version="2.1"
  6. <!-- 定义版本 --> 
  7. <tlib-version>1.0</tlib-version> 
  8. <!-- 定义名字 --> 
  9. <short-name>apsliyuan</short-name> 
  10. <!-- 定义uri --> 
  11. <uri>http://my.oschina.net/aps</uri> 
  12. <tag> 
  13. <name>loginTokenTag</name> 
  14. <tag-class>cn.itcast.apsliyuan.tag.LoginTokenTag</tag-class
  15. <body-content>JSP</body-content> 
  16. </tag> 
  17. </taglib> 

4. jsp中的代码:

 

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" 
  2. pageEncoding="UTF-8"%> 
  3. <%@taglib uri="http://my.oschina.net/aps" prefix="aps" %> 
  4. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
  6. <html> 
  7. <head> 
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
  9. <title>index.jsp</title> 
  10. </head> 
  11. <body> 
  12. <form action="${pageContext.request.contextPath}/server/Login" method="post"
  13. <aps:loginTokenTag/> 
  14. <input type="submit" value="Login"/> 
  15. </form> 
  16. </body> 
  17. </html> 

5. 防止乱码的拦截器:

 

 
  1. package cn.itcast.apsliyuan.filter; 
  2. import java.io.IOException; 
  3. import javax.servlet.Filter; 
  4. import javax.servlet.FilterChain; 
  5. import javax.servlet.FilterConfig; 
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.ServletRequest; 
  8. import javax.servlet.ServletResponse; 
  9. import javax.servlet.http.HttpServletRequest; 
  10. import javax.servlet.http.HttpServletResponse; 
  11. public class UncodeFilter implements Filter { 
  12. public void init(FilterConfig filterConfig) throws ServletException { 
  13. // TODO Auto-generated method stub 
  14. System.out.println("拦截完成"); 
  15. public void doFilter(ServletRequest req, ServletResponse res, 
  16. FilterChain chain) throws IOException, ServletException { 
  17. HttpServletRequest request=(HttpServletRequest) req; 
  18. HttpServletResponse response=(HttpServletResponse) res; 
  19. request.setCharacterEncoding("UTF-8"); 
  20. response.setContentType("text/html;charset=UTF-8"); 
  21. chain.doFilter(request, response); 
  22. public void destroy() { 
  23. // TODO Auto-generated method stub 

6. web.xml中的配置:

 

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
  5. id="WebApp_ID" version="2.5"
  6. <display-name>Tag</display-name> 
  7. <welcome-file-list> 
  8. <welcome-file>index.html</welcome-file> 
  9. <welcome-file>index.htm</welcome-file> 
  10. <welcome-file>index.jsp</welcome-file> 
  11. <welcome-file>default.html</welcome-file> 
  12. <welcome-file>default.htm</welcome-file> 
  13. <welcome-file>default.jsp</welcome-file> 
  14. </welcome-file-list> 
  15. <servlet> 
  16. <servlet-name>loginServlet</servlet-name> 
  17. <servlet-class>cn.itcast.apsliyuan.web.servlet.LoginServet</servlet-class
  18. </servlet> 
  19. <servlet-mapping> 
  20. <servlet-name>loginServlet</servlet-name> 
  21. <url-pattern>/server/Login</url-pattern> 
  22. </servlet-mapping> 
  23. <filter> 
  24. <filter-name>UncodeFilter</filter-name> 
  25. <filter-class>cn.itcast.apsliyuan.filter.UncodeFilter</filter-class
  26. </filter> 
  27. <filter-mapping> 
  28. <filter-name>UncodeFilter</filter-name> 
  29. <url-pattern>/*</url-pattern> 
  30. </filter-mapping> 
  31. </web-app> 

希望本文所述对大家的JSP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表