


















第二步:实现controller。在Struts中继承自Action。调用Model,实现数据的深层次检验(email是否存在)和数据的插入,程序的跳转等。代码如下:
SignAction.java
1
/**
2
* @author han
3
* soochow university
4
* 实现Action,controller
5
*/
6
public class SignAction extends Action {
7
8
public ActionForward execute(ActionMapping mapping, ActionForm form,
9
HttpServletRequest request,HttpServletResponse response
10
) throws Exception{
11
12
/* 参数说明:
13
* ActionMapping 实现跳转,控制页面
14
* ActionForm 在viewer中实现的bean,继承自ActionForm,获得form中的数据
15
* HttpServletRequest request
16
* HttpServeletRsponse response
17
*/
18
19
ActionErrors errors = new ActionErrors(); //错误处理,详细信息见本blog的《Struts错误处理》
20
21
/*
22
* 得到form中的数据,因为form中的数据在SignForm中,做一类型转换即可;
23
* 这个要在struts-config.xml中进行说明
24
*/
25
SignForm sf = (SignForm) form;
26
27
/*
28
* 调用Model业务逻辑。
29
*/
30
SignModel sign = new SignModel();
31
32
sign.setEmail(sf.getEmail());
33
sign.setUserid(sf.getUserid());
34
35
/*
36
* 调用Model的findUserByEmail 和 findUserByUserid 判断
37
* email和userid是否存在。
38
* 如果存在,则添加出错信息,页面跳转到mapping.getInputforward(),需要在
39
* struts-config.xml中定义。
40
* 关于错误的详细信息请参看本blog的《struts错误处理》文章。
41
*/
42
//email existed
43
if (sign.findUserByEmail()){
44
errors.add("email.existed",new ActionError("email.existed", sign.getEmail()));
45
this.saveErrors(request, errors);
46
return mapping.getInputForward();
47
}
48
49
//userid existed
50
if (sign.findUserByUserid()){
51
errors.add("userid.existed", new ActionError("userid.existed",sf.getUserid()));
52
this.saveErrors(request, errors);
53
return mapping.getInputForward();
54
}
55
56
/*
57
* 调用Model的sendPassword将系统生成的密码发送到用户信箱。
58
* 如果发生错误转到mapping.getInputForward(),这个需要在struts-config.xml中定义
59
* 详细信息见后面的struts-config.xml文件说明
60
*/
61
if (sign.sendPassword()){
62
sign.saveNewUser();
63
}else{ //邮件发送错误
64
errors.add("email.send.error", new ActionError("email.send.error", sf.getEmail()));
65
this.saveErrors(request, errors);
66
return mapping.getInputForward();
67
}
68
69
/*
70
* 如果注册成功,页面跳转到mapping.findForward("home")
71
* 这个需要在struts-config.xml中定义
72
* 详细信息见后面的struts-config.xml文件说明
73
*/
74
return mapping.findForward("home");
75
76
77
}
78
}
说明:
1、SignAction实现MVC中的controller,通过mapping参数来实现跳转,在controller中调用了Model中的一些操作,根据操作结果来实现跳转。
2、程序中包括了Struts的错误处理(请见本blog的《struts错误处理》)、资源文件的使用,并且好多处代码都和struts的配置文件struts-config.xml有联系
3、关键代码处都有详细的注释,若还有疑问,请您留言,我们共同探讨。
第三步:实现Model,业务逻辑。用户注册程序比较简单,主要实现findUserByUserid()、findUserByEmail()、sendPassword()、saveNewUser()等功能。代码如下:
SignForm.java
说明:
1、saveNewUser()使用了Hibernate作为持久化工具,关于Hibernate请参阅相关资料,也可以留言我们共同讨论。
2、sendPassword()使用JavaMail发送Email,本文件通过SendMail工具类实现。
3、密码生成由RandStringGenerator()工具类生成。
4、工具类可以点击这里下载。
第四步:配置struts-config.xml。
第五步:调试程序。经过上面的说明和代码示例是不是对Struts中的MVC架构有了比较清晰的了解,我们知道在java特别是j2ee的软件中,需要设置很多的配置文件,刚开始的时候非常烦,特别是频频出错的时候,那种感觉学java的人应该都尝过哦!但是当你彻底了解了配置文件的确切含义,并且能和代码中的内容进行联系时,就会豁然开朗了,就不会觉得象走进死胡同似的。
有了上面struts-config.xml中的说明,相信你已经和代码联系起来了,如果将这个程序调试成功,那么你就可以说我已经对struts设计MVC Web程序入门了,一旦跨进了这个门槛,你会觉得学习起来是那么的轻松,一些来得是那么自然。
好了,希望以上三篇文章能带你走进Struts,理解Struts,特别是熟悉Struts的基本流程,当然要想对一种模式由深入的了解,必须要多加实践,从实践中来体验到它的好处。
最后,希望你能彻底了解Struts,能为你所用。如果有什么意见和评论,请留言,我们共同讨论,共同进步。
谢谢你的阅读!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。