- 浏览: 5341 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
一、 Kangaroo概述
Kangaroo计划的目的是构建一套完整的轻量级的web开发应用框架。力求使用简单、灵活、无过多约束。计划包括三个子框架,分别对应web应用中的应控制层、业务层、数据层。Kangaroo-Jslet 对应于Kangaroo计划中的应用控制层。可以与Kangaroo中其它子框架联合应用,也可以单独使用。
二、 Kangaroo-Jslet概述
Kangaroo-Jslet是Kangaroo计划中的第一个子框架,Kangaroo-Jslet v2.0是该子框架的第一个正式版本。Kangaroo-Jslet是采用Jsp / Servlet技术,实现了Model—View—Controller(MVC)设计模式的应用框架。
三、 Kangaroo-Jslet应用所须Jar文件
使用Kangaroo-Jslet需要在web应用项目的lib中加入kangaroo-jslet-2.0.0.jar文件及dom4j.jar。相关的jar文件下载请登陆博客:老康的kangaroo,博客地址:http://king-yd.iteye.com
四、 Kangaroo应用配置
Kangaroo-Jslet的web应用项目结构:
|— WEB-INF
| |—classes
| |—lib
| |—web.xml
| |—kangarooconfig.xml
|—login.jsp
在使用Kangaroo-Jslet时需要首先配置kangaroo应用配置文件。该配置文件放在web项目中的WEB-INF目录下,文件名为:kangarooconfig.xml 。
kangarooconfig.xml文件结构:
*************************************************************************
<?xml version="1.0" encoding="GBK"?>
<result>
<value>
<name>分项目配置文件名称</name>
<source>分项目配置文件存放目录</source>
</value>
</result>
*************************************************************************
说明:该配置文件主要是配置子项目的各个配置文件的位置(如果使用kangaroo计划中的对应数据层的子项目还要在该配置文件中加入数据源的配置信息,具体将在对应数据层的子项目Kangaroo-MyDB手册中详细说明),在配置文件中<result>是根元素,各分项目的配置文件信息分别包含在不同的<value></value>之间,在<value>元素间<name>间是分项目名称,<source>元素间存放分项目的配置文件存放的绝对路径。分项目配置名称是固定的。分项目配置文件的存放目录是可以根据个人需要存放在不同的位置。另外分项目配置文件的存放目录是绝对目录。具体可以参考下面的例子。
例:配置了kangaroo-Jslet子项目的kangarooconfig.xml
*******************************************************************************
<?xml version="1.0" encoding="GBK"?>
<result>
<!--Jslet部分-->
<!--Jslet的action配置文件-->
<value>
<name>action</name>
<source>D: /kangaroodemo/jslet/action.xml</source>
</value>
</result>
*******************************************************************************
说明:D: /kangaroodemo/jslet/action.xml为Kangaroo-Jslet配置文件的存放位置及文件名。
五、 在web.xml中配置kangaroo-jslet的拦截器及过滤器
<!--kangaroo-jslet 的拦截器配置 -->
<servlet>
<description></description>
<display-name>Kangaroo</display-name>
<servlet-name>Kangaroo</servlet-name>
<servlet-class>org.kangaroo.jslet.servlet.JsletServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kangaroo</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<!--kangaroo-jslet 的过滤器配置 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.kangaroo.jslet.dispatcher.JsletDispatcher</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
六、 Kangaroo-Jslet的配置文件action.xml
action.xml文件结构:
*************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<Context>
<action id="jslettest" class="jslet.action2.JsletTestAction"/>
</Context>
**************************************************************************
说明:在配置文件根元素<Context>下包含若干<action>子元素,<action>子元素是用来指定jsp页面请求所对应的JsletAction实现类。其中id为页面请求的action,class为对应的JsletAction实现类。
七、 实现控制器Action
Kangaroo-Jslet控制器Action需要实现org.kangaroo.jslet.action.JsletAction接口。JsletAction接口包含三个方法:
public String execute( Form form , Encapsulation encapsulation );
public String getSuccess( );
public String getFial( );
1、 execute( Form form , Encapsulation encapsulation )方法
execute方法用于处理用户的请求,调用相关的业务逻辑,并将结果进行封装。其中返回值为“SUCCESS”表示处理成功。返回值为“FAIL”表示处理结果失败。
execute传入的参数Form对象中封装了jsp页面请求中的页面元素。可以通过方法 form . getFormElement(“元素名”)来取得页面元素的值。通过form . getSessionElement(“元素名”)来取得Session中元素的值。
另外在form中还封装了客户端的请求及浏览器等信息,具体如下:
元素名 说明 调用方法
kMethod 客户端向服务器端传送数据的方法 form.getFormElement(“kMethod”).toString()
kRemoteAddr 获得客户端的IP地址 form.getFormElement(“kRemoteAddr”).toString()
kRemoteHost 获得客户端机器名 form.getFormElement(“kRemoteHost”).toString()
kUri 获得发出请求的客户端的IP地址 form.getFormElement(“kUri”).toString()
kServerName 获得服务器名 form.getFormElement(“kServerName”).toString()
kServerPort 获得服务器的端口号 form.getFormElement(“kServerPort”).toString()
kPath 获得客户端所请求的脚本文件路径 form.getFormElement(“kPath”).toString()
kBrowser 获得客户端浏览器信息 form.getFormElement(“kBrowser”).toString()
execute传入的参数Encapsulation对象,是用来封装Action的处理结果。可以通过encapsulation . put(“封装的属性名”,封装的对象); 来封装处理结果对象,通过encapsulation . putSession(“封装的属性名”,封装的对象); 将对象封装到Session中。若要获取上述封装对象,可以在jsp中通过request . getAttribute(“封装的属性名”)及session . getAttribute(“封装的属性名”)来获取相应的对象。
2、 getSuccess()方法
getSuccess()方法用来指定Action处理成功的转向页面。也就是说当execute方法返回值为“SUCCESS”时,控制器所要跳转的页面。
3、 getFail()方法
getFail()方法用来指定Action处理失败的转向页面。也就是当execute方法返回值为“FAIL”时,控制器所要跳转的页面。
八、 简单的Kangaroo-Jslet应用示例
1、 新建web项目,将kangaroo-jslet-2.0.0.jar及dom4j-1.6.1.jar两个jar文件加入到项目目录WEB-INF\lib下。
2、 在项目的WEB-INF下建立kangarooconfig . xml并在kangarooconfig.xml中加入如下内容:
************************************************************
<?xml version="1.0" encoding="GBK"?>
<result>
<value>
<name>action</name>
<source>D:/kangaroodemo/action.xml</source>
</value>
</result>
*************************************************************
3、 在web.xml文件中增加kangaroo-jslet的控制器及过滤器
*************************************************************
<servlet>
<description></description>
<display-name>Kangaroo</display-name>
<servlet-name>Kangaroo</servlet-name>
<servlet-class>org.kangaroo.jslet.servlet.JsletServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kangaroo</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.kangaroo.jslet.dispatcher.JsletDispatcher</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
***********************************************************************
4、 新建请求页面index.jsp
*********************************************************************
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>jsplet-test</title>
</head>
<body>
<form action="jslettest.action" method="post" >
<table >
<tr>
<td>姓名:</td>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" value=""></td>
</tr>
</table>
<input type="submit" value="提交">
</form>
</body>
</html>
**************************************************************************
5、新建Action:JslatTestAction.java
**************************************************************************
package jslet.action2;
import org.kangaroo.jslet.action.JsletAction;
import org.kangaroo.jslet.interfaces.Encapsulation;
import org.kangaroo.jslet.interfaces.Form;
public class JsletTestAction implements JsletAction {
public String execute(Form form, Encapsulation en) {
String retvalue="";
String name = "";
String password = "";
name = form.getFormElement("name").toString();
password = form.getFormElement("password").toString();
if( name.equals("jslet") && password.equals("123456") ){
en.putSession("loginname", name);
en.putSession("loginpassword", password);
en.put("word", "欢迎使用Jslet!");
retvalue="SUCCESS";
}else{
String error ="用户名、密码不正确";
en.put("failstring", error);
retvalue="FAIL";
}
return retvalue;
}
public String getFail() {
return "fail.jsp";
}
public String getSuccess() {
return "wellcom.jsp";
}
}
**************************************************************************
6、在D盘下建立目录kangaroodemo并在其中建立文件action . xml并加入配置
**************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<Context>
<action id="jslettest" class="jslet.action2.JsletTestAction"/>
</Context>
**************************************************************************
7、新建wellcom.jsp
**************************************************************************
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String name = (String)session.getAttribute("loginname");
String password =(String) session.getAttribute("loginpassword");
String word =(String)request.getAttribute("word");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>wellcom</title>
</head>
<body>
<form>
<table>
<tr>
<td>姓名:</td><td><%=name %></td>
</tr>
<tr>
<td>密码:</td><td><%=password %></td>
</tr>
<tr>
<td>问候:</td><td><%=word %></td>
</tr>
</form>
</body>
</html>
**************************************************************************
8、新建fail . jsp
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String error = request.getAttribute("failstring");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Jslet test</title>
</head>
<body>
<%=error %>
</body>
</html>
***************************************************************************
示例程序效果:
登陆页面:index.jsp
在登陆页面输入正确的用户名和密码,转向的欢迎页面:wellcom.jsp
登陆页面输入错误的用户名或密码,转向fail.jsp
相关推荐
《机械制造工艺设计简明手册》是一本涵盖了机械加工工艺设计全方位信息的实用参考资料。它旨在为工程师、技术人员以及学生提供一个便捷的工具,帮助他们在实际工作中快速查找和理解各种机械制造过程的关键参数。 ...
尽管给定的部分内容并未提供关于“切削用量简明手册”的具体信息,但从标题和描述来看,这份手册显然是为机械加工领域内的专业人士和学生准备的,旨在提供有关切削用量选择的基本指导。切削用量是机械加工过程中一个...
实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路简明手册实用电子器件和电路...
Cisco配置简明手册 Cisco配置简明手册 Cisco配置简明手册 Cisco配置简明手册
中国科学院计算技术研究所,王晋东大大。 该书简明地介绍迁移学习的概念与基本方法,并对其中的领域自适应问题中的若干代表性方法进行讲述。最后,简要探讨迁移学习未来可能的方向。
Python绝对简明手册
之前师姐分享给我的迁移学习简明手册(王晋东 中国科学院计算技术研究所) 编写逻辑围绕:是什么——介绍迁移学习;为什么——为什么要用迁移学 习、为什么能用;怎么办——如何进行迁移 (迁移学习方法)。
V8多功能电法仪施工简明手册是一份详细指导如何操作***地球物理数据采集系统的文档。手册由恒达新创(北京)地球物理技术有限公司整理,是基于多年技术服务经验的简明操作手册,涵盖了V8系统的基本信息、施工流程、...
### FireMonkey开发技术简明手册知识点总结 #### 一、FireMonkey概述与技术特点 **FireMonkey**是一种现代化的开发框架,旨在帮助开发者快速构建出高性能的、支持高分辨率及三维渲染的应用程序,适用于Windows、...
### 普通螺纹塞规简明手册知识点解析 #### 一、普通螺纹塞规简介 在机械加工行业中,普通螺纹塞规是一种常用的测量工具,主要用于检测螺纹孔的尺寸精度是否符合标准。螺纹塞规分为两种基本类型:通端和止端。通端...
"西门子 Operate 手册_828D 铣削宏程序简明手册_2019.pdf" 该手册主要介绍西门子 Operate 828D 铣削宏程序的基本概念、特点、用途以及宏变量的使用。下面是对该手册的详细知识点总结: 宏程序概述 * 宏程序是一种...
### VI简明手册知识点详解 #### 一、VI的工作模式 **Vi** 是一款非常流行的文本编辑器,尤其是在 Unix 和 Linux 系统中被广泛使用。它具备三种基本的工作模式:**编辑模式**、**插入模式** 和 **命令模式**。 - *...
化学工程师简明手册。包括物质的性质、气体性质、常用试剂、溶液配制、试验室常用仪器、材料、设备等章节
常用电子元器件简明手册,希望大家好好利用吧!
Python简明手册 本手册旨在为 Python 新手提供一份简明的指南,涵盖基本语法、控制结构、函数、异常处理、内建类型等方面的知识点。 1. 基本语法 Python 的基本语法与 C 语言相似,但有一些不同的地方。例如,在 ...
《SUSE Linux 简明手册》是一本针对Linux初学者和进阶用户的实用指南,旨在帮助读者掌握Linux操作系统的基础知识以及常用命令的使用。本书主要涵盖了Linux的基础知识、常用命令、文件操作以及系统管理等多个方面,...
ERP实施ERP实施简明手册 实用的软件手册简明手册 实用的软件手册
根据提供的文件信息,我们无法获取到具体的“简明空调设计手册.pdf”的全文内容,因此无法为该手册提供详细的知识点。但是,通过分析文件的标题、描述以及部分内容,可以推测手册中可能包含的知识点与空调系统的设计...
《机械加工工艺简明手册》是一本专门为机械制造行业从业人员准备的实用工具书。它精简了大量技术标准,只保留了最常用、最实用的知识点,旨在帮助工程师们快速解决实际工作中的问题,提高生产效率。这本书的核心内容...