flash+struts的小应用

前言:原创,实现flash结合struts框架的一个小应用。

============================================================================================

一、开发环境:

1、elcipse3.2+myEclipse5.5;Tomcat5.5;数据库用的是ORACL9i(用什么数据库都可以)

2、flash8+as2.0;struts1.2.9

原理分析:先空着回来补上,今天写不完。。

二、开发步骤:

1、配置环境:在eclipse中先建立一个web projecet,将struts需要的jar文件加入到WEB-INF/lib中

      jar文件的列表:关于这些包的取得,可以到网上查一下,都可轻松找到。

  1. antlr.jar   
  2. commons-beanutils.jar   
  3. commons-digester.jar   
  4. commons-fileupload.jar   
  5. commons-logging.jar   
  6. commons-validator.jar   
  7. jakarta-oro.jar   
  8. jdom.jar   
  9. mysql-connector-java-5.0.3-bin.jar   
  10. ojdbc14.jar   
  11. struts.jar  

2、配置好WEB-INF中web.xml;

  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  3.   <servlet>  
  4.     <servlet-name>actionservlet-name>  
  5.     <servlet-class>org.apache.struts.action.ActionServletservlet-class>  
  6.     <init-param>  
  7.       <param-name>configparam-name>  
  8.       <param-value>/WEB-INF/struts-config.xmlparam-value>  
  9.     init-param>  
  10.     <init-param>  
  11.       <param-name>debugparam-name>  
  12.       <param-value>3param-value>  
  13.     init-param>  
  14.     <init-param>  
  15.       <param-name>detailparam-name>  
  16.       <param-value>3param-value>  
  17.     init-param>  
  18.     <load-on-startup>0load-on-startup>  
  19.   servlet>  
  20.   <servlet-mapping>  
  21.     <servlet-name>actionservlet-name>  
  22.     <url-pattern>*.dourl-pattern>  
  23.   servlet-mapping>  
  24. web-app>  

3、在WEB-INF中创建struts-config.xml

  1. xml version="1.0" encoding="UTF-8"?>  
  2. >  
  3.   
  4. <struts-config>  
  5.   <data-sources />  
  6.   <form-beans >  
  7.     <form-bean name="DomainNameAcionForm" type="com.test.actionforms.DomainNameActionForm" />  
  8.   
  9.   form-beans>  
  10.   
  11.   <global-exceptions />  
  12.   <global-forwards />  
  13.   <action-mappings >  
  14.     <action  
  15.       path="/PlaceQueryAction"  
  16.       type="com.test.actions.PlaceQueryAction"  
  17.       validate="false"/>  
  18.     <action  
  19.       path="/Index"  
  20.       type="com.test.actions.Index"  
  21.       validate="false">  
  22.       <forward name="ok" path="/jsps/index.jsp" />  
  23.     action>  
  24.     <action  
  25.       attribute="DomainNameActionForm"  
  26.       input="/jsps/showInfo.jsp"  
  27.       name="DomainNameAcionForm"  
  28.       path="/DomainNameAcion"  
  29.       scope="request"  
  30.       type="com.test.actions.DomainNameAcion"  
  31.       validate="true">  
  32.       <forward name="ok" path="/jsps/showInfo.jsp" />  
  33.     action>  
  34.   
  35.   action-mappings>  
  36.   
  37.   <message-resources parameter="com.test.actions.ApplicationResources" />  
  38. struts-config>  
  39.   

4、依照struts的规则,创建action,还好,应用很小,只是个示例程序,都能看懂。

com.test.actions.PlaceQueryAction代码
  1. package com.test.actions;   
  2. /*  
  3.  * Generated by MyEclipse Struts  
  4.  * Template path: templates/java/JavaClass.vtl  
  5.  */  
  6. import java.io.IOException;   
  7.   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10. import org.apache.struts.action.Action;   
  11. import org.apache.struts.action.ActionForm;   
  12. import org.apache.struts.action.ActionForward;   
  13. import org.apache.struts.action.ActionMapping;   
  14.   
  15. import com.test.dao.DataAccessDao;   
  16. import com.test.util.Constants;   
  17.   
  18. /**   
  19.  * MyEclipse Struts  
  20.  * Creation date: 07-11-2007  
  21.  *   
  22.  * XDoclet definition:  
  23.  * @struts.action  
  24.  * @struts.action-forward name="ok" path="/jsps/index.jsp" contextRelative="true"  
  25.  */  
  26. public class PlaceQueryAction extends Action {   
  27.     /*  
  28.      * Generated Methods  
  29.      */  
  30.   
  31.     /**   
  32.      * Method execute  
  33.      * @param mapping  
  34.      * @param form  
  35.      * @param request  
  36.      * @param response  
  37.      * @return ActionForward  
  38.      */  
  39.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  40.             HttpServletRequest request, HttpServletResponse response) {   
  41.            
  42.         //test   
  43.         //System.out.println("PlaceQueryAction**************************************************************************************************");   
  44.            
  45.         // TODO Auto-generated method stub   
  46.         response.setCharacterEncoding("utf-8");   
  47.         response.setContentType("txt/html");   
  48.          //获得查询参数   
  49.         String queryArea = request.getParameter("queryArea");//查询的地区   
  50.         String projectname=request.getContextPath();   
  51.         Constants.projectname=projectname.substring(1, projectname.length());   
  52.         //设置查询条件   
  53.         DataAccessDao dataQuery = new DataAccessDao();   
  54.         if(dataQuery.rebuldData(queryArea))   
  55.         {   
  56.             try{   
  57.                 response.getWriter().write("&OK=0&reason=");//查询成功返回0   
  58.             }catch(IOException e)   
  59.             {   
  60.                 System.err.println("******1response writeback error!******");   
  61.                 e.printStackTrace();   
  62.             }   
  63.         }else  
  64.         {   
  65.             try{   
  66.                 response.getWriter().write("&OK=1&reason=生成XML出错!");//查询失败返回1   
  67.             }catch(IOException e)   
  68.             {   
  69.                 System.err.println("******2response writeback error!******");   
  70.                 e.printStackTrace();   
  71.             }   
  72.         }   
  73.         return null;   
  74.     }   
  75. }  

