我电脑的相关环境是:java version "13.0.2";win10x64;eclipse 2019-12 (4.14.0);ieda 2019.3.2
老师我遇到了下面几个问题:
1.我的XML里没有favicon.ico,但是我没有报空指针异常,极少的时候会报一个莫名的空指针异常。
2.谷歌浏览器报java.lang.StringIndexOutOfBoundsException
3.退出时报java.net.SocketException
以下是遇到这些问题的过程,和我尝试过的办法。
1.我的XML里没有favicon.ico,但是我没有报空指针异常。
<?xml version="1.0" encoding="UTF-8" ?>
<web-app>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.oif.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
<url-pattern>/log</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>register</servlet-name>
<servlet-class>com.oif.servlet.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/reg</url-pattern>
<url-pattern>/register</url-pattern>
<url-pattern>/regis</url-pattern>
</servlet-mapping>
</web-app>
2.然后我试着运行了二十几次,只在中间某次报了一次空指针异常,但是这一次空指针异常也没打印视频里说的浏览器自动发送的请求。我是写了打印url那个测试的。正常的时候是会打印 /log 。很奇怪的是之前和之后代码又没有报异常。
@Override
public void run() {
System.out.println(req.getUrl());
//根据URL创建不同的servlet对象,url在request中存在
Servlet servlet = WebApp.getServlet(req.getUrl());
if (servlet == null){
code = 404;
}
//启动servlet的服务的方法
try {
servlet.service(req,rep);
} catch (Exception e) {
this.code = 500;
}
rep.pushToClient(code);
IOClose.closeAll(client);
}
3.然后我换了个浏览器试了一下,一开始用的IE(绝大多时候都是正常的)。然后我换成了谷歌浏览器。就出现了一个新的问题:(Edge浏览器也是正常运行的,再其他的浏览器就没试过了)

4.最后我就去下载了老师代码,用eclipse导入之后,谷歌浏览器还是一样的问题。(IE是正常的)

然后我把老师代码里关于favicon.ico的部分remove了,看看会不会有空指针异常

运行结果是正常的,没有报空指针。
5.但是我又遇到了一个问题,如果登录之后点击返回按键,然后关闭浏览器就会出现下图的问题。(多次尝试之后发现登录后直接关闭浏览器,或者按了返回按钮F5刷新一下再关闭浏览器就不会有下图的问题。)

6.附上我的代码压缩包
testServer.zip