Jslet 简明手册

一、 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值