错误:文.件[.jsp] 未找到

遇到报错:错误:文.件[ClassTest6.jsp] 未找到

img

问题似乎出在重定向上。
先上代码:

Servlet:

package moon.sum;
import tom.jiafei.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/classtestsix")

public class ClassTest6_Servlet extends HttpServlet{
    public void init(ServletConfig config) throws ServletException{
        super.init(config);
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        ClassTest6_Bean digitBean=null;
        digitBean=new ClassTest6_Bean();
        request.setAttribute("digitBean",digitBean);
        String sideone=request.getParameter("sideone");
        String sidetwo=request.getParameter("sidetwo");
        String sidethree=request.getParameter("sidethree");
        if(sideone==null||sidetwo==null||sidethree==null)
            return;
        if(sideone.length()==0||sidetwo.length()==0||sidethree.length()==0)
            return;
        double sideA=Double.parseDouble(sideone);
        double sideB=Double.parseDouble(sidetwo);
        double sideC=Double.parseDouble(sidethree);
        if(sideA+sideB<sideC||sideA+sideC<sideB||sideB+sideC<sideA)
            return;
        double area=0;
        double re=0;
        re=(sideA+sideB+sideC)/2;
        area=Math.sqrt(re*(re-sideA)*(re-sideB)*(re-sideC));
        digitBean.setSideone(sideA);
        digitBean.setSidetwo(sideB);
        digitBean.setSidethree(sideC);
        digitBean.setArea(area);
        RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");
        dispatcher.forward(request,response);
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        doPost(request,response);
    }
}

Bean:

package tom.jiafei;

public class ClassTest6_Bean {
    double sideone=3,sidetwo=4,sidethree=5;
    double area=6;
    public void setSideone(double n){
        sideone=n;
    }
    public void setSidetwo(double n){
        sidetwo=n;
    }
    public void setSidethree(double n){
        sidethree=n;
    }
    public void setArea(double n){
        area=n;
    }
    public double getSideone(){
        return sideone;
    }

    public double getSidetwo() {
        return sidetwo;
    }

    public double getSidethree() {
        return sidethree;
    }
    public double getArea(){
        return area;
    }
}

jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="digitBean" class="tom.jiafei.ClassTest6_Bean" scope="request"/>
<HTML><body bgcolor="#ffebcd">
<style>
    #textStyle{
        font-family: 宋体;font-size: 14px;color: black;
    }
</style>
<p id="textStyle">
<form action="../classtestsix" method=post>
    请输入三边:<br>
    第一边:<input type="text" name="sideone" value=<%=digitBean.getSideone()%> side=6/><br>
    第二边:<input type="text" name="sidetwo" value=<%=digitBean.getSidetwo()%> side=6/><br>
    第三边:<input type="text" name="sidethree" value=<%=digitBean.getSidethree()%> side=6/><br>
    <input type="submit" name="提交">
</form>
    你输入的三边为:<jsp:getProperty name="digitBean" property="sideone"/>,
    <jsp:getProperty name="digitBean" property="sidetwo"/>,
    <jsp:getProperty name="digitBean" property="sidethree"/>
    <br>三角形面积为 S=<jsp:getProperty name="digitBean" property="area"/>
</p></body></HTML>


各个包的路径:

img

目录结构问题
(如果你修改过目录的话,注意大小写问题,Tomcat可不惯着你。
getRequestDispatcher可以用相对路径,但是默认是/根下面,而你是带目录的目录结构,所以必然要带上目录才可以的呢。

RequestDispatcher dispatcher=request.getRequestDispatcher("/ClassTest6/ClassTest6.jsp");

img

什么操作报这个文件不存在?
webapp里面内容也需要列出来看下

ClassTest6.jsp文件在哪个目录下,检查一下是不是少了路径或者文件名写错了。


RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");
改为

RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6/ClassTest6.jsp");

img

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的信息和代码,可能是因为您的JSP文件路径不正确导致了这个错误。您的Servlet中使用了以下代码:

RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");
dispatcher.forward(request,response);

这里的ClassTest6.jsp是相对于Servlet的路径,即Servlet所在的目录下。而根据您提供的代码和包路径,ClassTest6.jsp应该在/moon/sum目录下,因此您需要将上面的代码更改为:

RequestDispatcher dispatcher=request.getRequestDispatcher("/moon/sum/ClassTest6.jsp");
dispatcher.forward(request,response);

这样可以保证JSP文件的正确路径。另外,您还需要确保JSP文件的文件名正确,没有包含特殊字符或者文件扩展名缺失等问题。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/343110
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:基于jsp的bbs论坛-(6)java中对servlet的实现
  • 除此之外, 这篇博客: java面试之Servlet/JSP面试题中的 10、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

转发必须使用绝对路径,即以【/】斜杠开头,可以看下getRequestDispatcher方法的源码就知道了。

RequestDispatcher dispatcher=request.getRequestDispatcher("/ClassTest6/ClassTest6.jsp");
dispatcher.forward(request,response);

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据错误提示“文.件[ClassTest6.jsp] 未找到”,应该是无法找到对应的 JSP 文件,因此建议确认以下几点:

  1. 确认 JSP 文件是否存在于正确的路径下。

根据 Servlet 中的代码:RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");,可以知道 JSP 文件应该位于当前 Servlet 的同级目录下。因此需要确认这个 JSP 文件是否存在于正确的位置下。

  1. 确认 JSP 文件名是否正确

根据错误提示“文.件[ClassTest6.jsp] 未找到”,推测 JSP 文件名应该为 ClassTest6.jsp,需要确认 JSP 文件名是否正确,大小写是否匹配。

  1. 确认项目部署路径是否正确

如果以上两点确认无误,那么可以尝试检查一下项目部署路径是否正确。如果使用的是 Tomcat 等容器,可以在控制台中查看项目的部署路径,确认 JSP 文件是否存在于正确的位置下。

如果以上方法无法解决问题,建议提供完整的项目结构和代码,以便更好地定位问题原因。
如果我的回答解决了您的问题,请采纳!