我的第一篇blog "About java web"
在学习Java web开发的初期遇到的一些问题汇总
访问项目时出现500错误
那么此时我们可以判定是服务器内容的错误,接着我们就从代码中排查可能出现的原因。
代码如下:
package com.cy.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadFile 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 {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write("Hello!");
}
}
相关的配置代码文件如下(web.xml):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>UploadFile</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>uploadFile</servlet-name>
<servlet-class>com.cy.servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadFile</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
</web-app>
通过我们的对错误的分析和代码的排查可以确定错误的位置应该是配置文件中:
1.错误的描述是:
java.lang.ClassNotFoundException: com.cy.servlet
我们把它翻译成汉语:意思是类找不到异常:并且告诉我们找不到的类在com.cy.servlet
这个包下。所以我们就去这个类中去找找看。发现我们并没有把类名写到配置文件的<servlet-class>com.cy.servlet</servlet-class>
下,所以comcat就找不该类。此时我们就把我们类名加入进去就可以正常访问了。完整的应该是<servlet-class>com.cy.servlet.UploadFile</servlet-class>