Showing posts with label Javascript. Show all posts
Showing posts with label Javascript. Show all posts

پیاده‌سازی فرم ورود توسط ExtJS

برای استفاده از فریموورک ExtJS جهت پیاده‌سازی رابط گرافیکی فرض می‌کنم صفحه ورودی شما به این صورت می‌باشد:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ExtJS Log in Sample</title>
   <link rel="stylesheet" type="text/css" href="http://localhost:8080/coder/web/theme/css/ext-all.css" />

   <script type="text/javascript" src="http://localhost:8080/coder/web/script/ext/core/ext-base.js"></script>
   <script type="text/javascript" src="http://localhost:8080/coder/web/script/ext/core/ext-all.js"></script>
   <script type="text/javascript" src="http://localhost:8080/coder/web/script/ext/user/login/login.js"></script>
</head>

<body>
</body>
   <div id="login"></div>
</html>
مشخص می‌باشد که آدرس‌دهی‌ها با توجه به شرایط شما می‌بایست تغییر یابد.

فایل login.js به صورت زیر می‌باشد :
Ext.onReady(function(){
   Ext.QuickTips.init();

   // Generating Log In Form
   var bd = Ext.get('login');

   var login_form = new Ext.FormPanel({
      id: login_form,
      monitorValid: true,
      labelWidth: 100,
      url: 'http://localhost:8080/coder/process/user/login',
      frame: true,
      monitorResize: true,
      bodyStyle: 'padding:5px 5px 0;',
      anchor: '50%',
      defaults: {
         width: 200,
         msgTarget: 'side'
      },
      defaultType: 'textfield',

      items: [{
         labelAlign: 'right',
         fieldLabel: 'نام کاربری',
         name: 'username',
         allowBlank: false,
      }, {
         fieldLabel: 'رمز عبور',
         name: 'password',
         allowBlank:false,
         inputType: 'password'
      }],

      buttons: [{
         text: 'انصراف',
         handler: function() {
            login_form.getForm().reset();
         }
      }, {
         text: 'ورود',
         handler: function() {
            if( login_form.getForm().isValid() ) {
               login_form.getForm().submit({
                  method:'POST', 

                  success: function() {
                     var nextScreen = 'http://localhost:8080/coder/';
                     window.location = nextScreen;
                  },
                  failure: function(form, action) {
                     if( action.failureType == 'server' ) {
                        obj = Ext.util.JSON.decode(action.response.responseText);
                        Ext.Msg.alert('نام کاربری و یا رمز عبور، نادرست می باشد.', obj.errors.reason);
                     } else {
                        Ext.Msg.alert('خطا!', 'در ارتباط با سرور اشکال رخ داده است : ' + action.response.responseText);
                     }
                  }, 
                  scope: this
               });
            }
         }
      }]
   });

   login_form.render(bd);

   Ext.fly('login').show();
});
آدرسی که فرم ورود به آن صفحه Submit می‌شود، و در فایل بالا به آن اشاره شده است،
http://localhost:8080/coder/process/user/login
در web.xml داریم :
<web-app>
   ...
   <servlet>
      <servlet-name>LogInController<servlet-name>
      <servlet-class>com.blogspot.coderspulse.web.user.LoginHandler</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>LogInController</servlet-name>
      <url-pattern>/process/user/login</url-pattern>
   </servlet-mapping>
   ...
</web-app>
فایل LoginHandler.java
package com.blogspot.coderspulse.web.user;

import java.io.IOException;

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

public class LoginHandler extends HttpServlet {
   public void init(ServletConfig config) throws ServletException {
      super.init(config);
   }

   public void destroy() {
   }

   protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      boolean userValidated = false;

      // Do User validating  here

      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      if ( userValidated ) {
         // If User was validated, this is the Format to tell the Ext that it is a Success
         out.println("{success:true}");
      } else {
         // If User was NOT validated, this is the Format to tell the Ext that it is a Failure, and Why
         out.println("{success:false, errors:{reason:'Login failed.Try again'}}");
      }
      out.close();
   }
}
قابل ذکر است که Response ای که شما آماده کرده‌اید، می‌بایست، دقیقا با فرمت JSON بدون وجود ] در ابتدا و [ در انتهایش باشد.

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes