新人求指点啊,jsp出现404错误,好伤心的。。。

时间:2021-11-19 17:59:57
我在eclipse 3.6版本下运行简单的jsp文件,出现了404错误:
HTTP Status 404 - Servlet jsp is not available

--------------------------------------------------------------------------------

type Status report

message Servlet jsp is not available

description The requested resource (Servlet jsp is not available) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.26

我在网上找了很多的解决办法,还引了jasper-compiler。。。但是都不行。。。求助大家啊。。。

19 个解决方案

#1


首先404是地址跳转的错误,也就是没有找到指定的页面。
1.Tomcat未正常启动,因为在你修改过跳转地址时,有时Tomcat是没有更新源地址的,这是软件上的一个Bug,光光依靠重新部署可能无法解决,你需要删除工程目录部署下(webapps内的工程和work>Catalina>localhost内的工程)的两个工程文件,重新部署即可。这是一个最常见的问题,也是最难排查的问题,但年困惑了我久....
2.跳转地址有误,很基础的错误,试着在浏览器地址栏中看看跳转地址有没有出现重复地址,多余的"/",以及是否正确使用"."和".."。对照修改即可。
3.跳转页面文件格式后缀有误,Jsp还是Html。很少见的马虎错误

#2


tomcat没有问题的话就是你的action有问题,配置文件找不到该action

#3


如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="true"/> 

#4


最好是贴上关键代码
一般是链接错误,web.xml配置错误

#5


引用 1 楼 chunqiuwei 的回复:
首先404是地址跳转的错误,也就是没有找到指定的页面。
1.Tomcat未正常启动,因为在你修改过跳转地址时,有时Tomcat是没有更新源地址的,这是软件上的一个Bug,光光依靠重新部署可能无法解决,你需要删除工程目录部署下(webapps内的工程和work>Catalina>localhost内的工程)的两个工程文件,重新部署即可。这是一个最常见的问题,也是最难排查的……


谢谢大家的回复, 新人求指点啊,jsp出现404错误,好伤心的。。。
我的跳转地址没有错误,跳转页面文件格式后缀也没有错误。。。
主要问题是,html文件可以在tomcat下运行,单单的jsp文件也可以运行,但是html中有表单传值到jsp文件时,跳转jsp文件的过程就报出404的错误。。。。

#6


引用 3 楼 zly361814478 的回复:
如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="true"/>



谢谢你。。。我按照你的方法改了路径 <Context path="/Rosey" docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Rosey"  reloadable="true"/> (这么写不知道对不对 ) ,还是有404的错误

#7


引用 2 楼 zhangzhao608 的回复:
tomcat没有问题的话就是你的action有问题,配置文件找不到该action


我在机房的电脑里可以运行的代码,拿到我自己的电脑上里就出现了404的错误。。。action应该没问题的吧?!

#8


引用绝对路径了?   你本机的路径 和 机房的一样?

#9


可能是工程名被你改了


#10


引用 8 楼 scottxzj 的回复:
引用绝对路径了?   你本机的路径 和 机房的一样?


我是直接放在tomcat的webapps下的文件中进行的操作。。。和机房应该是一个样的吧~
我的html代码如下:
<html>
<b>您好,请您登录!</b>
<title>用户登陆</title>
<form method="get" action="/rosey/Test1.jsp">
<p>用户名:
<input type="text" name="username">
<p>密码:
<input type="password" name="passwords">
<p><input type="submit" name="Submit" value="登录">
<input type="reset" value="重置">
</p>
</form>
</html>

我的jsp代码如下:
<html>
<head>
<title>Test1</title>
</head>
<body>
<%
String username=request.getParameter("username");
String pwd=request.getParameter("passwords");
if(username!=null&&pwd!=null){
    if(username.equals("rosey")&&pwd.equals("123456")){
       //response.sendRedirect("welcome.html");
   session.setAttribute("username",username);
   out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");
}
else
       response.sendRedirect("error.html");
}
else
    response.sendRedirect("error.html");
%>
</body>
</html>

html的代码是显示的出来的,但跳转到jsp页面时,就报错404了 新人求指点啊,jsp出现404错误,好伤心的。。。好忧伤啊

#11