5、创建actionform,哦对了,不需要,继续...连接数据库。。

DataAccessDao.java 代码
  1. /*需要什么包就自己加,限于篇幅这里没加,SysReportHelper类与本系统没太大关系,就是一个存储数据的对象,这里没有创建,这些代码都能看懂,不用多说了吧。。
  2. */
  3. public class DataAccessDao {   
  4.     /**  
  5.      * @param PlaceData  
  6.      * @return ArrayList  
  7.      */  
  8.     public ArrayList<sysreporthelper></sysreporthelper> getData(String app) {   
  9.         Connection connection =getDBConnection(Constants.MYSQL_DRIVER,Constants.MYSQL_URL,   
  10.                    Constants.MYSQL_USER_NAME,Constants.MYSQL_PASSWORD);   
  11.         Statement statement=null;   
  12.         ArrayList<sysreporthelper></sysreporthelper> pList = new ArrayList<sysreporthelper></sysreporthelper>();   
  13.            
  14.         ResultSet resultSet = null;   
  15.         String sql = null;   
  16.         if (app != null && app.equals(Constants.DIS_APPROVED)) {   
  17.             sql = "SELECT * FROM sysreport";   
  18.         } else if (app != null && app.equals(Constants.APPROVED)) {   
  19.             sql = "SELECT * FROM statreport_p";   
  20.         }   
  21.         try {   
  22.             statement = connection.createStatement();   
  23.             resultSet = statement.executeQuery(sql);   
  24.             // 读出数据   
  25.             while (resultSet.next()) {   
  26.                 data.setZhuhai(resultSet.getString("ZH"));   
  27.                 pList.add(data);   
  28.             }   
  29.                
  30.         } catch (SQLException e) {   
  31.             System.err.print("*****SQLException:query error(执行查询出错)*****");   
  32.             e.printStackTrace();   
  33.         }finally  
  34.         {   
  35.             try{   
  36.                 resultSet.close();   
  37.                 statement.close();   
  38.                 connection.close();   
  39.             }   
  40.             catch(SQLException e)   
  41.             {   
  42.                 e.printStackTrace();   
  43.             }   
  44.         }   
  45.         return pList;   
  46.     }   
  47. /**  
  48.      *   
  49.      * @return Connection  
  50.      */  
  51.     private Connection getDBConnection(String driver,String url,String username,String pwd) {   
  52.         Connection connection = null;   
  53.         // 连接DB   
  54.         try {   
  55.             Class.forName(driver);   
  56.             connection = DriverManager.getConnection(url,username, pwd);   
  57.         } catch (SQLException e) {   
  58.             System.err.println("******unable to connect database!(无法连接数据库)******");   
  59.             e.printStackTrace();   
  60.         } catch (ClassNotFoundException e) {   
  61.             System.err.println("******fail to load JDBC/ODBC(加载JDBC/ODBC失败)*******");   
  62.             e.printStackTrace();   
  63.         }   
  64.         return connection;   
  65.     }   
  66. }  
 6、创建个index.jsp把flash动画嵌进去。。注意代码里面的两个javascript函数,现在用不到,我没有删。
index.jsp代码
<%@ page language="java" pageEncoding="UTF-8"%>     <%@ page contentType="text/html; charset=UTF-8" %>   <html>     <head>       <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">       <title>Flash page</title>   </head>     <body>       <table>         <tr>           <td>             <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="550" height="400">               <param name="movie" value="<%=request.getContextPath()%>/swfs/ChinaMap/main.swf">                  <param name="quality" value="high"/>                  <embed src="<%=request.getContextPath()%>/swfs/ChinaMap/main.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed>             </object>           </td>           <td>              <iframe id="right_ifr" src="<%=request.getContextPath()%>/jsps/showInfo.jsp" frameBorder=0                      width=410 scrolling=yes height=500>              </iframe>             </td>         </tr>     </table>     </body>   </html>  

7、开始创建flash动画,动画名称要和JSP中的一致,这里取名main.swf,大家可以自己做个按钮和一个textfield做测试即可。在按钮按下时,触发以下动作:

     (由于代码属于一个项目不能全贴出来,只能拿关键部分贴出来,所以有些跳跃,不过思路是正确的。)

ActionScript代码
function loadInfo(queryArea)    {        var loadcom = new LoadVars();        //STRUTS 2.0        //var temp="com/test/actions/getData.action?queryArea=";        //Struts 1.2.9        var temp="PlaceQueryAction.do?queryArea=";        var queryStr=_root.projecturl+temp+queryArea+"&randNum="+Math.random(1)*100;        _root.loadinfos.text="查询...";        loadcom.sendAndLoad(queryStr, loadcom, "post");        loadcom.onLoad = function(OK) {         if (OK)         {             if(loadcom.OK==0)            {                if(loadIndata(queryArea))                {                    _root.Maps.gotoAndPlay("ShowMap");                }else               {                    _root.loadinfos.text="无法加载XML!";                }            }else if(loadcom.OK==1)            {                _root.loadinfos.text="内部错误:"+loadcom.reason;            }        } else {        //输出文本内容         _root.loadinfos.text="通讯失败:无法连接服务器!";        textformat.color=errorcolor;        _root.loadinfos.setTextFormat(textformat);        }       }    };  

好了,基本上就可以测试了,嘿嘿,写的简单了点。慢慢把条理整清楚。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值