You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP编译错误:req无法解析,月度还款计算Web项目运行异常

JSP编译错误:req无法解析,月度还款计算Web项目运行异常

嘿,我看了你的问题和代码,这个编译错误的原因很明确——你在JSP页面里直接用了req这个变量,但JSP的脚本上下文里根本没声明它!

问题根源

在你的ControllerServlet里,req是doGet/doPost方法的参数,但这个变量只在Servlet的方法范围内有效。JSP页面有自己的内置对象,对应请求的对象默认叫request,而不是req,所以编译器找不到req这个变量,就抛出了“req cannot be resolved”的错误。

快速解决方案

直接把JSP里的req换成JSP内置的request对象就行,这是最简洁标准的做法:

修改你的ServletJsp.jsp第3行:

// 原来的代码
CreditModel model = (CreditModel) req.getAttribute("creditModel");

// 修改后
CreditModel model = (CreditModel) request.getAttribute("creditModel");

额外优化建议

另外,我注意到你在页面里直接输出model.getResultat(),当用户第一次用GET请求访问页面时,这个值是默认的0.0,会显示Mensualite = 0.0,体验不太好。可以加个判断,只有当计算完成后(也就是结果不为0时)才显示:

<div>
<% if(model.getResultat() != 0) { %>
<p> Mensualite = <%=model.getResultat() %> DH </p>
<% } %>
</div>

修改后的完整JSP代码

<%@ page import="web.CreditModel"%>
<%
CreditModel model = (CreditModel) request.getAttribute("creditModel");
%>
<!DOCTYPE html>
<html>
<head>
<title> Crédit bancaire </title>
<meta charset = "utf-8">
<link rel= "stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div>
<form action="hi" method="post">
<table>
<tr>
<td> Montant:</td>
<td><input type="text" name="montant"/></td>
<td>DH</td>
</tr>
<tr>
<td> Taux:</td>
<td><input type="text" name="taux"/></td>
<td>%</td>
</tr>
<tr>
<td> Duree:</td>
<td><input type="text" name="duree"/></td>
<td>mois</td>
</tr>
</table>
<button type="submit">Calculer</button>
</form>
</div>
<div>
<% if(model.getResultat() != 0) { %>
<p> Mensualite = <%=model.getResultat() %> DH </p>
<% } %>
</div>
</body>
</html>

这样修改后,你的GET请求就能正常加载页面,POST请求提交后也能正确显示计算结果了。

备注:内容来源于stack exchange,提问作者yousra_tb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:38:15