| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
清单 5. - JoinAction.perform()
网管联盟bitsCN_com
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// 抽取我们将会用到的属性和参数
JoinForm joinForm = (JoinForm) form;
网管朋友网www_bitscn_net
String email = joinForm.getEmail();
ActionErrors errors = new ActionErrors();
// 存储输入....
try {
business.db.MailingList.AddEmail(email);
} catch (Exception e) {
// 记录日志,打印栈
// 将错误回显给用户
网管联盟bitsCN@com
errors.add("email",new ActionError("error.mailing.db.add"));
}
// 如需任何消息,请将指定的错误消息键保存到
网管下载dl.bitscn.com
// HTTP 请求中,以供 <struts:errors> 标记使用。
if (!errors.empty()) {
网管联盟bitsCN_com
saveErrors(request, errors);
// 返回到初始表单
return (new ActionForward(mapping.getInput()));
网管网www_bitscn_com
}
// 将控制权转交给 Action.xml 中指定的 'success' URI
return (mapping.findForward("success"));
}
网管u家bitscn.net
注: perform() 返回一个称为 ActionForward 的类,该类通知控制器下一步该执行什么操作。在本例中,我使用从控制器传入的映射来决定下一步的操作。
网管有家bitscn.net
控制器
我已修改了 JSP 文件,并创建了两个新类:一个类用来包含表单数据,一个类用来调用业务包。最后,我通过修改配置文件 struts-config.xml 将它们整合起来。清单 6 显示了我添加的 action 元素,这个元素用来控制 joinMVC.jsp 的流程。
清单 6. Action 配置
网管联盟bitsCN@com
<action path="/join"
name="joinForm"
type="web.mailinglist.JoinAction"
scope="request"
input="/joinMVC.jsp"
validate="true">
<forward name="success" path="/welcome.html"/>
中国网管论坛bbs.bitsCN.com
</action>
action 元素描述了从请求路径到相应的 Action 类的映射,应该用这些类来处理来自这个路径的请求。每个请求类型都应该有相应的 action 元素,用来描述如何处理该请求。对于 join 请求:
使用 Struts 前后的比较
正如我们在图 9 中所看到的那样,复杂性和层都有显著增加。不再存在从 JSP 文件到 Service 层的直接调用。

图 9. 使用 Struts 前后的比较
Struts 的优点
|
0
|
评论加载中…