现在有一个form,用户填写一些信息,然后提交,提交的时候发现有一项内容不符合要求,这时要返回刚刚的页面,而且要记录用户填写的信息,要求是重新redirect原来的页面,我想问一下,redirect的话怎么保存原来用户填写的信息,因为form的内容较多,信息量比较大。
解决方案 »
- web项目
- 简单的树型结构。。。不用从数据库读取,写死
- jdbc与mysql连接问题
- servlet乱码问题?
- 救命呀!!!大侠们:为什么我的jdbc(sqlserver)总是报classnotfound错?
- 再问rainshow
- 100分求购Struts,MVC学习程序
- 想借助大家的智慧讨论一下,中国的人口会不会少。
- 怎么样把session.getValue("abc")取出的值转化为任意类型
- 怎么才能让javax.swing.*包里的类能在JApplet小应用程序里在IE里能直接运行??急!
- Java sftp 使用JSch类的问题
- 由于报表导出Excel查询时间长,所以需要点击导出Excel前禁用按钮,导出后启用按钮
用redirect跳转request中的值将不会保存,跳转后的页面无法拿到值
建议用forward内部转发,将form表单请求的值保存在一个form的javaBean对象中
然后在request.setAttribute中保存该对象,当验证失败后将对象中的值设置到
form表单的文本域中即可
如果用ajax页面无刷新,也就不需要保存填写的值了。因为页面没有刷新,值是再的。用异步验证
那么就只能使用session了。将表单信息封装到一个pojo中,验证前提交的时候,将封装表单信息的pojo放置到session中。如果出现错误消息,在页面form中,可以直接通过value=${sessionSocpe.pojo.属性}这样获取。如果验证通过的时候,为了节约session资源,我们可以将session中的pojo 进行remove掉。
1.jsp:
<form action="doservlet">
<input type="text" name="pas1" value="<%=request.getParameter("pas1")%>">
</form>doservlet.java:
String str = request.getParameter("pas1");
验证以后
response.SendRedirect("1.jsp?pas1="+str);
1、form里面有文件上传,所以无法使用ajax,即使用ajax预先判断参数也不行,因为上传文件有可能产生异常;
2、不能使用forward,使用forwar页面刷新会再次提交;
3、关于session和cookie,因为form里面用到rich text编辑器,内容可能会到达几十K甚至更多,cookie可能无法实现,至于session,内容大的时候好像也有点性能问题。
除了这几种方法之外,还有没有其他的方法。