介绍
在“概念验证”中,您将创建一个Flex应用程序,该应用程序将Login-Data发送到Java-Servlet(也由NetBeans 6.5创建)。Servlet返回一个由Flex应用程序解释的答案。这是一个非常简单的应用程序,您应该只能看到使用FlexBean实现多么容易。
FlexBean插件
在使用NetBeans创建Flex应用程序之前,必须安装FlexBean插件。按照安装说明进行操作。
创建Flex应用程序
创建一个新的“Flex应用程序”项目。
将项目命名为“ SimpleFlexApp ”并点击“ 完成 ”。
您现在可以看到新的项目与已打开的MXML文件。
使用此代码 替换“ Main.mxml ” 的内容:
Main.mxml
01.
<
font
><
font
><?xml version =“1.0”encoding =“utf-8”?></
font
></
font
><
font
></
font
><
font
><
font
>
02.
<! - 将登录数据发送到Servlet的简单Flex应用程序</
font
></
font
><
font
></
font
><
font
><
font
>
03.
位于:http:// localhost:8084 // simplelogin / loginservlet</
font
></
font
><
font
></
font
>
04.
<
font
></
font
><
font
><
font
>
05.
@作者Siegfried Bolz</
font
></
font
><
font
></
font
><
font
><
font
>
06.
- ></
font
></
font
><
font
></
font
>
07.
<
font
></
font
><
font
><
font
>
08.
<
mx
:application xmlns:mx =“http://www.adobe.com/2006/mxml”applicationComplete =“”color =“#FFFFFF”layout =“absolute”borderColor =“#FDFEFF”backgroundGradientAlphas =“[1.0, 1.0]“backgroundGradientColors =”[#205CF6,#01013D]“width =”400“height =”300“></
font
></
font
><
font
></
font
>
09.
<
font
></
font
><
font
><
font
>
10.
<
mx
:Script></
font
></
font
><
font
></
font
><
font
><
font
>
11.
<![CDATA [</
font
></
font
><
font
></
font
>
12.
<
font
></
font
><
font
><
font
>
13.
import mx.events.ValidationResultEvent;</
font
></
font
><
font
></
font
><
font
><
font
>
14.
import mx.controls.Alert;</
font
></
font
><
font
></
font
><
font
><
font
>
15.
import mx.rpc.events.FaultEvent;</
font
></
font
><
font
></
font
><
font
><
font
>
16.
import mx.rpc.events.ResultEvent;</
font
></
font
><
font
></
font
>
17.
<
font
></
font
>
18.
<
font
></
font
>
19.
private function validateID(event:MouseEvent):Boolean{<
font
></
font
>
20.
if (idValidator.validate().type == ValidationResultEvent.VALID) {<
font
></
font
>
21.
return true;<
font
></
font
>
22.
} else{<
font
></
font
>
23.
Alert.show("Please insert an ID !");<
font
></
font
>
24.
return false;<
font
></
font
>
25.
}<
font
></
font
>
26.
}<
font
></
font
>
27.
<
font
></
font
>
28.
<
font
></
font
>
29.
private function validatePassword(event:MouseEvent):Boolean {<
font
></
font
>
30.
if (passValidator.validate().type == ValidationResultEvent.VALID){<
font
></
font
>
31.
return true;<
font
></
font
>
32.
} else{<
font
></
font
>
33.
Alert.show("Please insert a Password !");<
font
></
font
>
34.
return false;<
font
></
font
>
35.
}<
font
></
font
>
36.
}<
font
></
font
>
37.
<
font
></
font
>
38.
<
font
></
font
>
39.
private function checkLoginData(event:MouseEvent):void {<
font
></
font
>
40.
if (validateID(event)==true && validatePassword(event)==true) {<
font
></
font
>
41.
submitLoginData(txtID.text,txtPassword.text);<
font
></
font
>
42.
}<
font
></
font
>
43.
}<
font
></
font
>
44.
<
font
></
font
>
45.
<
font
></
font
>
46.
<
font
></
font
>
47.
private function submitLoginData(id:String, password:String):void {<
font
></
font
>
48.
lblError.visible = false;<
font
></
font
>
49.
var login:LoginVO = new LoginVO(id,password);<
font
></
font
>
50.
loginService.cancel();<
font
></
font
>
51.
loginService.send(login);<
font
></
font
>
52.
}<
font
></
font
>
53.
<
font
></
font
>
54.
<
font
></
font
>
55.
private function onResult(event:ResultEvent):void{<
font
></
font
>
56.
var resultObj:Object = event.result;<
font
></
font
>
57.
var result:String = resultObj.message;<
font
></
font
>
58.
<
font
></
font
>
59.
if (result=="true") {<
font
></
font
>
60.
Alert.show('Login successful!');<
font
></
font
>
61.
} else {<
font
></
font
>
62.
Alert.show('Login denied!');<
font
></
font
>
63.
}<
font
></
font
>
64.
<
font
></
font
>
65.
}<
font
></
font
>
66.
<
font
></
font
>
67.
<
font
></
font
>
68.
private function serverFault(evt:FaultEvent):void {<
font
></
font
>
69.
lblError.visible = true;<
font
></
font
>
70.
}<
font
></
font
>
71.
<
font
></
font
>
72.
<
font
></
font
>
73.
]]><
font
></
font
>
74.
</
mx:Script
><
font
></
font
>
75.
<
font
></
font
>
76.
<
font
></
font
>
77.
<!-- Connection to the Server -->
<
font
></
font
>
78.
<
mx:HTTPService
id
=
"loginService"
useProxy
=
"false"
method
=
"POST"
resultFormat
=
"object"
<font></
font
>
79.
url="http://localhost:8084//simplelogin/loginservlet" result="onResult(event)"<
font
></
font
>
80.
fault="serverFault(event);" /><
font
></
font
>
81.
<
font
></
font
>
82.
<!-- Validators -->
<
font
></
font
>
83.
<
mx:StringValidator
id
=
"idValidator"
source
=
"{txtID}"
property
=
"text"
triggerEvent
=
""
/><
font
></
font
>
84.
<
mx:StringValidator
id
=
"passValidator"
source
=
"{txtPassword}"
property
=
"text"
triggerEvent
=
""
/><
font
></
font
>
85.
<
font
></
font
>
86.
<!-- GUI Elements -->
<
font
></
font
>
87.
<
mx:Label
text
=
"Please insert your Login data"
fontWeight
=
"bold"
x
=
"122.5"
y
=
"32"
fontSize
=
"12"
/><
font
></
font
>
88.
<
mx:Label
text
=
"ID"
x
=
"72"
y
=
"71"
fontSize
=
"11"
fontWeight
=
"bold"
/><
font
></
font
>
89.
<
mx:Label
text
=
"Password"
x
=
"72"
y
=
"129"
fontSize
=
"11"
fontWeight
=
"bold"
/><
font
></
font
>
90.
<
mx:TextInput
x
=
"72"
y
=
"87"
editable
=
"true"
color
=
"#010000"
id
=
"txtID"
/><
font
></
font
>
91.
<
mx:TextInput
x
=
"72"
y
=
"144"
color
=
"#020000"
displayAsPassword
=
"true"
id
=
"txtPassword"
editable
=
"true"
/><
font
></
font
>
92.
<
mx:Button
x
=
"72"
y
=
"195"
label
=
"Submit"
id
=
"cmdSubmit"
click
=
"checkLoginData(event)"
/><
font
></
font
>
93.
<
mx:Label
x
=
"72"
y
=
"242"
text
=
"Error, wrong login data!"
width
=
"222"
id
=
"lblError"
color
=
"#FF0000"
fontSize
=
"16"
fontWeight
=
"bold"
visible
=
"false"
/><
font
></
font
>
94.
<
font
></
font
>
95.
</
mx:Application
><
font
></
font
>
创建一个新的ActionScript文件,将其命名为“ LoginVO ”并将其粘贴到其中:
LoginVO.as
01.
/**<
font
></
font
>
02.
* Transfer-Object for the HTTPService-call.<
font
></
font
>
03.
*<
font
></
font
>
04.
* @author Siegfried Bolz<
font
></
font
>
05.
*/<
font
></
font
>
06.
package<
font
></
font
>
07.
{<
font
></
font
>
08.
public class LoginVO {<
font
></
font
>
09.
<
font
></
font
>
10.
public var id:String;<
font
></
font
>
11.
public var password:String;<
font
></
font
>
12.
<
font
></
font
>
13.
<
font
></
font
>
14.
// Konstruktor<
font
></
font
>
15.
public function LoginVO(id:String,password:String) {<
font
></
font
>
16.
<
font
></
font
>
17.
this.id = id;<
font
></
font
>
18.
this.password = password;<
font
></
font
>
19.
<
font
></
font
>
20.
}<
font
></
font
>
21.
<
font
></
font
>
22.
}<
font
></
font
>
23.
}<
font
></
font
>
您的项目必须如下所示:
构建项目,看看一切都正常。
如果您收到此错误:“ 错误:找不到JVM ”:
您的Flex SDK配置文件无效。打开位于“ <SDK> / BIN ”目录中的文件“ jvm.config ”,并检查变量“ java.home = ”是否设置为有效的Java JRE目录(删除最后一个斜杠!)。这是一个例子:
1.
java.home=C:/Program Files/Java/jre1.6.0_07
Java Servlet
创建一个新的Java Web应用程序项目,将其命名为“ SimpleLogin ”,并使用URL-Pattern“ / loginservlet ” 添加一个Servlet(LoginServlet.java)。
将此代码粘贴到文件中:
LoginServlet.java
01.
package
eu.jdevelop.blog.flexbean;<font></font>
02.
<font></font>
03.
import
java.io.IOException;<font></font>
04.
import
java.io.PrintWriter;<font></font>
05.
import
javax.servlet.ServletException;<font></font>
06.
import
javax.servlet.http.HttpServlet;<font></font>
07.
import
javax.servlet.http.HttpServletRequest;<font></font>
08.
import
javax.servlet.http.HttpServletResponse;<font></font>
09.
<font></font>
10.
/**<font></font>
11.
* Login Servlet<font></font>
12.
*<font></font>
13.
* @author Siegfried Bolz<font></font>
14.
*/
<font></font>
15.
public
class
LoginServlet
extends
HttpServlet {<font></font>
16.
<font></font>
17.
/**<font></font>
18.
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.<font></font>
19.
*<font></font>
20.
* @param request servlet request<font></font>
21.
* @param response servlet response<font></font>
22.
* @throws ServletException if a servlet-specific error occurs<font></font>
23.
* @throws IOException if an I/O error occurs<font></font>
24.
*/
<font></font>
25.
protected
void
processRequest(HttpServletRequest request, HttpServletResponse response)<font></font>
26.
throws
ServletException, IOException {<font></font>
27.
response.setContentType(
"text/html;charset=UTF-8"
);<font></font>
28.
PrintWriter out = response.getWriter();<font></font>
29.
try
{<font></font>
30.
<font></font>
31.
String id = request.getParameter(
"id"
);<font></font>
32.
String password = request.getParameter(
"password"
);<font></font>
33.
<font></font>
34.
System.out.println(
"received data from the Flex Application: id="
+ id +
" password="
+ password);<font></font>
35.
<font></font>
36.
if
(id==
null
|| password==
null
) {<font></font>
37.
out.println(
"<message>false</message>"
);<font></font>
38.
}
else
{<font></font>
39.
out.println(
"<message>true</message>"
);<font></font>
40.
}<font></font>
41.
<font></font>
42.
}
catch
(Exception x) {<font></font>
43.
System.out.println(
"Error: "
+ x.getMessage());<font></font>
44.
}
finally
{<font></font>
45.
out.close();<font></font>
46.
}<font></font>
47.
}<font></font>
48.
<font></font>
49.
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."><font></font>
50.
/**<font></font>
51.
* Handles the HTTP <code>GET</code> method.<font></font>
52.
* @param request servlet request<font></font>
53.
* @param response servlet response<font></font>
54.
* @throws ServletException if a servlet-specific error occurs<font></font>
55.
* @throws IOException if an I/O error occurs<font></font>
56.
*/
<font></font>
57.
@Override
<font></font>
58.
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)<font></font>
59.
throws
ServletException, IOException {<font></font>
60.
processRequest(request, response);<font></font>
61.
}<font></font>
62.
<font></font>
63.
/**<font></font>
64.
* Handles the HTTP <code>POST</code> method.<font></font>
65.
* @param request servlet request<font></font>
66.
* @param response servlet response<font></font>
67.
* @throws ServletException if a servlet-specific error occurs<font></font>
68.
* @throws IOException if an I/O error occurs<font></font>
69.
*/
<font></font>
70.
@Override
<font></font>
71.
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)<font></font>
72.
throws
ServletException, IOException {<font></font>
73.
processRequest(request, response);<font></font>
74.
}<font></font>
75.
<font></font>
76.
/**<font></font>
77.
* Returns a short description of the servlet.<font></font>
78.
* @return a String containing servlet description<font></font>
79.
*/
<font></font>
80.
@Override
<font></font>
81.
public
String getServletInfo() {<font></font>
82.
return
"Short description"
;<font></font>
83.
}
// </editor-fold><font></font>
84.
<font></font>
85.
}<font></font>
启动应用程序
首先启动Java Servlet而不是Flex应用程序。
Flash Player打开。
插入一些数据并单击“ 提交 ”将输入发送到Java Servlet。
如果连接设置好(检查“ Main.mxml ”中的HTTPService),您将收到一个肯定的答案。
如您所见,可以在Flex环境中使用NetBeans,但是需要通过FlexBean-Plugin替换Adobe Flex Builder进行许多改进。Arnaud Vincent以新的方式丰富了NetBeans-Community,NetBeans如何可以用于今天的发展。它显示了NetBeans平台的灵活性,以满足未来的需求。
下载
NetBeans 6.5 Flex项目:下载
NetBeans 6.5 Java Servlet项目:下载
Adobe Flex Builder 3项目:下载