你这就不好说了   你把控制台的所有错误都贴出来吧

#12


配置文件的代码呢?web.xml?
错误 代码呢?

#13


404错误大全,基本都是这三种情况,可以参考一下:http://blog.csdn.net/tianyazaiheruan/article/details/8133220 新人求指点啊,jsp出现404错误,好伤心的。。。

#14


引用 6 楼 Rosey2012 的回复:
引用 3 楼 zly361814478 的回复:如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="……


你写错了吧。应该改成<Context path="/Rosey" docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Rosey\WebRoot"  reloadable="true"/> 

#15


我也是新手。学了有一个月了。我碰到404的错误一般是两种情况,
1,web.xml映射出问题了,我一般都是创建工程的时候把映射的url改掉了,但是自己不知道,怎么访问也访问不到。
2,挺傻的一个错误,就是把文件没有直接放到webroot目录下,或者是放到别的目录,路径没写对。我曾经看到一个哥们,竟然把jsp文件放在了src目录下,当时我看完就崩溃了。哦 当然,我用的是myecplise8.6。大家懂得。
引用
#5

如果是你单独访问两个文件都能访问到的话,如果你的提交路径也没有错的话,我真的关注一下楼主到底哪出问题了,我还真想不通,希望楼主解决问题后告诉我一下,长长见识。

#16


out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");

是这个jsp吗,
你这样改一下再试试吧,应该可以了:
out.print("<a href='" + request.getContextPath() + "/SessionTest1.jsp'>访问授权页面</a>");

response.sendRedirect("error.html");
最好也改成
response.sendRedirect(request.getContextPath() + "/error.html");

#17


引用 15 楼 softbing 的回复:
我也是新手。学了有一个月了。我碰到404的错误一般是两种情况,
1,web.xml映射出问题了,我一般都是创建工程的时候把映射的url改掉了,但是自己不知道,怎么访问也访问不到。
2,挺傻的一个错误,就是把文件没有直接放到webroot目录下,或者是放到别的目录,路径没写对。我曾经看到一个哥们,竟然把jsp文件放在了src目录下,当时我看完就崩溃了。哦 当然,我用的是……


新人求指点啊,jsp出现404错误,好伤心的。。。很不好意思啊,我的问题解决了,是个很傻的错误,我的文件夹名字是Rosey,写的时候没注意大小写,输网址和action那里都写了rosey。。。所以就错了。。。。

#18


引用 16 楼 s478853630 的回复:
out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");

是这个jsp吗,
你这样改一下再试试吧,应该可以了:
out.print("<a href='" + request.getContextPath() + "/SessionTest1.jsp'>访问授权页面</a>");

response.sendRe……
新人求指点啊,jsp出现404错误,好伤心的。。。
谢谢你好心人,我的问题解决了。。。说出来好惭愧的,很白痴的一个错误,纠结了好长时间,还给大家添麻烦。。。不好意思的

#19


 各位大神 去帮忙   出现了404 
login.jsp页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>登录页面</title>
</head>
<body> 
<form action="doLodin.jsp" method="post">
用户名:<input type="text" name="userName" /><br />
密&nbsp;码<input type="password" name="pwd" /><br />
<input type="submit" value="登录" />
</form>
</body>
</html>


doLogin页面代码:
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>登录处理页面</title>
</head>
<body>
<% 
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("userName").trim();
String pass=request.getParameter("pwd").trim();
//验证是否登录成功
boolean valid=false;
//连接数据库处理
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Test","test");
String sql="select * from Test where username=? and pwd=?";
ps=conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,pass);
rs=ps.executeQuery();
if(rs.next()){
valid=true;
//设置用户的登录信息
session.setAttribute("LOGIN",name);
//设置session的过期时间
session.setMaxInactiveInterval(10*60);
}
}
catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
}
if(valid){
request.getRequestDispatcher("admin.jsp").forward(request,response);
}else{
response.sendRedirect("index.jsp"); 
}
%> 
</body>
</html>

admin.jsp中:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>取出操作</title>
</head>
<body>
<% 
//取出
String login=(String)session.getAttribute("LOGIN");
if(login==null){
//转到重新登录
response.sendRedirect("login.jsp");
}
%>
</body>
</html>


