遇到报错:错误:文.件[ClassTest6.jsp] 未找到
问题似乎出在重定向上。
先上代码:
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>
各个包的路径:
目录结构问题
(如果你修改过目录的话,注意大小写问题,Tomcat可不惯着你。)
getRequestDispatcher可以用相对路径,但是默认是/根下面,而你是带目录的目录结构,所以必然要带上目录才可以的呢。
RequestDispatcher dispatcher=request.getRequestDispatcher("/ClassTest6/ClassTest6.jsp");
什么操作报这个文件不存在?
webapp里面内容也需要列出来看下
ClassTest6.jsp文件在哪个目录下,检查一下是不是少了路径或者文件名写错了。
RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");
改为
RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6/ClassTest6.jsp");
该回答通过自己思路及引用到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文件的文件名正确,没有包含特殊字符或者文件扩展名缺失等问题。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
是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 文件,因此建议确认以下几点:
根据 Servlet 中的代码:RequestDispatcher dispatcher=request.getRequestDispatcher("ClassTest6.jsp");
,可以知道 JSP 文件应该位于当前 Servlet 的同级目录下。因此需要确认这个 JSP 文件是否存在于正确的位置下。
根据错误提示“文.件[ClassTest6.jsp] 未找到”,推测 JSP 文件名应该为 ClassTest6.jsp,需要确认 JSP 文件名是否正确,大小写是否匹配。
如果以上两点确认无误,那么可以尝试检查一下项目部署路径是否正确。如果使用的是 Tomcat 等容器,可以在控制台中查看项目的部署路径,确认 JSP 文件是否存在于正确的位置下。
如果以上方法无法解决问题,建议提供完整的项目结构和代码,以便更好地定位问题原因。
如果我的回答解决了您的问题,请采纳!