如何安装Struts
首先到下载Struts建议使用release版现在最高版本为有多种OS版本(windowslinus)下载后解压开来可以看到这个目录lib和webappswebapps下有一些WAR文件假设你的Tomcat装在c:\\Tomcat下则将那些WAR文件拷贝到C:\\Tomcat\\webapps重新启动Tomcat即可打开浏览器在地址栏中输入//localhost:/Strutsexamples/若能见到powered by Struts的深蓝色图标即说明成功了这是Struts自带的一个例子附有详细的说明文档可以做为初学者的入门教程另外Struts还提供了一系统实用对象XML处理通过Java reflection APIs自动处理JavaBeans属性国际化的提示和消息等
练习做一个实例
一个用户注册系统用户通过网页输入相关信息注册ID号密码EMAIL若注册成功则返回成功提示信息反之出现注册失败提示信息
项目建立
正式开发前需要在Tocmat(我的tomcat装在c:\\tomcat)中建立此项目比较快的一种建立方式为在C:\\tomcat\\webapps下新建目录test再将C:\\tomcat\\webapps\\strutsexample下的WEBINF目录拷贝到test目录下然后将test\\WEBINF下的src和classes目录清空以及strutsconfigxml文件中内容清空即可这样我们需要的Struts类包及相关的配置文件就都齐了
开发时将JSP文件放在test目录下Java原文件放在test\\WEBINF\\src下编译后的类文件放在test\\WEBINF\\classes下
注册页面reguserjsp
<%@ page contentType=\text/html;charset=UTF\ language=\java\
%>
<%@ taglib uri=\/WEBINF/Strutsbeantld\ prefix=\bean\
%>
<%@ taglib uri=\/WEBINF/Strutshtmltld\ prefix=\html\
%>
<html:html locale=\true\>
<head>
<title>RegUser</title>
<html:base/>
</head>
<body bgcolor=\white\>
<html:errors/>
<html:form action=\/regUserAction\ focus=\logname\>
<table border=\\ width=\%\>
<tr>
<th align=\right\>
Logname:
</th>
<td align=\left\>
<html:text property=\logname\ size=\\ maxlength=\\/>
</td>
</tr>
<tr>
<th align=\right\>
Password:
</th>
<td align=\left\>
<html:password property=\password\ size=\\ maxlength=\\/>
</td>
</tr>
<tr> [Page]
<th align=\right\>
Email:
</th>
<td align=\left\>
<html:password property=\email\ size=\\ maxlength=\\/>
</td>
</tr>
<tr>
<td align=\right\>
<html:submit property=\submit\ value=\Submit\/>
</td>
<td align=\left\>
<html:reset/>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
此JSP页面不同于普通的JSP页因为它大量运用了taglib这些taglib对初学者而言可能难于掌握可这却是Struts的精华之一灵活运用将大大提高开发效率
Strutsconfigxml
<Strutsconfig>
<formbeans>
<formbean name=\regUserForm\
type=\orgcjeaStrutsexample RegUserForm \/>
</formbeans>
<actionmappings>
<action path=\/regUserAction\
type=\ orgcjeaStrutsexampleRegUserAction \
attribute=\ regUserForm \
scope=\request\
validate=\false\>
<forward name=\failure\ path=\/ messageFailurejsp\/>
<forward name=\success\ path=\/ messageSuccessjsp\/>
Struts的核心是Controller即ActionServlet而ActionServlet的核心就是StrutsconfigxmlStrutsconfigxml集中了所有页面的导航定义对于大型的WEB项目通过此配置文件即可迅速把握其脉络这不管是对于前期的开发还是后期的维护或升级都是大有裨益的掌握Strutsconfigxml是掌握Struts的关键所在
FormBeanRegUserForm
package orgcjeaStrutsexample;
import javaxServlethttpHttpServletRequest;
import orgapacheStrutsactionActionForm;
import orgapacheStrutsactionActionMapping;
public final class RegUserForm extends ActionForm{
private String logname;
private String password;
private String email;
public RegUserForm(){
logname = null;
password = null;
email = null;
}
public String getLogName() {
return thislogname;
}
public void setLogName(String logname) {
thislogname = logname;
}
public void setPassWord(String password) { [Page]
thispassword = password;
}
public String getPassWord() {
return thispassword;
}
public void setEmail(String email) {
thisemail = email;
}
public String getEmail() {
return thisemail;
}
public void reset(ActionMapping mapping HttpServletRequest request)
{
logname = null;
password = null;
email = null;
}
}
每一个FormBean 都必须继承ActionForm类FormBean是对页面请求的封装即把HTTP request 封装在一个对象中需要说明的一点就是多个HTTP request可以共用一个FormBean便于维护和重用
ActionBeanRegUserAction
package orgcjeaStrutsexample;
import javaxServlethttp*;
import orgapacheStrutsaction*;
public final class RegUserAction extends Action
{
public ActionForward perform(ActionMapping mapping
ActionForm form HttpServletRequest req
HttpServletResponse res)
{
String title = reqgetParameter(\title\);
String password = reqgetParameter(\password\);
String email = reqgetParameter(\email\);
/*
取得用户请求做相应数据库操作略
*/
}
}
FormBean的产生是为了提供数据给ActionBean在ActionBean中可以取得FormBean中封装的数据经相应的逻辑处理后调用业务方法完成相应业务要求
Servlet的演变在常规的 JSPServletJavaBean三层结构中JSP实现View的功能Servlet实现Controller的功能JavaBean实现Model的实现
在Struts中将常规情况下的Servlet拆分与ActionServletFormBeanActionBean三个部分ActionServlet配合Strutsconfigxml专职完成页面导航而不再负责具体的数据获取与相应逻辑这两部分功能由FormBean和ActionBean来完成
Struts优缺点
优点
Struts跟TomcatTurbine等诸多Apache项目一样是开源软件这是它的一大优点使开发者能更深入的了解其内部实现机制
除此之外Struts的优点主要集中体现在两个方面Taglib和页面导航Taglib是Struts的标记库灵活动用能大大提高开发效率另外就目前国内的JSP开发者而言除了使用JSP自带的常用标记外很少开发自己的标记或许Struts是一个很好的起点
关于页面导航我认为那将是今后的一个发展方向事实上这样做使系统的脉络更加清晰通过一个配置文件即可把握整个系统各部分之间的联系这对于后期的维护有着莫大的好处尤其是当另一批开发者接手这个项目时这种优势体现得更加明显 [Page]
缺点
Taglib是Struts的一大优势但对于初学者而言却需要一个持续学习的过程甚至还会打乱你网页编写的习惯但是当你习惯了它时你会觉得它真的很棒
Struts将MVC的Controller一分为三在获得结构更加清晰的同时也增加了系统的复杂度
Struts从产生到现在还不到半年但已逐步越来越多运用于商业软件虽然它现在还有不少缺点但它是一种非常优秀的JEE MVC实现方式如果你的系统准备采用JEE MVC架构那么不妨考虑一下Struts