其实这个话题我想大家都知道到怎么回事,不过我还是拿出写写,巩固一下知识,如果有人不清楚可以看一下。
例子介绍:我的例子是用户登陆,用户第一点击登陆按钮通过验证账号密码来判断登陆是否成功(这里我假设账号密码相同为登陆成功),用户第二次点击登陆按钮通过判断session里面的账号是否为空,当然我的例子有点不恰当哈!
现在让我们来一步一步编写代码:
1)首先来编写LoginServlet.java
1 | package servlet; |
2 | |
3 | import java.io.IOException; |
4 | import java.io.PrintWriter; |
5 | |
6 | import javax.servlet.ServletException; |
7 | import javax.servlet.http.HttpServlet; |
8 | import javax.servlet.http.HttpServletRequest; |
9 | import javax.servlet.http.HttpServletResponse; |
10 | import javax.servlet.http.HttpSession; |
11 | |
12 | public class LoginServlet extends HttpServlet { |
13 | |
14 | public void doPost(HttpServletRequest request, HttpServletResponse response) |
15 | throws ServletException, IOException { |
16 | String account = request.getParameter("account"); |
17 | String password = request.getParameter("password"); |
18 | HttpSession session = request.getSession(); |
19 | String useraccount = (String)session.getAttribute("useraccount"); |
20 | PrintWriter out = response.getWriter(); |
21 | if(useraccount!=null){ |
22 | |
23 | out.print("Congratulation "+useraccount+" ,You have logined through session!"); |
24 | } |
25 | else if(account.equals(password)){ |
26 | |
27 | session.setAttribute("useraccount", account); |
28 | out.print("Congratulation "+account+",You have logined through account and password!"); |
29 | } |
30 | |
31 | |
32 | |
33 | } |
34 | |
35 | } |
下面是LoginServlet的配置文件:
1 | <servlet> |
2 | <description>LoginServlet</description> |
3 | <display-name>LoginServlet</display-name> |
4 | <servlet-name>LoginServlet</servlet-name> |
5 | <servlet-class>servlet.LoginServlet</servlet-class> |
6 | </servlet> |
7 | |
8 | <servlet-mapping> |
9 | <servlet-name>LoginServlet</servlet-name> |
10 | <url-pattern>/servlet/LoginServlet</url-pattern> |
11 | </servlet-mapping> |
这里我来解释一下,如果通过密码账号验证登陆成功,提示祝贺你 ,你通过密码账号登陆成功,如果通过session检查登陆成功,提示你同过session登陆成功。
2)编写Flex访问selvlet ,哦我这里还是讲的通过HttpService 访问,以前看见有人通过BlazeDS来访问session,很好,有兴趣的可以去搜搜哈,有时间我也去尝试一下,如果成功我会贴出来的。
1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" |
3 | xmlns:s="library://ns.adobe.com/flex/spark" |
4 | xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> |
5 | <fx:Declarations> |
6 | <s:HTTPService id="login" url="http://localhost:8080/FlexSession/servlet/LoginServlet" showBusyCursor="true" |
7 | method="post" result="loginHandler(event)"/> |
8 | </fx:Declarations> |
9 | <fx:Script> |
10 | [CDATA[ |
11 | import mx.controls.Alert; |
12 | import mx.rpc.events.ResultEvent; |
13 | |
14 | private function userLogin():void{ |
15 | var parameter:URLVariables = new URLVariables(); |
16 | parameter.account = account.text; |
17 | parameter.password = password.text; |
18 | login.send(parameter); |
19 | |
20 | } |
21 | private function loginHandler(e:ResultEvent):void{ |
22 | mx.controls.Alert.show(e.result.toString()); |
23 | } |
24 | ]]> |
25 | </fx:Script> |
26 | <s:Panel x="153" y="148" width="288" height="200" title="User Login" borderVisible="false"> |
27 | <mx:Form x="38" y="10" width="242" height="84"> |
28 | <mx:FormItem label="account:"> |
29 | <s:TextInput id="account"/> |
30 | </mx:FormItem> |
31 | <mx:FormItem label="password:"> |
32 | <s:TextInput id="password" displayAsPassword="true"/> |
33 | </mx:FormItem> |
34 | </mx:Form> |
35 | <s:Button x="185" click="userLogin()" y="105" label="Login"/> |
36 | </s:Panel> |
37 | </s:Application> |
稍微解释一下,很简单的,我想大家一看就明白了,loginHandler这个函数讲提示服务器端返回的信息,下面我就操作一下
初始界面:
今天.哦不能说今天,舟曲哀悼日,这里也哀悼一下,死者安息,生者坚强吧,我还是把主题设置成灰色吧,
不多说了,
然后输入用户名 innerp 密码 innerp 登陆 提示:
大家看看提示哈 通过密码账号登陆成功 然后我再次点击登陆按钮:
在看看提示,恭喜innerp你通过session登陆成功。好啦,讲完了,很简单。