`
congpeixue
  • 浏览: 275480 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

Click framework 的 Page类(二)

阅读更多
  • 定制自动绑定(接上)

自动绑定 支持由request字符串参数向java类(Integer, Double, Boolean, Byte, Character,
Short, Long, Float, BigInteger, BigDecimal, String和各种日期类 )的转化。

默认情况下 , 转化是由 RequestTypeConverter类来实现的,该类由ClickServlet的
getTypeConverter方法来调用。

如果你需要增加对其他类型的支持, 你需要通过继承ClickSerlvet 来编写适合你的子类。

例如, 当customer  id被指定时, 你想从数据库中自动加载一个Customer 对象。
你如下像如下编写你的转化器:

public class CustomTypeConverter extends RequestTypeConverter {

    private CustomerService customerService = new CustomerService();

    /**
     * @see RequestTypeConverter#convertValue(Object, Class)
     */
    protected Object convertValue(Object value, Class toType) {
        if (toType == Customer.class) {
            return customerService.getCustomerForId(value);
            
        } else {
            return super.convertValue(value, toType);
        }
    }
}


上述类型转化器可以处理如下请求:

http://localhost:8080/mycorp/customer-details.htm?customer=7203


请求将使用“7203”来作为customer id的值从数据库中加载customer 对象。
ClickServlet 把customer对象分配到page中对应的字段上。

package com.mycorp.page;

public class CustomerDetails extends Page {

    public Customer customer;

} 


为了使你自定义的类型转换器成功运行,你需要继承ClickServlet 并覆盖
getTypeConverter()方法。 如下:

public class CustomClickServlet extends ClickServlet {

    /**
     * @see ClickServlet#getTypeConverter()
     */
    protected TypeConverter getTypeConverter() {
        if (typeConverter == null) {
            typeConverter = new CustomTypeConverter();
        }
        return typeConverter;
    }
} 





安全 



Pages提供了一个 onSecurityCheck()事件处理器, 应用程序可以覆写它来实现一个安全模型。

Note: 通常情况下, 你不需要使用这个功能, 可能的话你可是使用JEE 的安全模型。
可以参照后面章节来获得更详尽的信息。

  • 应用程序验证


程序可以使用onSecurityCheck()方法来实现它们自己的验证模型。 如下例子提供了一个
基本的安全page类, 其它的page可以继承它来确保用户已登陆。在这个例子中,当一个用户
成功登陆以后, 登陆用page类便创建了一个session。 此page类检查用户是否拥有一个
session, 如果没有的话, 便重新定位到登陆page。

public class Secure extends Page {

    /**
     * @see Page#onSecurityCheck()
     */
    public boolean onSecurityCheck() {
    
        if (getContext().hasSession()) {
            return true;
            
        } else {
            setRedirect(LoginPage.class);
            return false;
        }
    }
} 



  • 容器验证

另一个可行的办法是, 你也可以使用JEE Servlet容器提供的安全验证,
如果为了让用户能够使用Serlvet 容器来进行验证, 你可以使用如下安全用Page类:
public class Secure extends Page {

    /**
     * @see Page#onSecurityCheck()
     */
    public boolean onSecurityCheck() {
    
        if (getContext().getRequest().getRemoteUser() != null) {
            return true;
            
        } else {
            setRedirect(LoginPage.class);
            return false;
        }
    }
}



  • 容器访问控制

Servlet容器也提供了便捷的方式来验证登陆用户的角色。 如下例子描述的是只有拥有
admin权限的用户才能访问页面, 否则,用户将被重定向到登陆page。程序的管理
pages继承这个page来实现他们的管理功能。

public class AdminPage extends Page {

    /**
     * @see Page#onSecurityCheck()
     */
    public boolean onSecurityCheck() {
    
        if (getContext().getRequest().isUserInRole("admin")) {
            return true;

        } else {
            setRedirect(LoginPage.class);
            return false;
        }
    }
}


  • 退出

为了让基于安全模型的程序或容器来退出登陆,你需要使session无效。
public class Logout extends Page {

    /**
     * @see Page#onInit()
     */
    public void onInit() {
        getContext().getSession().invalidate();
    }
} 



分享到:
评论

相关推荐

    click-book apache click framework介绍

    ### Apache Click Framework 介绍 #### 一、简介 Apache Click 是一个用于开发 Web 应用程序的 Java 框架,旨在提供一个简洁且高效的 API 来构建动态 Web 页面。Click 的设计目标是减少开发时间并提高代码的可读性...

    RobotFramework中实现PageObject模式的轻量级关键字库_Python_RobotFramework.zip

    在Robot Framework中,我们可以创建一个PageObject类,包含页面上的各个元素和相关的关键词。例如,我们可以定义一个`LoginPage`类,包含用户名输入框、密码输入框和登录按钮等元素,并提供`EnterUsername`、`Enter...

    robot framework +selenium

    #### 二、Selenium Library 的安装 为了实现 Robot Framework 与 Selenium 的结合,首先需要安装 Selenium Library。以下是一步一步的安装指导: 1. **Python 环境准备**: - 首先确保已经安装了 Python 环境。 -...

    RobotFramework-Selenium2Library

    5. **Wait Until Page Contains**:等待页面包含特定文本,例如`Wait Until Page Contains 搜索结果`。 **四、Selenium2Library的优势** 1. **易读性**:Robot Framework的基于关键字的语法使脚本易于阅读和理解,...

    robotframework自动化测试demo实例

    5. **变量**:在示例中,${page title} 和 ${variable_name} 代表变量,Robot Framework支持多种类型的变量,包括全局变量、测试套件变量、测试用例变量等。 6. **数据驱动测试**:Robot Framework支持数据驱动测试...

    robotframework安装包

    Page Should Contain 欢迎,tester ``` 8. **学习资源**: 要深入了解Robot Framework,可以参考其官方文档,以及各种在线教程和社区讨论。同时,熟悉Python基础和测试驱动开发概念会帮助你更好地运用这个框架。...

    robot framework 32bit【32位】

    Page Should Contain Welcome, tester! ``` 这个例子展示了如何打开浏览器,输入用户名和密码,然后点击登录按钮,并验证是否看到欢迎消息。 在安装和使用32位Robot Framework时,确保你的操作系统和Python环境也...

    RobotFramework Tool

    Should Contain ${PAGE TITLE} Robot Framework - Google Search ``` 这段脚本中,`Open Browser`、`Input Text`、`Click Button`和`Should Contain`都是关键词,它们对应了打开浏览器、输入文本、点击按钮和验证...

    Python库 | robotframework_browser-2.4.1-py3-none-any.whl

    Wait Until Page Contains Example Domain Click Element xpath://a[@href='/'] Sleep 2s # 给页面加载时间 Close Browser ``` 6. **最佳实践** - 使用变量存储重复使用的URL和元素选择器,提高代码可读性...

    robotframework-selenium2library-1.8.0

    Robot Framework Selenium2Library 1.8.0 是一个专门用于自动化Web应用程序测试的库,它建立在Robot Framework之上,利用Selenium 2 (现称为Selenium WebDriver) 的功能。Robot Framework是一个通用的自动化框架,而...

    WPF多页面Page导航实例

    首先,让我们深入了解WPF的Page类。Page是WPF中的一个用户界面元素,可以视为应用程序中的一个独立视图或“页面”。每个Page可以包含各种控件、布局容器和其他UI元素,用于展示不同的内容或功能。在WPF中,Page通常...

    Robot Framework-Selenium2Library 常用关键字

    在 Robot Framework 的 Selenium2Library 中,管理和控制浏览器及窗口是自动化测试中的基础操作。 3.3.2 Cookie管理 Cookie 是一种用于存储用户状态的小型文本数据,常用于网站的身份验证和个性化设置。在 Selenium...

    Apache Click User Guide

    - **页面类**:讨论了 Apache Click 中页面类的设计原则及其实现细节。 - **页面执行**:解释了页面的执行过程,包括页面加载、处理用户输入及渲染结果等步骤。 - **请求参数自动绑定**:描述了如何自动将请求参数...

    RobotFramework-Selenium2Library中文版_V1.1.pdf

    #### 二、RobotFramework-Selenium2Library概述 **版本**: LibraryVersion V1.6 **翻译者**: 代兵、张哲 **校对者**: 张哲 **发布日期**: 2015-04-28 #### 三、主要内容概览 - **介绍** (P6): 提供了关于Robot...

    robotframework-zoomba:扩展的Robot Framework库使测试GUI,RESTSOAP API,Mobile和Windows Desktop更加容易

    RobotFramework-Zoomba 介绍 Robotframework-Zoomba是使用跨越GUI,REST API,SOAP API,移动和Windows桌面(WinAppDriver)自动化的库的集合。 这些库是现有库 , , 和。...Click Element locator

    RobotFramework常见语法.pdf

    4. **截屏 (Capture Page Screenshot)**:这个关键字用于捕获当前页面的屏幕快照,可用于测试失败时的调试。 5. **执⾏JS (Execute JavaScript)**:允许执行JavaScript代码,通常用于与页面上的JavaScript元素进行...

    基于Robot-Framework+Selenium2用户操作手册

    Wait Until Page Contains Welcome back, admin Close All Browsers ``` 通过以上介绍,您可以根据自己的需求选择合适的元素定位策略和Selenium2Library关键词来构建自动化测试脚本。此外,还提供了数据库操作的...

    auto_framework_demo_screenshot.zip

    这个压缩包可能是某个教程或项目的截图,用于展示如何构建和使用Page Object Model (POM) 模式来设计自动化测试框架。下面我们将深入探讨Python和Selenium框架设计以及POM模式。 Python是一种广泛使用的编程语言,...

    Robot+Framework+WD+培训-吴穹++ChinaTest2012.pdf

    2. **元素操作**:使用关键词如`Open Browser`启动浏览器,`Go To`导航到URL,`Click Element`点击页面元素,`Input Text`输入文本等。 3. **等待和断言**:`Wait Until Page Contains`确保页面元素出现,`Should Be...

    使用RobotFramework测试AJAX

    在自动化测试领域,使用Robot Framework进行AJAX应用的测试需要特别的策略,因为Robot Framework的Selenium库默认假设点击事件会导致页面重载。本文将详细介绍如何利用Robot Framework有效地测试使用AJAX技术的Web...

Global site tag (gtag.js) - Google Analytics