gpt4 book ai didi

java - Tomcat-Servlet 不打印所有内容

转载 作者:行者123 更新时间:2023-11-28 22:18:35 24 4
gpt4 key购买 nike

我有以下代码,用于在执行 BASIC 身份验证时打印输入的用户名和密码,但是当我将代码修改为 java 程序后尝试在本地运行它时,它如何不打印它。以下是成功验证后浏览器中的输出。

Output Snapshot

下面还有我使用的 Servlet 代码。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Base64;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("This is the Test Servlet");

Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
out.print("<br/>Header Name: <em>" + headerName);
String headerValue = request.getHeader(headerName);
out.print("</em>, Header Value: <em>" + headerValue);
out.println("</em>");
}
out.println("<hr/>");
String authHeader = request.getHeader("authorization");
out.println("User and Password in Base64 encoding--------------------------->>>" + authHeader);
//String encodedValue = authHeader.split(" ")[1];
String encodedValue = authHeader;
//byte arr[] = Base64.decodeBase64(encodedValue);
byte[] asBytes = Base64.getDecoder().decode(encodedValue);
out.println(new String(asBytes, "utf-8"));
out.println("Not printing ????");
out.println("</em>");
}

}

最佳答案

问题是在这一行触发的:

out.println(new String(asBytes, "utf-8")); 

因为String没有这样的构造函数。您可能打算使用 this constructor :

out.println(new String(asBytes,  Charset.forName("UTF-8"))); 

关于java - Tomcat-Servlet 不打印所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32732734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com