我用Java编写了一个servlet页面,以从MySQL的表中检索记录。然后,我将在JSP页面中调用servlet页面,以在浏览器中显示结果。
MyServlet.java:
@WebServlet(name = "MyServlet")
public class MyServlet extends HttpServlet {
private Statement statement;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection( "jdbc:mysql://126.32.3.11:3306/test", "root", "root");
String sql ="Select * from filequeue;";
statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
String str = "<table border=1><tr><th>UniqueID</th><th>FilePath</th><th>Status</th><th>DateTime</th><th>Error</th></tr>";
while(resultSet.next()){
str += "<tr><td>"+ resultSet.getString(1) + "</td><td>" + resultSet.getString(2)+ "</td><td>" +resultSet.getString(3)+ "</td><td>" +resultSet.getString(4)+ "</td><td>" +resultSet.getString(5)+"</td></tr>";
// display each record
}
str+= "</table>";
out.println(str);
resultSet.close();
statement.close();
conn.close();
}catch(Exception e){
System.out.println(e);
}finally {
out.close();
}
}
}
在我的web.xml中:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<description></description>
<display-name>Servlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class> MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
</web-app>
在我的index.jsp中:
<body>
<h1>Simple File Queue table</h1>
<a href="MyServlet">View table</a>
</body>
但是,当我单击“查看表”时,它显示Error: 404 Not found
。我不知道为什么,因为它应该在页面中显示记录。我在这里犯错了吗?
编辑:
这是我的文件结构的屏幕截图:
答案 0 :(得分:1)
尝试删除<servlet-class> MyServlet</servlet-class>
中的空间,最好从MyServlet类添加一个包。像<servlet-class>org.app.MyServlet</servlet-class>
。
<url-pattern>/Servlet</url-pattern>
表示此servlet的URL是{hostname:port}/Servlet
,而不是MyServlet
(<a href="MyServlet">View table</a>
)
不要忘记应用程序名称。如果您的项目部署名称为“ myapp”(并且索引页面为{host:port} / myapp),则所有servlet都将拦截以下路径:“ {host:port}/myapp/{url-pattern from servlet-mapping}
”。
在web.xml中尝试一下:
<servlet>
<description></description>
<display-name>Servlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
index.jsp:
<body>
<h1>Simple File Queue table</h1>
<a href="/{application-name}/servlet">View table</a>
</body>