日期:2014-05-18  浏览次数:20575 次

关于页面的一些问题(不知道是跳转出问题,还是其他出问题)
要实现如下功能
如果卡号、密码不匹配,系统提示卡号或者密码不正确,然后保持页面不变,让用户重新输入卡号和密码进行余额查询。

我的目前设计是
index.jsp用来显示首页(即卡号,密码输入等框所在页)(<jsp:include page="contentOfIndex.jsp">,由于要去掉html,head头等,所以主要内容都在contentOfIndex里,首页即用incude导入
error.jsp用来显示错误信心,但里面用<jsp:include page="contentOfIndex.jsp"/>,所以既会出现错误信息,但又有首页内容.

但是目前运行时遇到一个问题就是,第一次输入错误后,第2次输入正确却不能显示.只显示一个空白的页面(http://localhost:8080/queryAndValueServlet),我的jsp都是利用queryAndValueServlet这个类来处理,里面无论使用request.getRequestDispatcher("/messageError.jsp").forward(request, response);还是使用response.sendRedirect("/messageError.jsp");都是一样的结果,就是空白页,偶尔还弹出一个文件要你保存(但保存完了,还是空白页)..

希望大家指点下,一些基本的错误应该没错,如URL输入,基本的语法.不知道是哪里有问题,第一次直接输入正确的信息,点提交可以正确显示,但若第一次先错误,第2次(此时在错误界面的jsp文件)输入正确提交就不能显示了.
还有希望能解释一下两个跳转的不同,似乎第一个只是将jsp文件包含在servlet中URL地址不变,第二个URL发生跳转了.


------解决方案--------------------
估计出错后跳转的不是原登录页面,再次提交的时候路径就已经不对.
------解决方案--------------------
你在index.jsp 里面设一个变量,这个变量的值来自与经验证后从queryAndValueServlet这个类传过来的,如果这个变量的值为null,说明是第一次进入index.jsp就不管他,如果这个变量不为null且有值,就说明当前页面是从验证过的Servlet跳转过来的,就可以输出提示账户或密码的错误信息
------解决方案--------------------
应该是LZ路径的问题,你第一次进入Servlet后,URL已经变成了Servlet的路径,所以第二次找不到页面,
建议把路径都改成绝对路径。。
------解决方案--------------------
你第一次进来的时候是登陆吧,如果输入错误为什么要保持本页面不变呀,history.go(-1)不可以吗?让用户重新输入呀。也许我也没理解楼主的意思。

第二个问题嘛,request.getRequestDispatcher("/messageError.jsp").forward(request,response);这个是服务器间转向,你的请求参数一直保存着;而response.sendRedirect("/messageError.jsp");这是是客户间跳转,就如你重新请求了一次,以前的参数你需要的话要带过去的。

张孝祥的那本javaWeb开发内幕讲得详细你可以去看一下

request.getRequestDispatcher("/messageError.jsp").forward(request,response); 这种情况在Web开发中当系统有三级的时候,就是传说中的MVC情况是非常常用的