This question already has answers here:
Servlet returns “HTTP Status 404 The requested resource (/servlet) is not available”
(10个答案)
3年前关闭。
环境:
Ubuntu 12.04
Apache Tomcat 7.0.27
Eclipse 4.2(Juno)
Servlet 3.0
Openjdk 7
尝试使用Servlet 3.0做FileCounter时,我在URL上收到此错误
http:// localhost:8080 / wtp.filecounter /。
不必是http:// localhost:8080 / wtp.filecounter / FileCounter吗?
Estado HTTP 404-
通知类型
门萨耶
descripciónEl recurso requerido()没有错误。
Apache Tomcat / 7.0.26
结构体
FileDao.java读取并更新文件访问者
读取计数器并以纯文本形式写入的FileCounter.java Servlet
web.xml
有什么问题的主意吗?
当我在服务器上运行时,项目打开为“ http:// localhost:8080 / wtp.filecounter /”,而不是“ http:// localhost:8080 / wtp.filecounter / FileCounter”,第二个URL有效
(10个答案)
3年前关闭。
环境:
Ubuntu 12.04
Apache Tomcat 7.0.27
Eclipse 4.2(Juno)
Servlet 3.0
Openjdk 7
尝试使用Servlet 3.0做FileCounter时,我在URL上收到此错误
http:// localhost:8080 / wtp.filecounter /。
不必是http:// localhost:8080 / wtp.filecounter / FileCounter吗?
Estado HTTP 404-
通知类型
门萨耶
descripciónEl recurso requerido()没有错误。
Apache Tomcat / 7.0.26
结构体
wtp.filecounter
dao
FileDao.java
servlets
FileCounter.java
FileDao.java读取并更新文件访问者
package wtp.filecounter.dao;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class FileDao {
public int getCount() {
int count = 0;
// Load the file with the counter
FileReader fileReader = null;
BufferedReader bufferedReader = null;
PrintWriter writer = null ;
try {
File f = new File("FileCounter.initial");
if (!f.exists()) {
f.createNewFile();
writer = new PrintWriter(new FileWriter(f));
writer.println(0);
}
if (writer !=null){
writer.close();
}
fileReader = new FileReader(f);
bufferedReader = new BufferedReader(fileReader);
String initial = bufferedReader.readLine();
count = Integer.parseInt(initial);
} catch (Exception ex) {
if (writer !=null){
writer.close();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return count;
}
public void save(int count) throws Exception {
FileWriter fileWriter = null;
PrintWriter printWriter = null;
fileWriter = new FileWriter("FileCounter.initial");
printWriter = new PrintWriter(fileWriter);
printWriter.println(count);
// Make sure to close the file
if (printWriter != null) {
printWriter.close();
}
}
}
读取计数器并以纯文本形式写入的FileCounter.java Servlet
package wtp.filecounter.servlets;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import wtp.filecounter.dao.FileDao;
/**
* Servlet implementation class FileCounter
*/
@WebServlet("/FileCounter")
public class FileCounter extends HttpServlet {
private static final long serialVersionUID = 1L;
int count;
private FileDao dao;
public void init() throws ServletException {
dao = new FileDao();
try {
count = dao.getCount();
} catch (Exception e) {
getServletContext().log("An exception occurred in FileCounter", e);
throw new ServletException("An exception occurred in FileCounter"
+ e.getMessage());
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Set a cookie for the user, so that the counter does not increate
// everytime the user press refresh
HttpSession session = request.getSession(true);
// Set the session valid for 5 secs
session.setMaxInactiveInterval(5);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
if (session.isNew()) {
count++;
}
out.println("This site has been accessed " + count + " times.");
}
public void destroy() {
super.destroy();
try {
dao.save(count);
} catch (Exception e) {
e.printStackTrace();
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>wtp.filecounter</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>
</web-app>
有什么问题的主意吗?
当我在服务器上运行时,项目打开为“ http:// localhost:8080 / wtp.filecounter /”,而不是“ http:// localhost:8080 / wtp.filecounter / FileCounter”,第二个URL有效
最佳答案
您的servlet被映射到/FileCounter
(这就是@WebServlet("/FileCounter")
注释所做的)。它是Web应用程序的一部分,部署在某些上下文路径下(假设上下文路径为/myFirstWebApp
)。因此,调用servlet的URL是:
http://localhost:8080/myFirstWebApp/FileCounter
关于tomcat - Servlet 3.0 HTTP 404-请求的资源()不可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13430990/
10-11 00:51