Java 如何在jsp中使用md5比较两个输入文件?

Java 如何在jsp中使用md5比较两个输入文件?,java,jsp,md5,Java,Jsp,Md5,如何使用md5算法比较html或jsp中的两个txt或pdf文件?请把密码寄出去 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

如何使用md5算法比较html或jsp中的两个txt或pdf文件?请把密码寄出去

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method=post action="nextpage.jsp">
<h3>Select File 1:</h3><input type="file" name="fileName1" id="file1">
<h3>Select File 2:</h3><input type="file" name="fileName2" id="file2">
<br>
<br>
<input type="button" name="Compare" value="Compare">
</form>
</body>
</html>

无标题文件
选择文件1:
选择文件2:


这是我的index.jsp文件

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<%= request.getParameter("fileName1") %>
<%= request.getParameter("fileName2") %>
</body>
</html>

无标题文件
这是nextpage.jsp

我想使用消息摘要比较这两个输入文件。。 我有一个md5的java代码

public String msgDigest(String fname)throws Exception
{
    MessageDigest md = MessageDigest.getInstance("MD5");
        FileInputStream fis = new FileInputStream(fname);
    byte[] dataBytes = new byte[1024];
    int nread = 0; 
        while ((nread = fis.read(dataBytes)) != -1) 
        {
                md.update(dataBytes, 0, nread);
            };
            byte[] mdbytes = md.digest();
         //convert the byte to hex format method 1
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < mdbytes.length; i++)
        {
                sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
            }
            String result= sb.toString();
    return result;
}
公共字符串msgDigest(字符串fname)引发异常
{
MessageDigest md=MessageDigest.getInstance(“MD5”);
FileInputStream fis=新的FileInputStream(fname);
字节[]数据字节=新字节[1024];
int nread=0;
而((nread=fis.read(数据字节))!=-1)
{
md.update(数据字节,0,nread);
};
byte[]mdbytes=md.digest();
//将字节转换为十六进制格式方法1
StringBuffer sb=新的StringBuffer();
对于(int i=0;i

如何比较两个文件?

我建议您在处理表单输入的servlet中使用Commons FileUpload。以下是示例教程:。完成后,只需分派到另一个jsp


您是否需要代码示例?我做了一个项目,检查两个文件的md5并向您显示结果。这是密码

servlet的代码:

@WebServlet("/upload")
@MultipartConfig
public class Md5ServletProcessor extends HttpServlet {
private static final long serialVersionUID = 1L;

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String md5ForFirstFile = getMd5String(request, "file1");
    String md5ForSecondFile = getMd5String(request, "file2");

    response.sendRedirect("result.jsp?file1Md5="+md5ForFirstFile+"&file2Md5="+md5ForSecondFile+"&filesEqual="+md5ForFirstFile.equals(md5ForSecondFile));

    }

  private String getMd5String(HttpServletRequest request, String parameter) throws ServletException, IOException{
    Part filePart = request.getPart(parameter); 
    InputStream is = filePart.getInputStream();
    return DigestUtils.md5Hex(is);
  }
}
jsp主页:

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>Java MD5CheckSum</title>
 </head>

 <body> 
    <div>
        <h3> Choose Two Files for MD5CheckSum : </h3>
        <form action="upload" method="post" enctype="multipart/form-data">

        <table>
            <tr>
                <th>File 1:</th>
                <td><input type="file" name="file1" /></td>
            </tr>
            <tr>
                <th>File 2:</th>
                <td> <input type="file" name="file2" /></td>
            </tr>
        </table>
            <input type="submit" value="upload" />
        </form>          
    </div>
 </body>
</html>

Java MD5CheckSum
为MD5CheckSum选择两个文件:
文件1:
文件2:
最后是jsp结果页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
 <%@ 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>Md5Checksum Result</title>
 </head>

  <body>
   <table>

    <tr>
       <th colspan="2">THE RESULT OF COMPARING TWO FILE IS:</th>
    </tr>
    <tr><th colspan="2"></th></tr>
        <tr>
            <th>File1 Md5:</th>
            <td>${param.file1Md5}</td>
        </tr>

        <tr>
            <th>File2 Md5:</th>
            <td>${param.file2Md5}</td>
        </tr>

        <tr>
            <th>result</th>
            <td><c:if test="${param.filesEqual}">
                    <span style="color: green">These two files are equal</span>
                </c:if> <c:if test="${!param.filesEqual}">
                    <span style="color: red">These two files are not equal</span>
                </c:if></td>
        </tr>

        <tr>
              <th colspan="2"><a href="." >go back</a></th>
        </tr>
   </table>
  </body>
</html>

Md5Checksum结果
比较两个文件的结果是:
文件1 Md5:
${param.file1Md5}
文件2 Md5:
${param.file2Md5}
结果
这两个文件相等
这两个文件不相等
要下载整个eclipse项目,您可以使用此链接->


祝你好运

告诉我们
nextpage.jsp
。我添加了nextpage.jsp来使用servlet。我也不知道servlet。所以离开这个想法,你是受欢迎的。看一看,以便知道下一步要做什么:-)