用HttpSession实现最先显示<select>中被选中的项
2013-04-08 20:00
477 查看
1.背景:
我们都知道<select>控件是下拉选择框,在JSP中当我们选中其中某一项提交后,被选中的值会提交到Servlet类里进行处理。而当再返回某个跟提交页类似的页时,页面上有个同样的<select>,选择框里的几项是从数据库里某个表读出来的,这时不用HttpSession加以处理,select控件中的值的顺序还是数据库那个表里的顺序,而不是我们选择的那个值了,下面就让我们来解决这个问题吧。
2.Session解决:
表单1:
表单1将两个<select>控件被选的值提交到Servlet类里进行进一步处理,在servlet类里将表单1里选好的两项分别置到Session里,处理完了后跳转到表单2.
表单2:
注:
表单1里有两个<select>和一个提交按钮,并且第一个select元素的选项是从某个数据库的表里选出来的。当我们选好这两项后点击提交,到Servlet类里进行处理,将在表单1里选好的两项置到Session中,处理完毕后跳转到表单2。这时,为了让表单2最先显示我们在表单1里选择的那两项,就采取了Session的方法。即从Session中拿出这两个选项,先输出,然后while循环里读数据库的那些如果有Session里那项就continue跳过。
我们都知道<select>控件是下拉选择框,在JSP中当我们选中其中某一项提交后,被选中的值会提交到Servlet类里进行处理。而当再返回某个跟提交页类似的页时,页面上有个同样的<select>,选择框里的几项是从数据库里某个表读出来的,这时不用HttpSession加以处理,select控件中的值的顺序还是数据库那个表里的顺序,而不是我们选择的那个值了,下面就让我们来解决这个问题吧。
2.Session解决:
表单1:
<% DBManager db=new DBManager(); String sql="select * from s"; ResultSet rs=db.executeQuery(sql); %> <form action="Servlet" method="post"> <div class="e"><select name="E"> <% while(rs.next()){ String securityName=rs.getString("name"); out.println("<option value='"+Name+"'>"+Name+"</option>"); } %> </select><select name="TimeSelect"> <option value="1 hour">1 hour</option> <option value='1 year'>1 week</option> <option value='1 year'>1 month</option> <option value='1 year'>1 year</option> </select> <input type='submit' class="btnIconLeft mr10" value='查询' /> </div> </form> <% if(rs!=null) rs.close(); db.closeCon(); %>
表单1将两个<select>控件被选的值提交到Servlet类里进行进一步处理,在servlet类里将表单1里选好的两项分别置到Session里,处理完了后跳转到表单2.
表单2:
<form action="Servlet" method="post"> <div class="e"><select name="E"> <% HttpSession Session=request.getSession(); String name=(String)Session.getAttribute("name");//Session中取出在表单1里第一个<select>选好的选项 String time=(String)Session.getAttribute("time"); out.println("<option value='"+name+"'>"+name+"</option>");//先输出表单1里选好的 while(rs.next()){ String securityName=rs.getString("name"); if(securityName.equals(name))//读数据库,如果是Session里的,则跳过 continue; out.println("<option value='"+Name+"'>"+Name+"</option>"); } %> </select> <select name="TimeSelect"> <% out.println("<option value='"+time+"'>"+time+"</option>"); if(!"1 hour".equals(time)) out.println("<option value='1 hour'>1 hour</option>"); if(!"1 week".equals(time)) out.println("<option value='1 week'>1 week</option>"); if(!"1 month".equals(time)) out.println("<option value='1 month'>1 month</option>"); if(!"1 year".equals(time)) out.println("<option value='1 year'>1 year</option>"); %> </select> <input type='submit' class="btnIconLeft mr10" value='查询' /> </div> </form>
注:
表单1里有两个<select>和一个提交按钮,并且第一个select元素的选项是从某个数据库的表里选出来的。当我们选好这两项后点击提交,到Servlet类里进行处理,将在表单1里选好的两项置到Session中,处理完毕后跳转到表单2。这时,为了让表单2最先显示我们在表单1里选择的那两项,就采取了Session的方法。即从Session中拿出这两个选项,先输出,然后while循环里读数据库的那些如果有Session里那项就continue跳过。
相关文章推荐
- 开发日志:<s:select>标签显示从后台传过来的空格问题
- FreeMarker编写一个用于实现<select/>效果的通用指令
- Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示
- AndroidStudio 中使用 百度地图 <四> 百度地图实现打开就显示当前位置,个人摘要
- Android实战简易教程<五十一>(ListView实现子控件的动态显示和隐藏、checkbox全选和反选)
- <Unity UGUI>使用c#反射实现UGUI文本显示的国际化
- TreeList + <select />+Ajax实现按部门选择员工
- 如何让<s:doubleselect>标签的两个下拉框在一行显示
- 用jQuery实现<select>选项上下移动
- struts2中<s:doubleselect/> 在同一行显示(转)
- struts2中级联菜单标签<s:doubleselect>的若干常见问题(二级菜单不显示,FreeMarker问题)
- 第九周【项目1】在第8周项1的基础上(1)再定义一目运算符 -,-c相当于0-c(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然
- 实现<table>标签的动态新增和后台接受<table>标签的方法
- 256 <--> 64算法 互转 ( Java实现)
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- 用vector<int>对象元素,实现输入10数,将每个奇数值元素用该值的两倍替换
- 简单网络爬虫实现<爬取网页邮箱>
- 用<TABLE>语句来实现圆角表格可以省去制作圆角图片之苦!