实习日志(6):Flex显示Servlet所传值
2012-10-16 23:36
471 查看
解决了跳转问题之后,什么板报发布之类的就不在话下了,但是在实现了板报发布之后,我发现了一个问题——
之前在Servlet+JSP开发时,Servlet返回给JSP一个ArrayList,JSP对其进行循环读取。在Flex这儿,Servlet应该返回什么类型的值给Flex供其显示呢???
受到Flex官方教学视频的启发,决定利用XML来完成Servlet对JSP的传值。
官方视频案例:
使用HTTPService从URL检索XML数据
添加url属性指向远程XML文件(http://adobetes.com/f4iaw100/remoteData/employees.xml)
实现思路:servlet调用dao将请求的内容生成XML,Flex读取XML内容,将其显示在datagrid控件上。
MXML代码:
Servlet代码:
Dao代码:
显示效果:
发布页面:
提取板报信息:
错误处理:
2012-10-16 15:55:57 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ContentServlet threw exception
java.lang.NullPointerException
出错行:
2012-10-16 15:55:57 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ContentServlet threw exception
java.lang.NullPointerException
出错行:rs = st.executeQuery(sql);
原因:忘记语句st = con.createStatement();
没有给对象赋值就去使用,所以报空指针异常。
用datagrid显示板报或文章好像并不太合适,明天研究一下其他控件可否使用、、、
之前在Servlet+JSP开发时,Servlet返回给JSP一个ArrayList,JSP对其进行循环读取。在Flex这儿,Servlet应该返回什么类型的值给Flex供其显示呢???
受到Flex官方教学视频的启发,决定利用XML来完成Servlet对JSP的传值。
官方视频案例:
使用HTTPService从URL检索XML数据
添加url属性指向远程XML文件(http://adobetes.com/f4iaw100/remoteData/employees.xml)
实现思路:servlet调用dao将请求的内容生成XML,Flex读取XML内容,将其显示在datagrid控件上。
MXML代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" borderStyle="none" fontWeight="bold" fontSize="15" alpha="1.0" borderColor="#FEFFFF" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFBFB, #FFFBFB]" creationComplete="InitApp()"> <!--发布板报--> <mx:HTTPService id="addContent" url="http://localhost:8080/BlackBoardV1.4/ContentServlet" useProxy="false" method="post" result="resultHandler(event)"> <mx:request> <flag>{"add"}</flag> <title>{title.text}</title> <content>{content.text}</content> <start>{start.text}</start> <finish>{finish.text}</finish> </mx:request> </mx:HTTPService> <!--浏览板报--> <mx:HTTPService id="lookContent" url="http://localhost:8080/BlackBoardV1.4/ContentServlet" useProxy="false" method="post"> <mx:request> <flag>{"look"}</flag> </mx:request> </mx:HTTPService> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.IndexChangedEvent; public function add(event:Event):void{ addContent.send(); } public function resetForm():void{ title.text=""; content.text=""; start.text=""; finish.text=""; } public function resultHandler(event:Event):void{ if(addContent.lastResult.toString()=="true") { viewstack1.selectedIndex=1; }else { viewstack1.selectedIndex=2; } } private function InitApp():void { tab.addEventListener(IndexChangedEvent.CHANGE,indexChangeHandler); } public function indexChangeHandler(event:IndexChangedEvent):void { if(tab.selectedIndex==1) { //初始化拿到的数组,显示在数据框中 lookContent.send(); }else if(tab.selectedIndex==0) { viewstack1.selectedIndex=0; } } ]]> </mx:Script> <mx:TabNavigator width="100%" height="417" id="tab"> <mx:ViewStack label="发布板报" id="viewstack1" width="100%" height="100%" horizontalCenter="550" verticalCenter="180"> <mx:Canvas width="100%" height="100%" backgroundAlpha="0.0"> <mx:Form x="105.5" y="10" height="323" width="658"> <mx:FormItem label="板报标题:" fontWeight="bold"> <mx:TextInput id="title"/> </mx:FormItem> <mx:FormItem label="板报内容:" height="185" width="385"> <mx:TextArea height="178" width="284" id="content"/> </mx:FormItem> <mx:FormItem label="起效时间:"> <mx:DateField id="start"/> </mx:FormItem> <mx:FormItem label="失效时间:"> <mx:DateField id="finish"/> </mx:FormItem> </mx:Form> <mx:Button x="177" y="341" label="发布板报" click="add(event)"/> <mx:Button x="377" y="341" label="撤销板报"/> </mx:Canvas> <mx:HBox label="succ" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"> <mx:Label text="恭喜您,板报发布成功!!!" width="233" height="42"/> </mx:HBox> <mx:HBox label="fail" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"> <mx:Label text="很遗憾,板报发布失败,请重试或联系开发人员!!!" height="48"/> </mx:HBox> </mx:ViewStack> <mx:Canvas label="浏览板报" width="100%" height="100%" backgroundAlpha="0.0"> <mx:Canvas label="浏览板报" width="100%" height="100%" backgroundAlpha="0.0"> <mx:DataGrid x="61" y="41" dataProvider="{lookContent.lastResult.Contents.Content}" width="683" height="203" textAlign="center"> <mx:columns> <mx:DataGridColumn headerText="板报标题" dataField="title"/> <mx:DataGridColumn headerText="板报内容" dataField="content"/> <mx:DataGridColumn headerText="失效时间" dataField="finish"/> <mx:DataGridColumn headerText="发布人" dataField="author"/> </mx:columns> </mx:DataGrid> </mx:Canvas> </mx:Canvas> </mx:TabNavigator> </mx:Application>
Servlet代码:
//查看板报内容 public void lookContent(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //从数据库中拿出板报来 ContentDao cDao = new ContentDao(); //查看所有板报 String xml=cDao.lookContent(); System.out.println(xml); //返回XML out.write(xml); }
Dao代码:
/** * 查看板报 * @throws SQLException */ public String lookContent() throws SQLException { String sql = null; Statement st = null; ResultSet rs = null; connection = conn.getConn(); sql = "select * from [BlackBoard].[dbo].[content]"; System.out.println(sql); st = connection.createStatement();//从数据库连接取得一个处理对象 rs = st.executeQuery(sql); //循环拿到每条板报数据 String xml="<Contents>"; while(rs.next()) { int contentId=rs.getInt(1); String title=rs.getString(2); String content=rs.getString(3); String start=rs.getString(4); String finish=rs.getString(5); String author=rs.getString(6); //生成XML xml=xml+"<Content>"+ "<id>"+contentId+"</id>"+ "<title>"+title+"</title>"+ "<content>"+content+"</content>"+ "<start>"+start+"</start>"+ "<finish>"+finish+"</finish>"+ "<author>"+author+"</author></Content>"; } xml=xml+"</Contents>"; System.out.println(xml); this.close(); return xml; } }
显示效果:
发布页面:
提取板报信息:
错误处理:
2012-10-16 15:55:57 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ContentServlet threw exception
java.lang.NullPointerException
出错行:
2012-10-16 15:55:57 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ContentServlet threw exception
java.lang.NullPointerException
出错行:rs = st.executeQuery(sql);
原因:忘记语句st = con.createStatement();
没有给对象赋值就去使用,所以报空指针异常。
用datagrid显示板报或文章好像并不太合适,明天研究一下其他控件可否使用、、、
相关文章推荐
- 实习日志(4):Flex向Servlet传值
- 实习日志(1):搭建Flex开发环境(与MyEclipse整合)
- 实习日志(8):Flex的TitleWindow控件
- 实习日志(7):Flex的repeater组件
- 实习日志(9):FLEX页面间传值
- 实习日志(1)初识flex & bison (计算器的设计)
- 实习日志(5):Flex页面“跳转”
- 实习日志(六)
- JSP/Servlet页面中文显示为乱码的解决方式
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
- 用servlet显示图片
- spark调整日志显示级别
- 7月27实习日志
- 实习日志第七篇
- 使用commons.logging中的SimpleLog显示调试和日志信息
- Flex基础知识入门--创建GISSever发布地地图显示
- [转] Flex中实现List横向展示图片,并且鼠标靠近时显示大图(ImageToolTip)
- Flex 中 Label 和 Text 显示效果的区别
- 日志服务器的显示工具 PHPLOGCON Loganalyzer
- 修改myeclipse的日志台,显示所有日志,而不是只显示8000的方法