- 浏览: 333814 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
y_715:
document.getElementById("e ...
JSTL EC TABLE extremeTable 学习 -
wangyj0898:
学习了。。。
display table 标签用法 -
hejiajie2008:
没有图啊
图解myeclipse把maven普通java项目变成web项目的全程操作 -
zhangyu_2100:
[align=center][/align][color=br ...
request.getRealPath()的替代方法 -
senhui19:
LZ写的真不错呀,现在开发中都经常是用DetachedCrit ...
Hibernate的Criteria用法总结
功能:
通过请求的参数来决定该执行哪一个方法,而不像一般的Action,从Execute方法执行。在一个窗体中包括两个以上同名的按钮时,由Struts来决定具体执行那个按钮操作,减少了Action类,增加了请求处理的灵活性
AppFuse1.7与AppFuse1.8的BaseAction区别
AppFuse1.7是继承LookupDispatchAction, 需要复写 getKeyMethodMap()方法
具体可参考http://blog.csdn.net/GOALSTAR/archive/2005/12/05/543802.aspx
AppFuse1.8是继承DispatchAction
AppFuse1.8中BaseAction的主要方法
1.getBean()方法,得到Bean的对象
public Object getBean (String name) {
if (ctx == null) {
ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
}
return ctx.getBean(name);
}
2.convert() 对象转换方法,用来实现POJOs à ActionForm & ActionForm à POJOs 的转换
// 调用ConvertUtil#convert(java.lang.Object)
protected Object convert (Object o) throws Exception {
return ConvertUtil.convert(o);
}
3.execute()的方法
public ActionForward execute (ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (isCancelled(request)) {
try {
getMethod("cancel");
return dispatchMethod(mapping, form, request, response, "cancel");
} catch (NoSuchMethodException n) {
log.warn("No 'cancel' method found, returning null");
return cancelled(mapping, form, request, response);
}
}
// Check to see if methodName indicated by request parameter
String actionMethod = getActionMethodWithMapping(request, mapping);
if (actionMethod != null) {
return dispatchMethod(mapping, form, request, response, actionMethod);
} else {
String[] rules = {"edit", "save", "search", "view"};
for (int i = 0; i < rules.length; i++) {
// apply the rules for automatically appending the method name
if (request.getServletPath().indexOf(rules[i]) > -1) {
return dispatchMethod(mapping, form, request, response, rules[i]);
}
}
}
return super.execute(mapping, form, request, response);
}
在AppFuse1.8中BaseAction是继承DispatchAction , 使用struts时我们经常会用到DispatchAction.有了这个类,我们不需要针对每一个Action都要写一个特定的类,而是可以把一些相关的方法放到一个类中.
DispatchActon中使用了reflection来根据你传入的method参数的值来获取相应的参数来处理你的请求.正如他的方法 -- 他根据你传入的请求参数,用不同的方法来处理你的请求.
只要看看struts中DispatchAction(以下简写做DA)的源文件你就会发现,它有一个dispatchMethod方法,接受5个参数.其中4个就是我们通常的struts action里的(mapping,request,response,form),还有一个参数就是指定方法的参数的名字.
Ø Struts-config.xml中的配置
<action path="/editUser" ype="smarthings.webapp.action.UserAction" name="userForm" scope="request"
input="list" roles="admin" parameter="method" unknown="false" validate="false" >
<forward name="viewUsers" path="/editUser.html?method=Search( edit / save / delete )"/>
</action>
然后在Action中具体的实现Action都是继承了BaseAction的.比如
public final class PeopleAction extends BaseAction {
//具体的操作方法search
public ActionForward search(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//具体的操作方法cancel
public ActionForward cancel(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {………}
//具体的操作方法delete
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {………}
//具体的操作方法Edit
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {……}
………
………
通过请求的参数来决定该执行哪一个方法,而不像一般的Action,从Execute方法执行。在一个窗体中包括两个以上同名的按钮时,由Struts来决定具体执行那个按钮操作,减少了Action类,增加了请求处理的灵活性
AppFuse1.7与AppFuse1.8的BaseAction区别
AppFuse1.7是继承LookupDispatchAction, 需要复写 getKeyMethodMap()方法
具体可参考http://blog.csdn.net/GOALSTAR/archive/2005/12/05/543802.aspx
AppFuse1.8是继承DispatchAction
AppFuse1.8中BaseAction的主要方法
1.getBean()方法,得到Bean的对象
public Object getBean (String name) {
if (ctx == null) {
ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
}
return ctx.getBean(name);
}
2.convert() 对象转换方法,用来实现POJOs à ActionForm & ActionForm à POJOs 的转换
// 调用ConvertUtil#convert(java.lang.Object)
protected Object convert (Object o) throws Exception {
return ConvertUtil.convert(o);
}
3.execute()的方法
public ActionForward execute (ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (isCancelled(request)) {
try {
getMethod("cancel");
return dispatchMethod(mapping, form, request, response, "cancel");
} catch (NoSuchMethodException n) {
log.warn("No 'cancel' method found, returning null");
return cancelled(mapping, form, request, response);
}
}
// Check to see if methodName indicated by request parameter
String actionMethod = getActionMethodWithMapping(request, mapping);
if (actionMethod != null) {
return dispatchMethod(mapping, form, request, response, actionMethod);
} else {
String[] rules = {"edit", "save", "search", "view"};
for (int i = 0; i < rules.length; i++) {
// apply the rules for automatically appending the method name
if (request.getServletPath().indexOf(rules[i]) > -1) {
return dispatchMethod(mapping, form, request, response, rules[i]);
}
}
}
return super.execute(mapping, form, request, response);
}
在AppFuse1.8中BaseAction是继承DispatchAction , 使用struts时我们经常会用到DispatchAction.有了这个类,我们不需要针对每一个Action都要写一个特定的类,而是可以把一些相关的方法放到一个类中.
DispatchActon中使用了reflection来根据你传入的method参数的值来获取相应的参数来处理你的请求.正如他的方法 -- 他根据你传入的请求参数,用不同的方法来处理你的请求.
只要看看struts中DispatchAction(以下简写做DA)的源文件你就会发现,它有一个dispatchMethod方法,接受5个参数.其中4个就是我们通常的struts action里的(mapping,request,response,form),还有一个参数就是指定方法的参数的名字.
Ø Struts-config.xml中的配置
<action path="/editUser" ype="smarthings.webapp.action.UserAction" name="userForm" scope="request"
input="list" roles="admin" parameter="method" unknown="false" validate="false" >
<forward name="viewUsers" path="/editUser.html?method=Search( edit / save / delete )"/>
</action>
然后在Action中具体的实现Action都是继承了BaseAction的.比如
public final class PeopleAction extends BaseAction {
//具体的操作方法search
public ActionForward search(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//具体的操作方法cancel
public ActionForward cancel(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {………}
//具体的操作方法delete
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {………}
//具体的操作方法Edit
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {……}
………
………
发表评论
-
java.lang.NoClassDefFoundError: javax/el/ELException
2010-09-06 01:07 2601在maven中配置以下依赖: <depe ... -
配置过滤器
2009-12-28 12:04 1136配置过滤器,通过mapping ... -
关于div的隐藏
2009-12-28 12:01 1075div的visibility可以控制div的显示和隐藏,但是隐 ... -
request.getRealPath()的替代方法
2009-08-25 15:26 2875替代方法是: 写道 request.getSession( ... -
JSP注释详解(新手必看)
2009-07-03 14:14 1443在客户端显示一个注释. JSP 语法<!-- comme ... -
把JSP放到WEB-INF后以保护JSP源代码
2008-12-15 10:58 1607本人在看《J2EE核心模式》(“Core J2ee Patte ... -
struts配置文件中<forward>标签的redirect属性
2008-12-02 20:47 2390struts-config.xml中有这样 ... -
STRUTS中ec标签的用法
2008-11-25 16:41 25181.<ec:table items="pres ... -
JSP生成彩色验证码
2008-06-28 09:47 1251程序代码image.jsp<%@ page conten ... -
对表单输入的数据做校验
2008-05-23 20:11 1221对表单输入的数据做校验 在struts中带有了Jakarta ... -
活学活用 Struts (转)
2008-04-11 16:02 15491.概述 Struts大家都很熟悉,不再详细介绍,另 ... -
newValue
2008-03-17 13:14 1399public List getAllList(String x ... -
web开发设计displaytag应用指南
2008-03-10 15:26 1508DisplayTag是一个非常好用的表格显示标签,适合MVC模 ... -
display table 标签用法
2008-03-10 15:25 5665在web.xml下添加一个filter <filte ... -
jstl之foreach循环
2008-03-10 15:04 1580<%@ page contentType="t ... -
JSTL1.1函数标签库(functions)如fn:length
2008-03-10 15:02 14407在jstl中的fn标签也是我 ... -
JSP Struts之HTML标签库详解
2008-03-10 15:00 1885Struts提供了五个标签库,即:HTML、Bean、Logi ... -
web.xml详解
2008-03-10 14:51 5522web.xml元素介绍 每一个站的WEB-INF下都有一个we ... -
Struts配置文件详解(3)
2008-03-10 14:50 1291<?xml version="1.0" ... -
Struts配置文件详解(2)
2008-03-10 14:49 1813关于 Struts中 struts-config.xml文件的 ...
相关推荐
4. **控制器层(Controller Layer)**:在AppFuse 2.0中,可能是基于Struts或Tapestry的Action类,处理HTTP请求并调用服务层方法。 5. **视图层(View Layer)**:可以是JSP页面,使用Tiles或FreeMarker模板引擎...
### AppFuse开发框架(myapp)使用说明文档 #### 一、配置开发环境 AppFuse是一个开源的Java Web应用开发框架,旨在提供一个快速的应用程序开发基础。为了更好地使用AppFuse框架进行开发,以下是对开发环境配置的...
在本文中,我们将深入了解如何安装并部署 AppFuse 项目。 **1. 预备知识** 在开始之前,确保你已经具备以下基础: - 熟悉 Java 开发环境,例如 JDK 已经正确安装。 - 理解 Maven 构建工具的基本概念和使用方法。 - ...
标题“APPFUSE2.0中加入FCKeditor”指的是在APPFUSE 2.0这个开源项目中集成FCKeditor这一富文本编辑器的过程。APPFUSE是一个快速开发框架,它结合了Spring、Hibernate、Struts等流行技术,帮助开发者迅速构建Java ...
AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的经验,并且是多个开源项目的贡献者,包括Roller Weblogger...
#### 二、AppFuse配置说明 根据给定的文件信息,我们可以详细解析如何配置和使用AppFuse进行开发。以下是详细的配置步骤: ##### 1. **搭建开发环境** - **下载AppFuse源码**:从官方网站下载`appfuse-1.9.3-src....
AppFuse分为1.x和2.0两个主要版本,其中2.0版是重构建的,采用了Maven 2作为构建工具,而1.x版本则使用Ant。 Maven 2的引入带来了许多优势,包括自动下载依赖项、简化维护(因为所有组件可以一次编译)以及方便最终...
在 `web.xml` 文件中配置这个监听器,使得容器在启动时能够调用 `contextInitialized` 方法,完成必要的设置工作。 `StartupListener` 的主要职责包括: 1. 初始化配置信息:从 `web.xml` 中读取配置参数,例如 `...
### Appfuse 学习笔记 #### 一、Appfuse 简介 Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是...
主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.
在Appfuse中,我们首先创建一个POJO类,然后使用XDoclet工具来生成对应的数据库表定义。XDoclet是一种基于Javadoc的元数据处理器,它可以读取类上的注解,并自动生成相关的代码,如Hibernate的映射文件或Spring的...
在本教程中,我们将深入了解如何利用Maven这个强大的构建工具来搭建和管理AppFuse应用。 首先,我们需要理解Maven。Maven是Apache软件基金会开发的一个项目管理和综合工具,主要通过一个项目对象模型(Project ...
**Appfuse** 是由 Matt Raible 开发的一款面向 J2EE 的框架,其主要目的是为开发者提供一套集成多个流行框架(如 Spring、Hibernate、iBatis、Struts、Xdoclet、JUnit 等)的开发模板。通过这一框架,开发者可以更...
在最新的版本2.1.0-M2中,AppFuse 提供了基本(basic)和模块化(modular)两种类型的原型,以便于开发者根据项目需求选择合适的方式来创建项目。 建立项目原型骨架的步骤如下: 1. 首先,通过Maven的archetype...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
Hibernate4在AppFuse中用于持久化数据,提供了强大的查询语言HQL(Hibernate Query Language)以及 Criteria API,能够方便地进行数据检索、更新和删除操作。 在"pfms_lib"这个压缩包中,我们可能会找到以下关键...