Servlet错误示例

写在前面

跟着老师打代码 打servlet的简单测试 发生了极其极其极其愚蠢的问题。
特此记录

第一个错误

运行后提示报错 :java.lang.IllegalStateException: Error starting child

问题出现在哪里?

​ 问题出现在web.xml文件配置servlet配置路径有问题!

错误示例

1
2
3
4
<servlet-mapping>
<servlet-name>HttpServletTest</servlet-name>
<url-pattern>HttpServletTest</url-pattern>
</servlet-mapping>

​ 在url路径里要 ///

正确实例

1
2
3
4
<servlet-mapping>
<servlet-name>HttpServletTest</servlet-name>
<url-pattern>/HttpServletTest</url-pattern>
</servlet-mapping>

第二个错误

​ 这个错误就更牛逼了,简直无敌。我大概琢磨了1个小时吧。还耽误了大佬的时间。

​ 原样例是 提供登陆后的跳转,如果直接url路径登陆显示游客登陆,如果传入了username 则显示username登陆。

👇servlet代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String uName = request.getParameter("username");
if(uName == null ){
uName = "游客";
}
response.setContentType("test/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <head><title>Servlet</title></head>");
out.println(" <body>");
out.println("你好,欢迎"+uName+"来到Servlet世界");
out.println(" </body>");
out.println("</html>");
out.flush();
out.close();
}

👇jsp代码

1
2
3
4
5
6
<body>
<form action="HttpServletTest" method="post">
姓名:<input type="text" name="username">
<input type="submit" value="提交">
</form>
</body>

问题来了,无论我怎么登陆,或者不登陆直接url进入界面,网页坚决不出html页面,反而让我下载了一个文件,下载后显示出在jsp页面里写的html文件。

无数次检查路径和配置文件名 没有找到错误 就是跳转后不显示反而是下载。

那么问题出现在哪里???

问题出现在servlet代码里

response.setContentType(“test/html;charset=utf-8”);

单拿出这一句可能就比较明显了。

但是放在上面那一坨里,真的是死活看不到了

正确的样子应该是这个样子👇

response.setContentType(“text/html;charset=utf-8”);

。。。。。。无语ing。。。。。

还是手生的原因哇,这么简单又脑残的问题。 太愚蠢了

写在后面

zsz大佬和我商量以后每天互相提问面试题….其实我有点慌,因为我觉得他都会 (事实可能真的如此。。。)

但是有人愿意带着你一起走的感觉还是 可以的吧。。

然后偷偷立flag 要好好准备,也要好好地应对。

0%