这篇博客介绍,学习struts中的模式匹配。
以对用户的操作讲,包括四种操作:增、删、改、查,开发中,如果每一种操作都对应一个action,那么开发一个项目中,每种逻辑都按这样开发,那么每个逻辑都应四个action类,这样会有很多的action。没有必要,为了简化,每个逻辑的增、删、改、查都写在一个action中。struts1通过模式匹配判断在一个Action中调用相应的方法。
以管理用户实例来演示。主要是strus-config.xml文件的配置,不管用户增、删、改、查的逻辑处理。
1.管理用户类:
package com.bjpowernode.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
/**
* 管理用户类,实现用户的增、删、改、查
* @author xj
*
*/
public class UserAction extends DispatchAction {
//添加用户
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
return mapping.findForward("success");
}
//删除用户
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
return mapping.findForward("success");
}
//修改用于
public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
return mapping.findForward("success");
}
}
2.配置文件
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<action-mappings>
<action path="/user/*"
type="com.bjpowernode.struts.UserAction"
parameter="command"
>
<forward name="success"path="/user/{1}_success.jsp"/>
</action>
</action-mappings>
</struts-config>
3.JSP页面调用
<body>
<a href="user/add.do?command=add">添加</a><br>
<a href="user/del.do?command=del">删除</a><br>
<a href="user/update.do?command=update">修改</a><br>
</body>
总结:
在配置文件中,<action-mappings>
中<action>
标签的路径配置,使用通配符。不论用户请求哪些页面,都会读取此<action>
的配置。截取用户请求连接,映射到userAction中,根据parameter的配置,调用相应的方法,完成逻辑处理,进行页面跳转。
在配置文件中,跳转路径存在一个占位符,这个占位符,将是从截取用户访问连接中截取。所以,这里存在一个约定,用户请求的路径中的名称必须与将要跳转到的页面名称一致。
在这个实例中,以添加为例,请求连接为“/user/add.do”,所以,会存在add_success.jsp页面.作为用户添加用户成功后,将要跳转到的页面。