<script> var isCommitted = false; function checkPost() { if(!isCommitted) { isCommitted = true; return true; } else { alert("不能重复提交表单"); return false; } } </script> <form action="servlet/RepeateFormServlet" method="POST" onsubmit="return checkPost()">
利用Referer请求头隐藏JavaScript源码
String referrer = request.getHeader("referer"); String sitePart = "http://" + request.getServerName(); if(referrer!=null && referrer.startsWith(sitePart)) { //向客户端输出javascript的document.write(...)语句 out.println( "document.write('假设这是很多重要的Javascript代码的执行结果');"); }
分析文件上传的请求消息结构
getInputStream 方法用于返回的一个代表实体内容的输入流对象,其类型为javax.servlet.ServletInputStream。
getReader方法用于返回的一个代表实体内容的BufferedReader对象,返回的BufferedReader对象将实体内容中的字节数据按照请求消息中指定的字符集编码转换成文本字符串。
在调用getReader方法之前,可以调用ServletRequest的setCharacterEncoding方法指定其返回的BufferedReader对象所使用的字符集编码。
ServletInputStream sis = request.getInputStream(); String filePath = getServletContext().getRealPath("/body.out"); FileOutputStream fos = new FileOutputStream(filePath); byte[] buf = new byte[1024]; int len = sis.read(buf,0,1024); while(len != -1) { fos.write(buf,0,len); len = sis.read(buf,0,1024); } fos.close(); sis.close();