1.引用头:
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
2.全局跳转与异常
2.1:
<global-forwards>
<forward name="loginsuccess" path="/index.jsp" />
<forward name="fail" path="/fail.jsp"></forward>
</global-forwards>
2.2首先在<global-exception>(全局异常)或<action>(局部异
常)元素中嵌
套<exception>元素,一个<exception>元素代表一种类别的异常,如下:
<exception type="type" handler="handler"
path="path" key="key"
bundle="bundle" scope="scope"/>
type:指定待处理的异常类。
handler:指定异常处理类,默认值为
org.apache.struts.action.ExceptionHandler。如果设置为用户
自定义的异常处理类,则该类必须继承ExceptionHandler。
path:指定转发路径。
key:指定错误消息的key,Struts框架将根据这个key到Resource
Bundle中寻找匹配的消息文本。
bundle:指定Resource Bundle,如果没有设置此项,将使用默认的Resource
Bundle。
scope:指定ActionMessages的存放范围,可选值包括request和session。默认值为
request。
在指定了所有的异常后,可以加一个<exception
type="java.lang.Exception"
.../>来捕获尚未指定的其它异常,并可以指定该key的值为"系统错误......"。
<global-exceptions>
<exception key="error.exception"
type="com.struts.action.ErrorCodeException"
handler="com.struts.action.ErrorCodeExceptionHandler"
path="/fail.jsp">
</exception>
</global-exceptions>
public class ErrorCodeException extends RuntimeException {
public ErrorCodeException(String errorCode) {
super(errorCode);
}
}
public class ErrorCodeExceptionHandler extends ExceptionHandler {
public ActionForward execute(Exception ex, ExceptionConfig ae,
ActionMapping mapping, ActionForm formInstance,
HttpServletRequest request, HttpServletResponse response)
throws ServletException {
if(!(ex instanceof ErrorCodeException)){
if (ex instanceof NullPointerException) {
throw new ErrorCodeException("请确认数据完整,否则联系管理员!");
}
return super.execute(ex, ae, mapping, formInstance, request, response);
}
ActionForward forward = null;
ActionMessage error = null;
String property = null;
// Build the forward from the exception mapping if it exists
// or from the form input
if (ae.getPath() != null) {
forward = new ActionForward(ae.getPath());
} else {
forward = mapping.getInputForward();
}
// Figure out the error
if (ex instanceof ModuleException) {
error = ((ModuleException) ex).getActionMessage();
property = ((ModuleException) ex).getProperty();
} else {
ErrorCodeException appe = (ErrorCodeException) ex;
// ae.getKey() 没用
// appe.getMessage() ("用户不能找到【" + username + "】
error = new ActionMessage(ae.getKey(), appe.getMessage());
property = error.getKey();
}
this.logException(ex);
// Store the exception
request.setAttribute(Globals.EXCEPTION_KEY, ex);
this.storeException(request, property, error, forward, ae.getScope());
return forward;
}
}
3.action、actionform配置:
3.1---actionform分 ActionForm与 DynaValidatorForm细分带验证与非验证的
<form-bean type="com.struts.action.login.LoginForm" name="LoginForm" />
<form-bean name="upFileForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="file" type="org.apache.struts.upload.FormFile" />
<form-property name="userid" type="java.lang.String[]" />
</form-bean>
<form-bean name="addUserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="phone" type="java.lang.String" />
<form-property name="userid" type="java.lang.String" />
<form-property name="username" type="java.lang.String" />
</form-bean>
3.2--action分Action、DispatchAction、 LookupDispatchAction、MappingDispatchAction
LookupDispatchAction
通过这个Action抽象类继承DispatchAction,它的相应方法的执行由
ActionMapping中parameter属性决定。它适合在一个form中有很多按钮,按不同的按钮则执行不同的操作。
<action path="/test"
type="org.example.MyAction"
name="MyForm
scope="request"
input="/test.jsp"
parameter="method"/>
ApplicationResources.properties:
button.add=Add Record
button.delete=Delete Record
JSP:
<html:form
action="/test">
<html:submit
property="method">
<bean:message
key="button.add"/>
</html:submit>
<html:submit
property="method">
<bean:message
key="button.delete"/>
</html:submit>
</html:form>
在Action
中必须实现getKeyMethodMap:
protected Map getKeyMethodMap()
{
Map map = new HashMap();
map.put("button.add",
"add");
map.put("button.delete",
"delete");
return map;
}
public ActionForward
add(ActionMapping mapping,
ActionForm form,
HttpServletRequest
request,
HttpServletResponse
response)
throws IOException,
ServletException {
// do add
return
mapping.findForward("success");
}
public ActionForward
delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest
request,
HttpServletResponse
response)
throws IOException,
ServletException {
// do delete
return
mapping.findForward("success");
}
MappingDispatchAction
public class MappingDispatchAction
extends DispatchAction
它的相应方法的执行由 ActionMapping中parameter名决定,注意这里和LookupDispatchAction不同,LookupDispatchAction的
相应方法的执行由 ActionMapping中parameter属
性决定,
struts-config.xml:
<action
path="/saveSubscription"
type="org.example.SubscriptionAction"
name="subscriptionForm"
scope="request"
input="/subscription.jsp"
parameter="method"/>
Action:
public ActionForward
create(ActionMapping mapping, ActionForm form, HttpServletRequest
request, HttpServletResponse response) throws Exception
public ActionForward
edit(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
public ActionForward
save(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
public ActionForward
delete(ActionMapping mapping, ActionForm form, HttpServletRequest
request, HttpServletResponse response) throws Exception
public ActionForward
list(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
for which you would create
corresponding <action> configurations that reference this class:
<action
path="/createSubscription"
type="org.example.SubscriptionAction"
parameter="create">
<forward name="success"
path="/editSubscription.jsp"/>
</action>
<action
path="/editSubscription"
type="org.example.SubscriptionAction"
parameter="edit">
<forward name="success"
path="/editSubscription.jsp"/>
</action>
<action
path="/saveSubscription"
type="org.example.SubscriptionAction"
parameter="save"
name="subscriptionForm"
validate="true"
input="/editSubscription.jsp"
scope="request">
<forward name="success"
path="/savedSubscription.jsp"/>
</action>
<action
path="/deleteSubscription"
type="org.example.SubscriptionAction"
name="subscriptionForm"
scope="request"
input="/subscription.jsp"
parameter="delete">
<forward name="success"
path="/deletedSubscription.jsp"/>
</action>
<action
path="/listSubscriptions"
type="org.example.SubscriptionAction"
parameter="list">
<forward name="success"
path="/subscriptionList.jsp"/>
</action>
4.资源文件:
<message-resources parameter="com.sordine.meter.struts.ApplicationResources" />
5.验证插件:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
分享到:
相关推荐
Struts1.2 API 是一个重要的开发资源,它包含了 Apache Struts 1.2 框架的所有核心组件、类库以及接口的详细说明。这个API文档是开发者解决与Struts1.2框架相关问题的关键工具,能帮助他们更好地理解和使用这个经典...
Struts1.2驱动包是Java Web开发中一个重要的组件,它是Apache Struts框架的特定版本,用于支持基于Model-View-Controller (MVC)设计模式的应用程序开发。Struts1.2因其稳定性和广泛的功能集而在过去备受推崇,尤其在...
1. **配置struts-config.xml**:定义ActionMapping、ActionForm和Action。 2. **创建ActionForm**:定义表单字段并实现validate()方法进行数据校验。 3. **编写Action类**:实现业务逻辑,处理ActionForm中的数据。 ...
Struts1.2通过配置struts-config.xml文件来定义这些行为。 其次,Spring2.5框架的依赖注入(DI)特性允许开发者解耦组件,通过容器管理对象的生命周期和依赖关系。同时,Spring的AOP模块支持切面编程,可以实现事务...
- struts-config.xml:核心配置文件,定义了Action、ActionForm、ActionMapping和PlugIn等元素,是Struts框架的蓝图。 - web.xml:Web应用的部署描述符,配置ActionServlet。 **4. 表单验证** Struts 1.2提供了强大...
Struts1.2通过配置文件(struts-config.xml)定义了请求和Action之间的映射,以及Action如何与视图组件交互,从而实现了强大的页面控制器功能。 **Hibernate3.1** Hibernate3.1是一个对象关系映射(ORM)框架,它...
在配置Struts1.2时,你需要在web.xml中设置Struts的前端控制器Filter(通常为`org.apache.struts.action.ActionServlet`),并配置相应的Action Mapping。同时,还需要在struts-config.xml文件中定义Action、Form ...
Struts1.2-jars.zip 是一个专门为Java开发者准备的压缩包,包含了Struts1.2框架所需的多个jar文件。Struts是一个非常经典的MVC(Model-View-Controller)架构框架,它在Java Web开发中占有重要地位,尤其是在早期的...
标题与描述均指向了对Struts 1.2配置文件的深入解析,特别是web.xml与struts-config.xml这两个核心配置文件。以下是对这些关键知识点的详细解读: ### 一、Web配置文件web.xml #### 1. **Servlet与Servlet Mapping...
7. **配置管理**:struts-config.xml文件是Struts的核心配置文件,定义了Action、ActionForm、ActionForward、PlugIn等元素,控制着整个应用的运行流程。 8. **标签库**:Struts提供了丰富的自定义标签,如logic、...
3. **配置文件**:struts-config.xml是Struts的核心配置文件,定义了Action、ActionMapping、Forward等,用于指定请求处理流程。 4. **Tiles框架**:提供了一种模块化页面布局的方式,可以组合多个小的页面组件来...
Struts1.2中文学习手册是一本面向初学者的指南,它涵盖了Struts1.2的基础知识、配置、控制器、模型、视图以及动作和业务逻辑的整合。 首先,手册会介绍Struts1.2的核心概念,包括Action类、Form Bean和Tiles布局。...
2. **创建struts-config.xml**:这个文件是Struts1.2的主配置文件,用于定义Action、ActionForm、Forward、DataSource等,以及Action的映射规则。 3. **编写Action**:Action是处理用户请求的Java类,它实现了`...
4. **配置方式**:Struts2的配置文件更加简洁,可以使用XML或注解,而Struts1.2主要依赖XML配置。 5. **Action与结果**:在Struts2中,Action类不再负责视图的跳转,而是通过返回一个结果名,由框架决定跳转的页面...
3. **配置文件**:Struts1.2的配置主要包括struts-config.xml和web.xml。前者定义了Action类、Form Beans、Action Mapping以及Result Maps,后者用于部署描述符,配置Struts的初始化参数。 4. **Form Beans**:Form...
在Struts1.2中,这个请求会被Struts的ActionServlet捕获,ActionServlet会根据配置的Struts配置文件(struts-config.xml)来决定调用哪个Action类来处理请求。 对于包含列表的表单,用户可能需要在页面上输入多条...
在实际配置中,需要编写Action类(结合Spring的@Controller注解),配置Struts的配置文件(struts-config.xml),设置Hibernate的实体映射文件(hbm.xml),并整合Spring的ApplicationContext配置文件。 **配置步骤...
使用Struts1.2时,开发者需要在项目的`WEB-INF/lib`目录下添加这些jar文件,然后在Web应用的配置文件中指定Struts配置,这样就可以开始构建基于Struts1.2的应用了。然而,需要注意的是,尽管Struts1.2在当时非常流行...
Struts1.2 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会开发并维护。这个框架的主要目的是为了简化Web应用开发过程,提高可维护性和可扩展性。在"struts1.2-jars.rar...