-
将鼠标放在 [servlet] 您在问题上放置的标签,直到出现一个黑框,然后单击其中的 信息 链接。 这个问题在第一个Hello World示例中已经讨论了很长时间。 – 巴卢斯科 评论 2013年2月1日14:01
1答案
<? xml version=“1.0”encoding=“UTF-8”?> <web-app xmlns=“ http://java.sun.com/xml/ns/javaee " xmlns:xsi=“ http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation=“ http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd " 版本=“3.0”> 测试应用程序 <servlet> 订购servlet <servlet-class>com.example。 TestOrderServlet</servlet-class> </servlet> <服务映射> 订购servlet <url-pattern>/MakeOrder.do </servlet-mapping> </web-app>
<! DOCTYPE html> <html> <头部> <title>测试页面</title> <meta http-equiv=“Content-Type”Content=“text/html;charset=UTF-8”> </头> <body> <h1>测试页面</h1> <form action=“MakeOrder.do”method=“post”> ${errorMessage} <p>输入金额:<input type=“text”name=“itemAmount”/></p> <input type=“submit”value=“submit Data”/> </form> </body> </html>
选项1:将错误消息设置为请求属性
包com.example; 导入javax.servlet.http。 HttpServlet; 导入javax.servlet.http。 HttpServletRequest; 导入javax.servlet.http。 HttpServletResponse; 导入javax.servlet。 ServletException; 导入java.io.IOException; 公共类TestOrderServlet扩展了HttpServlet{ protected void doPost(HttpServletRequest请求,HttpServletResponse响应) 抛出ServletException、IOException{ int amount=0; 尝试{ 金额=Integer.parseInt(request.getParameter(“itemAmount”)); }catch(NumberFormatException e){ //做点什么或什么 } 如果((金额>0)&&(金额<100)){//金额可以 request.getRequestDispatcher(“/index.jsp”).forward(请求,响应); }else{//无效金额 //将一些错误消息设置为请求属性。 if(金额<=0){ request.setAttribute(“errorMessage”,“Please submit a amount of least 1”); } 如果(金额>100){ request.setAttribute(“errorMessage”,“订购的商品数量太大。当前可用数量不超过100个。”); } //使用forward返回order.jsp页面 request.getRequestDispatcher(“/order.jsp”).forward(请求,响应); } } }
选项2:将错误消息设置为会话属性
包com.example; 导入javax.servlet.http。 HttpServlet; 导入javax.servlet.http。 HttpServletRequest; 导入javax.servlet.http。 HttpServletResponse; 导入javax.servlet。 Servlet异常; 导入java.io.IOException; 公共类TestOrderServlet扩展了HttpServlet{ protected void doPost(HttpServletRequest请求,HttpServletResponse响应) 抛出ServletException、IOException{ int amount=0; 尝试{ 金额=Integer.parseInt(request.getParameter(“itemAmount”)); }catch(NumberFormatException e){ //做点什么或什么 } 如果((金额>0)&&(金额<100)){//金额可以 //如果会话没有使用指定名称绑定的对象,则removeAttribute()方法不执行任何操作。 request.getSession().removeAttribute(“错误消息”); request.getRequestDispatcher(“/index.jsp”).forward(请求,响应); }else{//无效金额 //将一些错误消息设置为会话属性。 if(金额<=0){ request.getSession().setAttribute(“errorMessage”,“Please submit a amount of least 1”); } 如果(金额>100){ request.getSession().setAttribute(“errorMessage”,“订购的商品数量太大。当前可用数量不超过100。”); } //使用重定向返回referer页面 response.sendRedirect(request.getHeader(“Referer”)); } } }
-
-
@AnnadatePiyush嗯,这是预期的行为。 浏览器中的“后退”按钮功能可以让您“回到历史”中(通常使用浏览器缓存)。 如果最后一个操作是“错误消息”,则会再次显示。 阅读此处了解更多信息: web浏览器中的“后退”按钮是如何工作的? . – 信息01 评论 2018年4月21日23:38 -