JSP使用自定义标签防止表单重复提交的方法
本文实例讲述了JSP使用自定义标签防止表单重复提交的方法。分享给大家供大家参考。具体如下:
1.编写servelt:
packagecn.itcast.apsliyuan.web.servlet; importjava.io.IOException; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; publicclassLoginServetextendsHttpServlet{ /** *反序列化 */ privatestaticfinallongserialVersionUID=4960707156159691747L; @Override publicvoiddoPost(HttpServletRequestrequset, HttpServletResponseresponse)throwsServletException,IOException{ //获得输入框中的值 Stringtoken=requset.getParameter("tokenName"); //获得session中的值 StringsessionToken=(String)requset.getSession().getAttribute( "token"); if(token.equals(sessionToken)){ response.getWriter().print("保存成功"); requset.getSession().removeAttribute("token");//为了保证session中的值不重复,所以移除 }else{ response.getWriter().print("对不起不能重复提交"); } } }
2.编写自定义标签的类:
packagecn.itcast.apsliyuan.tag; importjava.io.IOException; importjava.util.UUID; importjavax.servlet.jsp.JspException; importjavax.servlet.jsp.tagext.TagSupport; publicclassLoginTokenTagextendsTagSupport{ /** *凡序列化 */ privatestaticfinallongserialVersionUID=-1815168785364991254L; @Override publicintdoStartTag()throwsJspException{ //TODOAuto-generatedmethodstub //得到uuid Stringuuid=UUID.randomUUID().toString().replace("-",""); //得到session,pageContext是域对象同样也是工具类 pageContext.getSession().setAttribute("token",uuid); Stringhtml="<inputtype='text'name='tokenName'readonly='readonly'value="+uuid+">"; try{ pageContext.getOut().print(html); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnEVAL_BODY_INCLUDE; } }
3.编写×.tld文件:
<?xmlversion="1.0"encoding="UTF-8"?> <taglibxmlns="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中的代码:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@tagliburi="http://my.oschina.net/aps"prefix="aps"%> <%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>index.jsp</title> </head> <body> <formaction="${pageContext.request.contextPath}/server/Login"method="post"> <aps:loginTokenTag/> <inputtype="submit"value="Login"/> </form> </body> </html>
5.防止乱码的拦截器:
packagecn.itcast.apsliyuan.filter; importjava.io.IOException; importjavax.servlet.Filter; importjavax.servlet.FilterChain; importjavax.servlet.FilterConfig; importjavax.servlet.ServletException; importjavax.servlet.ServletRequest; importjavax.servlet.ServletResponse; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; publicclassUncodeFilterimplementsFilter{ publicvoidinit(FilterConfigfilterConfig)throwsServletException{ //TODOAuto-generatedmethodstub System.out.println("拦截完成"); } publicvoiddoFilter(ServletRequestreq,ServletResponseres, FilterChainchain)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)req; HttpServletResponseresponse=(HttpServletResponse)res; request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); chain.doFilter(request,response); } publicvoiddestroy(){ //TODOAuto-generatedmethodstub } }
6.web.xml中的配置:
<?xmlversion="1.0"encoding="UTF-8"?> <web-appxmlns: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/javaeehttp://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>
希望本文所述对大家的JSP程序设计有所帮助。