在javaweb项目中使用flex

本文介绍了一种Flex与Java Web应用之间的通信方法,通过HttpService实现数据交换,并提供了登陆功能的具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里项目主要是以java web为例,在传统B/S项目中使用flex主要就是其通信方式,下面介绍几种思路:

第一种是HttpService方式,实例开路:helloworld太单调,以一个完整的登陆为例吧。
首先是Flex客户端代码:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
backgroundGradientAlphas="[1.0, 1.0]"
backgroundGradientColors="[#11E3E6, #EBF9F8]">

//ActionScpipt代码

<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;

//登陆成功进入的方法

public function handlePlain(event:ResultEvent):void{
var str:String = event.result as String;//获得服务端返回结果
success.text=str;
}
//登陆失败触发的方法
public function handleFault(event:FaultEvent):void{
Alert.show(event.fault.faultString, "Error");
}
//前台验证(有了下面的flex自带验证框架,这里显得多余。。。。。。)
public function login():void{
if(""==username.text){
trace(username.text.toString());//trace()方法调试时很有用,类似System.out.println()
nameinfo.text="用户名不能为空";
}else
if(""==password.text){
passwordinfo.text="密码不能为空";
}else{
testHttp.send();
}
}
]]>
</mx:Script>

//这里已post方式提交,至于传递参数主要有两种方式,第一种是URL后面加参数,如*.do?param1=**,个人倾向于第二种,就是下面这种,使用<mx:request>,showBusyCursor="true"表示等待时鼠标形状为等待状态
<mx:HTTPService id="testHttp" method="pOST" url="http://localhost:8888/szsygl/login.do" showBusyCursor="true" result="handlePlain(event);" fault="handleFault(event);" >
<mx:request xmlns="">
<username>
{username.text}
</username>
<password>
{password.text}
</password>
</mx:request>
</mx:HTTPService>

//Flex验证框架,很强大,还有PhoneNumberValidator,EmailValidator等等
<mx:Validator id="pnV" source="{username}" property="text"
trigger="{btn}" triggerEvent="click"
requiredFieldError="用户名必填" />
<mx:Validator id="checkpassword" source="{password}" property="text"
trigger="{btn}" triggerEvent="click"
requiredFieldError="密码必填" />

//下面是组件,这里是随意界面拖拉排的版,不规范,flex的css有待提高,layout有三种属性,分别代表横向纵向及绝对定位,这里是绝对定位,panel组件给人感觉类似于html的div
<mx:panel x="203.5" y="93" width="761" height="381" layout="absolute">
<mx:Button x="324" y="169" id="btn" label="登陆" width="54" fontSize="12" click="login()" />
<mx:TextInput x="324" y="106" id="password" fontSize="12" displayAsPassword="true"/>
<mx:Button x="432" y="169" label="重置" fontSize="12"/>
<mx:TextInput x="324" y="49" id="username" fontSize="12"/>
<mx:Text x="239" y="48" text="用户名:" width="77" fontSize="16" height="49"/>
<mx:Text x="239" y="105" text="密码:" fontSize="16" />
<mx:Text x="492" y="49" text="" id="nameinfo" width="156" height="24" fontSize="14" color="#F50F0A"/>
<mx:Text x="492" y="106" text="" id="passwordinfo" width="156" height="24" fontSize="14" color="#F50F0A"/>
<mx:Text x="324" y="10" id="success" text="" width="160" height="31" fontSize="15" color="#F50F0A"/>
</mx:panel>
</mx:Application>

客户端代码就这么多了,很简单的几个组件及函数

服务端代码,简单起见,所有业务逻辑就在控制层完成吧

package cn.tohot.szsygl.flextest;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import cn.tohot.szsygl.common.BaseDao;
import cn.tohot.util.security.SecurityUtils;

/**
*flex测试类
* @version 1.0 2009-1-14
* @author zhanglu
* @since JDK 1.5.0_8
*/
public class FlexTestServlet extends HttpServlet{

/**
*
*/
private static final long serialVersionUID = 1L;

private static final String LOAD_YH_DM = "from Yhxx where yhdm=?";
private static final String LOAD_YH_MM = "from Yhxx where yhdm=? and yhmm=?";

private BaseDao dao;


//从spring工厂里面得到初始化数据库操作接口
@Override
public void init() throws ServletException {
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
dao = (BaseDao)ctx.getBean("dao");
}


public void doGet(HttpServletRequest request,HttpServletResponse response){

}


public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
String name = request.getParameter("username");
String password = request.getParameter("password");
response.setCharacterEncoding("utf-8");
printWriter writer = response.getWriter();
if(null==name||"".equals(name)||!checkname(name)){
writer.write("用户名不正确");
}else if(null==password||"".equals(password)||!checkpassword(name,password)){
writer.write("密码不正确");
}else{
writer.write("成功登陆");
}
writer.flush();
writer.close();
}
//验证用户名
private boolean checkname(String name){
List<?> list = dao.getHibernateTemplate().find(LOAD_YH_DM, name);
if(list.isEmpty()){
return false;
}else{
return true;
}
}
//验证密码
private boolean checkpassword(String name,String password){
Object[] values= {name,SecurityUtils.md5Digest(password)};
List<?> list = dao.getHibernateTemplate().find(LOAD_YH_MM, values);
if(list.isEmpty()){
return false;
}else{
return true;
}
}
}


还有些配置文件就不写了,这里传的是Sting,如果是复杂对象,如存放Map的List,可以用XML传输,flex对XML的支持是相当强大啊。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值