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代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>    
  2. <%@ page contentType="text/html; charset=UTF-8" %>  
  3. <html>  
  4.   <head>  
  5.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  6.     <title>Flash page</title>  
  7. </head>  
  8.   <body>  
  9.     <table>  
  10.       <tr>  
  11.         <td>  
  12.           <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">  
  13.             <param name="movie" value="<%=request.getContextPath()%>/swfs/ChinaMap/main.swf">  
  14.                <param name="quality" value="high"/>  
  15.                <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>  
  16.           </object>  
  17.         </td>  
  18.         <td>  
  19.            <iframe id="right_ifr" src="<%=request.getContextPath()%>/jsps/showInfo.jsp" frameBorder=0  
  20.                    width=410 scrolling=yes height=500>  
  21.            </iframe>  
  22.           </td>  
  23.       </tr>  
  24.   </table>  
  25.   </body>  
  26. </html>  

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

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

ActionScript代码
  1. function loadInfo(queryArea)   
  2. {   
  3.     var loadcom = new LoadVars();   
  4.     //STRUTS 2.0   
  5.     //var temp="com/test/actions/getData.action?queryArea=";   
  6.     //Struts 1.2.9   
  7.     var temp="PlaceQueryAction.do?queryArea=";   
  8.     var queryStr=_root.projecturl+temp+queryArea+"&randNum="+Math.random(1)*100;   
  9.     _root.loadinfos.text="查询...";   
  10.     loadcom.sendAndLoad(queryStr, loadcom, "post");   
  11.     loadcom.onLoad = function(OK) {    
  12.     if (OK)    
  13.     {    
  14.         if(loadcom.OK==0)   
  15.         {   
  16.             if(loadIndata(queryArea))   
  17.             {   
  18.                 _root.Maps.gotoAndPlay("ShowMap");   
  19.             }else  
  20.             {   
  21.                 _root.loadinfos.text="无法加载XML!";   
  22.             }   
  23.         }else if(loadcom.OK==1)   
  24.         {   
  25.             _root.loadinfos.text="内部错误:"+loadcom.reason;   
  26.         }   
  27.     } else {   
  28.     //输出文本内容    
  29.     _root.loadinfos.text="通讯失败:无法连接服务器!";   
  30.     textformat.color=errorcolor;   
  31.     _root.loadinfos.setTextFormat(textformat);   
  32.     }    
  33.   }   
  34. };  

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

 

你可能感兴趣的:(应用服务器,mysql,struts,servlet,Flash)