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
相关产品推荐
相关产品推荐

