我制作的 servlet 有问题。您必须登录系统,还需要注销,我使用文件注册用户。登录工作正常,它从文件中读取用户,但由于某种原因注销没有。按注销按钮时出现错误:
这是类 LogoutServlet 的代码
package nl.hu.sp.lesson1.dynamicexample;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
RequestDispatcher rd = null;
try {
String data = null;
File file = new File(
"C:/apache-tomcat-8.0.5/webapps/LoginAssignment/loggedusers.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while ((data = br.readLine()) != null) {
String[] de = data.split(" ");
if (de[0].equals("vimal")) {
data.trim();
rd = req.getRequestDispatcher("testpage.html");
}
}
rd.forward(req, resp);
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最佳答案
你正在读取一个文本文件并搜索“vimal”,如果找到你正在初始化rd
;如果未找到,则 rd
为空。它在文本文件中找不到“vimal”并且 rd
变为空,因此它抛出空指针异常。
添加空检查
if (rd != null) {
rd.forward(req, resp);
}
关于java - 尝试使用tomcat注销时出现Http 500错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480328/