Struts的起源
Struts是作为Apache Jakarta项目的组成部分该项目的目标是为建立Java web 应用程序而提供的一个开源框架目前大家一般使用的版本为但也出现了通过使用struts 框架可以改进和提高Java Server Pages (JSPs)Servlet标签库以及面向对象的技术在web应用程序中的应用应用Struts框架可以减少你应用MVC(Model View Controller)设计模式的开发时间从而提高开发效率把Struts应用于Jee客户端应该是一个不错的选择
Struts的工作原理
谈到Struts我们就不得不提到MVC设计模式MVC即ModelViewController的缩写它是web应用当中的常用的设计模式MVC 减弱了业务逻辑接口和数据接口之间的耦合以及让视图层更富于变化
Struts是MVC的一种实现它很好的结合了JspJava ServletJava Bean Taglib等技术那么我们来看看Struts框架的工作原理
控制在Struts中ActionServlet起着一个控制器(Controller)的作用ActionServlet是一个通用的控制组件这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)另外控制组件也负责用相应的请求参数填充 Action Form(通常称之为FromBean)并传给动作类(通常称之为ActionBean)动作类实现核心商业逻辑它可以访问java bean 或调用EJB所有这些控制逻辑利用Strutsconfigxml文件来配置
视图主要是由Jsp来控制页面输出的它接收到Action Form中的数据利用htmltaglibbeanlogic等显示数据
模型在Struts中主要存在三种bean分别是ActionActionFormEJB或者Java BeanActionForm用来封装客户请求信息Action取得ActionForm中的数据再由EJB或者Java Bean进行处理
Struts 优点与缺点
优点利用Struts提供的taglib可以大大节约开发时间 表现与逻辑分离 维护扩展比较方便 便于团队开发
缺点大量的使用标签对于初学者难度较大
Struts 安装
安装Struts 比较简单假设我们使用的是Tomcat 并且安装在D:\tomcat下首先请到 下载Struts 解压缩后可以看到jakartastruts目录在这个目录下面你可以看到这样一个目录webapps该目录下面有多个*war我们copy strutsblankwar 文件到D:\tomcat\webapps下restart Tomcat在Tomcat 的webapps下就会生成一个strutsblank空白Struts开发环境另外在你解压缩的目录下的webapps中 strutsexamplewar 是一个很好的struts学习教程如果你想深入学习请访问 或者 下载 《Struts in Action》 E 文版
一个简单的例子
Logonjsp
<%@ taglib uri=/WEBINF/strutshtmltld prefix=html %>
<%@ page contentType=text/html; charset=gb %>
<%
/**
* This page shows Logon interface
* Title: LOGON SYSTEM
* Description: Logon Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny <>
* @version
*/
responsesetHeader(PragmaNocache);
responsesetHeader(CacheControlnocache);
responsesetDateHeader(Expires );
%>
<html>
<head>
<title>Logon</title>
</head>
<body>
<html:errors/>
<html:form action=/Logon focus=username>
username:<html:text property=username size=/>
password:<html:password property=password size=/>
<html:submit property=submit/>
</html:form>
</body>
</html>
页面为用户登陆页面应用到Struts的html标签
LogonFormjava
package comlogonapp;
import javaxservlethttp*;
import orgapachestrutsaction*;
/**
* This page shows LogonFormjava
* Title: LOGON SYSTEM
* Description: LogonForm Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny
* @version
*/
public class LogonForm extends ActionForm{
private String username;
private String password;
public LoginForm() {
username = null;
password = null;
}
public void setUsername(String username){
thisusername = username;
}
public String getUsername() {
return thisusername;
}
public void setPassword(String password){
thispassword = password;
}
public String getPassword(){
return thispassword;
}
public void reset(ActionMapping mapping HttpServletRequest request)
{
username = null;
password = null;
}
}
这个页面为ActionForm bean 主要是用来封装客户端的用户名与密码
LogonActionjava
package comlogonapp;
import javaio*;
import javasql*;
import orgapachestrutsactionAction;
import orgapachestrutsactionActionForward;
import orgapachestrutsactionActionMapping;
import orgapachestrutsactionActionForm;
import javaxservlet*;
import javaxservlethttp*;
import orgapachestrutsaction*;
/**
* This page shows LogonActionjava
* Title: LOGON SYSTEM
* Description: LogonAction Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny
* @version
*/
public class LogonAction extends Action{
public ActionForward execute(ActionMapping actionMapping ActionForm actionForm HttpServletRequest request HttpServletResponse response)throws Exception{
LogonForm form = (LogonForm)actionForm;
ActionErrors errors = new ActionErrors();
String username = formgetUsername();
String password = formgetPassword();
If(usernameequals(bluesunny) && passwordequals(bluesunny)){
return actionMappingfindForward(success);
}else{
errorsadd(loginnew ActionError(Logonfailed));
saveErrors(requesterrors);
return actionMappingfindForward(failed);
}
}
}
取得ActionForm中的数据进行处理处理结果返回到Jsp页面
webxml
<?xml version= encoding=ISO?>
<!DOCTYPE webapp
PUBLIC //Sun Microsystems Inc//DTD Web Application //EN
app__dtd;>
<webapp>
<displayname>Struts Logon Application</displayname>
<! Standard Action Servlet Configuration (with debugging) >
<servlet>
<servletname>action</servletname>
<servletclass>orgapachestrutsactionActionServlet</servletclass>
<initparam>
<paramname>config</paramname>
<paramvalue>/WEBINF/strutsconfigxml</paramvalue>
</initparam>
<initparam>
<paramname>debug</paramname>
<paramvalue></paramvalue>
</initparam>
<initparam>
<paramname>detail</paramname>
<paramvalue></paramvalue>
</initparam>
<loadonstartup></loadonstartup>
</servlet>
<! Standard Action Servlet Mapping >
<servletmapping>
<servletname>action</servletname>
<urlpattern>*do</urlpattern>
</servletmapping>
<! The Welcome File List >
<welcomefilelist>
<welcomefile>logonjsp</welcomefile>
</welcomefilelist>
<! Struts Tag Library Descriptors >
<taglib>
<tagliburi>/tags/strutsbean</tagliburi>
<tagliblocation>/WEBINF/strutsbeantld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutshtml</tagliburi>
<tagliblocation>/WEBINF/strutshtmltld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutslogic</tagliburi>
<tagliblocation>/WEBINF/strutslogictld</tagliblocation>
</taglib>
<tagli