怎么回事?一直是在doLogin.jsp页面中报404

各位帮帮忙!!!

#1


首先404是地址跳转的错误,也就是没有找到指定的页面。
1.Tomcat未正常启动,因为在你修改过跳转地址时,有时Tomcat是没有更新源地址的,这是软件上的一个Bug,光光依靠重新部署可能无法解决,你需要删除工程目录部署下(webapps内的工程和work>Catalina>localhost内的工程)的两个工程文件,重新部署即可。这是一个最常见的问题,也是最难排查的问题,但年困惑了我久....
2.跳转地址有误,很基础的错误,试着在浏览器地址栏中看看跳转地址有没有出现重复地址,多余的"/",以及是否正确使用"."和".."。对照修改即可。
3.跳转页面文件格式后缀有误,Jsp还是Html。很少见的马虎错误

#2


tomcat没有问题的话就是你的action有问题,配置文件找不到该action

#3


如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="true"/> 

#4


最好是贴上关键代码
一般是链接错误,web.xml配置错误

#5


引用 1 楼 chunqiuwei 的回复:
首先404是地址跳转的错误,也就是没有找到指定的页面。
1.Tomcat未正常启动,因为在你修改过跳转地址时,有时Tomcat是没有更新源地址的,这是软件上的一个Bug,光光依靠重新部署可能无法解决,你需要删除工程目录部署下(webapps内的工程和work>Catalina>localhost内的工程)的两个工程文件,重新部署即可。这是一个最常见的问题,也是最难排查的……


谢谢大家的回复, 新人求指点啊,jsp出现404错误,好伤心的。。。
我的跳转地址没有错误,跳转页面文件格式后缀也没有错误。。。
主要问题是,html文件可以在tomcat下运行,单单的jsp文件也可以运行,但是html中有表单传值到jsp文件时,跳转jsp文件的过程就报出404的错误。。。。

#6


引用 3 楼 zly361814478 的回复:
如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="true"/>



谢谢你。。。我按照你的方法改了路径 <Context path="/Rosey" docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Rosey"  reloadable="true"/> (这么写不知道对不对 ) ,还是有404的错误

#7


引用 2 楼 zhangzhao608 的回复:
tomcat没有问题的话就是你的action有问题,配置文件找不到该action


我在机房的电脑里可以运行的代码,拿到我自己的电脑上里就出现了404的错误。。。action应该没问题的吧?!

#8


引用绝对路径了?   你本机的路径 和 机房的一样?

#9


可能是工程名被你改了


#10


引用 8 楼 scottxzj 的回复:
引用绝对路径了?   你本机的路径 和 机房的一样?


我是直接放在tomcat的webapps下的文件中进行的操作。。。和机房应该是一个样的吧~
我的html代码如下:
<html>
<b>您好,请您登录!</b>
<title>用户登陆</title>
<form method="get" action="/rosey/Test1.jsp">
<p>用户名:
<input type="text" name="username">
<p>密码:
<input type="password" name="passwords">
<p><input type="submit" name="Submit" value="登录">
<input type="reset" value="重置">
</p>
</form>
</html>

我的jsp代码如下:
<html>
<head>
<title>Test1</title>
</head>
<body>
<%
String username=request.getParameter("username");
String pwd=request.getParameter("passwords");
if(username!=null&&pwd!=null){
    if(username.equals("rosey")&&pwd.equals("123456")){
       //response.sendRedirect("welcome.html");
   session.setAttribute("username",username);
   out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");
}
else
       response.sendRedirect("error.html");
}
else
    response.sendRedirect("error.html");
%>
</body>
</html>

html的代码是显示的出来的,但跳转到jsp页面时,就报错404了 新人求指点啊,jsp出现404错误,好伤心的。。。好忧伤啊

#11


你这就不好说了   你把控制台的所有错误都贴出来吧

#12


配置文件的代码呢?web.xml?
错误 代码呢?

#13


404错误大全,基本都是这三种情况,可以参考一下:http://blog.csdn.net/tianyazaiheruan/article/details/8133220 新人求指点啊,jsp出现404错误,好伤心的。。。

#14


