这个问题已经在这里有了答案: > Servlet returns “HTTP Status 404 The requested resource (/servlet) is not available” 7个
每当我按下“提交操作”按钮将信息发送到控制器时,我总是收到“ HTTP 404状态-找不到:所请求的资源不可用”,我只是想知道是否有什么可以帮助我解决这个令人沮丧的问题.这是我的代码:
LibraryInfo.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Library Information</title>
</head>
<body>
<form action="/bookServlet" method="POST">
<fieldset style="width:300px">
<legend>Find Book</legend>
<table>
<tr>
<td>ISBN Number:</td>
<td><input type="text" name="isbn" required="required"/></td>
</tr>
</table>
<input type="submit" value="Find Book"/>
</fieldset>
</form>
</body>
</html>
Book.java:
package com.farmani.model;
public class Book {
private int isbn;
private String author;
private String title;
private String status;
public int getIsbn() {
return isbn;
}
public void setIsbn(int isbn) {
this.isbn = isbn;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
ConnectionClass.java
package com.farmani.dao;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ConnectionClass {
private DataSource dataSource;
public ConnectionClass(){
try{
InitialContext context = new InitialContext();
dataSource = (DataSource)context.lookup("jdbc/employee");
}catch(NamingException ex){
ex.printStackTrace();
}
}
public Connection getConnection(){
Connection conn = null;
try{
conn=dataSource.getConnection();
}catch(SQLException ex){
ex.printStackTrace();
}
return conn;
}
}
LibraryDAO.java
package com.farmani.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.farmani.model.Book;
public class LibraryDAO {
private Connection connection;
public LibraryDAO(){
ConnectionClass conn = new ConnectionClass();
connection = conn.getConnection();
}
public Book getBookByISBN(int isbn){
Book bk = new Book();
try{
PreparedStatement preparedStatement = connection.prepareStatement("select * from book where ISBN=?");
preparedStatement.setInt(1,isbn);
ResultSet rs = preparedStatement.executeQuery();
if(rs.next()){
bk.setIsbn(rs.getInt("ISBN"));
bk.setAuthor(rs.getString("author"));
bk.setTitle(rs.getString("title"));
bk.setStatus(rs.getString("status"));
}
}catch(SQLException e){
e.printStackTrace();
}
return bk;
}
}
bookServlet.java:
package com.farmani.controllers;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.farmani.dao.LibraryDAO;
import com.farmani.model.Book;
@WebServlet("/bookServlet")
public class bookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String BOOK_DETAILS="/LibraryDetails";
private LibraryDAO dao;
public bookServlet() {
super();
dao = new LibraryDAO();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int isbn = Integer.parseInt(request.getParameter("isbn"));
Book bk = dao.getBookByISBN(isbn);
request.setAttribute("Book",bk);
RequestDispatcher view = request.getRequestDispatcher(BOOK_DETAILS);
view.forward(request,response);
}
}
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>LibraryWeb</display-name>
<welcome-file-list>
<welcome-file>LibraryInfo.jsp</welcome-file>
</welcome-file-list>
</web-app>
LibraryDetails.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Book Details</title>
</head>
<body>
<CENTER><h1><b>Book Details</b></h1></CENTER>
<ul>
<li>ISBN: ${Book.isbn}</li>
<li>Author: ${Book.author}</li>
<li>Title: ${Book.title }</li>
<li>Status: ${Book.status}</li>
</ul>
</body>
</html>
解决方法:
在formServlet的bookServlet之前给一个句点.像下面.
action =“ ./ bookServlet”