引用 6 楼 Rosey2012 的回复:
引用 3 楼 zly361814478 的回复:如果上述说的 都不行的话, 你就把你的工程名 关联下,   在conf 文件下的server.xml中配置,

 <Context path="/file" docBase="E:\Myeclipse\apache-tomcat-6.0.35\webapps\这里是你的工程名\WebRoot"  reloadable="……


你写错了吧。应该改成<Context path="/Rosey" docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Rosey\WebRoot"  reloadable="true"/> 

#15


我也是新手。学了有一个月了。我碰到404的错误一般是两种情况,
1,web.xml映射出问题了,我一般都是创建工程的时候把映射的url改掉了,但是自己不知道,怎么访问也访问不到。
2,挺傻的一个错误,就是把文件没有直接放到webroot目录下,或者是放到别的目录,路径没写对。我曾经看到一个哥们,竟然把jsp文件放在了src目录下,当时我看完就崩溃了。哦 当然,我用的是myecplise8.6。大家懂得。
引用
#5

如果是你单独访问两个文件都能访问到的话,如果你的提交路径也没有错的话,我真的关注一下楼主到底哪出问题了,我还真想不通,希望楼主解决问题后告诉我一下,长长见识。

#16


out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");

是这个jsp吗,
你这样改一下再试试吧,应该可以了:
out.print("<a href='" + request.getContextPath() + "/SessionTest1.jsp'>访问授权页面</a>");

response.sendRedirect("error.html");
最好也改成
response.sendRedirect(request.getContextPath() + "/error.html");

#17


引用 15 楼 softbing 的回复:
我也是新手。学了有一个月了。我碰到404的错误一般是两种情况,
1,web.xml映射出问题了,我一般都是创建工程的时候把映射的url改掉了,但是自己不知道,怎么访问也访问不到。
2,挺傻的一个错误,就是把文件没有直接放到webroot目录下,或者是放到别的目录,路径没写对。我曾经看到一个哥们,竟然把jsp文件放在了src目录下,当时我看完就崩溃了。哦 当然,我用的是……


新人求指点啊,jsp出现404错误,好伤心的。。。很不好意思啊,我的问题解决了,是个很傻的错误,我的文件夹名字是Rosey,写的时候没注意大小写,输网址和action那里都写了rosey。。。所以就错了。。。。

#18


引用 16 楼 s478853630 的回复:
out.print("<a href='SessionTest1.jsp'>访问授权页面</a>");

是这个jsp吗,
你这样改一下再试试吧,应该可以了:
out.print("<a href='" + request.getContextPath() + "/SessionTest1.jsp'>访问授权页面</a>");

response.sendRe……
新人求指点啊,jsp出现404错误,好伤心的。。。
谢谢你好心人,我的问题解决了。。。说出来好惭愧的,很白痴的一个错误,纠结了好长时间,还给大家添麻烦。。。不好意思的

#19


 各位大神 去帮忙   出现了404 
login.jsp页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>登录页面</title>
</head>
<body> 
<form action="doLodin.jsp" method="post">
用户名:<input type="text" name="userName" /><br />
密&nbsp;码<input type="password" name="pwd" /><br />
<input type="submit" value="登录" />
</form>
</body>
</html>


doLogin页面代码:
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>登录处理页面</title>
</head>
<body>
<% 
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("userName").trim();
String pass=request.getParameter("pwd").trim();
//验证是否登录成功
boolean valid=false;
//连接数据库处理
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Test","test");
String sql="select * from Test where username=? and pwd=?";
ps=conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,pass);
rs=ps.executeQuery();
if(rs.next()){
valid=true;
//设置用户的登录信息
session.setAttribute("LOGIN",name);
//设置session的过期时间
session.setMaxInactiveInterval(10*60);
}
}
catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
}
if(valid){
request.getRequestDispatcher("admin.jsp").forward(request,response);
}else{
response.sendRedirect("index.jsp"); 
}
%> 
</body>
</html>

admin.jsp中:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>取出操作</title>
</head>
<body>
<% 
//取出
String login=(String)session.getAttribute("LOGIN");
if(login==null){
//转到重新登录
response.sendRedirect("login.jsp");
}
%>
</body>
</html>


怎么回事?一直是在doLogin.jsp页面中报404

各位帮帮忙!!!

#20