详解Java的Struts框架以及相关的MVC设计理念
什么是MVC设计模式
MVC(Model-View-Controller)是一种常见的设计模式,它将一个应用分为3种职责:模型(Model)负责数据存储与处理;视图(View)负责用户界面的显示;控制器(Controller)负责业务逻辑的处理。把系统分为3个组件使得各自的职责分明,且耦合度低。MVC的设计模式被广泛应用于各种应用开发中,包括Java Web应用中。
Struts框架
Struts是一个开源的Java Web应用MVC框架,构建于Servlet API之上,基于MVC设计模式,它允许开发人员通过配置文件或注解轻松配置应用程序的行为。它提供了一组自定义的标签库,用于生成HTML表单。它还提供了拦截器的概念,用于将端到端处理业务逻辑的行为加入到应用程序中。
Struts框架的优势
Struts框架的架构可以使开发人员更专注于Java Web应用程序的实现,而不必花费大量时间在开发基础结构和处理细节上。以下是Struts框架的优势:
-
轻松扩展:Struts框架使用MVC设计模式,该模式将应用程序分成三个组件,因此可以更轻松地扩展和维护应用程序。
-
代码重用:因为Struts框架已经提供了常用的功能模块,所以开发人员可以以最小的改动轻松扩展和重用应用程序的代码,从而节省了时间和精力。
-
减少错误:Struts框架强制执行一些最佳实践,例如分层体系结构和架构模式等,这些已被证明可以常规性的减少代码出错的机会。
-
使用广泛:由于Struts框架是一个开源框架,因此有许多开发人员和组织使用它,这使得它具有广泛的委员会和资源。
Struts框架的组成部分
Struts框架包含以下几个组成部分:
-
动作(Action):它是控制器层的组成部分,它处理客户端请求并呈现响应。Action通常由Java类实现,实现了Action接口。
-
系统分发器(Action Dispacher):系统分发器是将请求路由到适当的Action类的核心部分。一般情况下,请求可以路由到Action类的多个方法中,取决于请求的处理方式。
-
处理器(Processor):处理器用于处理请求和响应之间的交互。
-
标签库(Tag Library):Struts框架提供了许多标签库,使Web开发人员能够更轻松地生成HTML或XML。
Struts框架使用的MVC设计模式
Struts框架强烈支持使用MVC设计模式,因为它将应用程序分为三个互相分离的组件,使开发人员能够隔离代码,并使操作更加可预测和可测试。
以下是Struts框架中每个层次的工作:
-
Model:Struts框架中的模型组件处理应用程序的数据模型部分。它是从底层操作细节中解脱出来的,以处理数据的概括。
-
View:在Struts框架中,View是JavaServer Page(JSP)。JSP通过用户界面,将模型数据呈现给用户。
-
Controller:在Struts框架中,controller由Action实现。Action负责决定什么逻辑是正确的操作。在Struts框架中,Action也处理数据验证以及在响应中收集数据。
Struts框架的使用
以下是Struts框架通过一个简单示例的使用:
-
准备工作:我们将需要Tomcat应用程序服务器、Struts框架的包以及JDK环境。
-
下载和安装:获取Struts框架的最新版本进行下载,然后将其解压。
-
创建Web应用程序:在Tomcat服务器的webapps目录下创建一个新的文件夹,例如“mystruts”,并在该文件夹中创建一个名为"WEB-INF"的文件夹。
-
包括必要的jar文件:复制Struts框架所需的所有JAR文件到项目的“WEB-INF / lib”文件夹中。
-
创建JSP文件:在项目的根目录下创建一个名为"index.jsp"的文件,我们将在此文件中定义如何呈现HTML表单。
<html>
<head></head>
<body>
<form action="<s:property value='actionName'/>" method="post">
<input type="text" name="userName"><br />
<input type="password" name="password"><br />
<input type="submit" value="Login">
</form>
</body>
</html>
- 配置web.xml:在“mystruts / WEB-INF”目录中创建一个名为“web.xml”的文件,该文件保管以下Servlet:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- 创建struts-config.xml: 在“mystruts / WEB-INF”目录中创建一个名为“struts-config.xml”的文件,配置如下所示:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.mystruts.LoginForm"/>
</form-beans>
<action-mappings>
<action path="/login" type="com.mystruts.LoginAction" name="loginForm" validate="true" scope="request">
<forward name="success" path="/success.jsp"/>
<forward name="failure" path="/failure.jsp"/>
</action>
</action-mappings>
</struts-config>
- 创建Java Bean: 创建一个名为“LoginForm.java”的Java文件,用于在登陆页面上获取表单字段的值,定义如下:
public class LoginForm extends ActionForm {
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- 创建Action类: 创建一个名为 “LoginAction.java”的Java文件,定义如下:
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception {
LoginForm loginForm = (LoginForm) form;
String userName = loginForm.getUserName();
String password = loginForm.getPassword();
if(userName.equals("admin") && password.equals("admin")) {
return mapping.findForward("success");
} else{
return mapping.findForward("failure");
}
}
}
以上步骤创建了一个最基本的Struts应用程序,其中用户登录表格数据被传递到LoginAction,并执行后台逻辑。如果用户已输入正确的用户名和密码,则应用程序将跳转到成功页面,否则将跳转到失败页面。
Struts框架使用时的常见问题
在使用Struts框架时,可能会遇到以下常见问题:
-
Struts框架的体系结构较为复杂,对于初学者而言需要花费一些额外的时间来学习和理解它的每个组成部分。
-
Struts框架不能同时处理多个请求,因为它是同步的。
-
Struts框架的响应时间较长,因为其集成了许多必要的组件,例如输入验证和HTTP请求处理。
总结
Struts框架是一个常用的MVC框架,可以使开发人员更专注于Java Web应用程序的实现,而不必花费大量时间在开发基础结构和处理细节上。该框架支持MVC架构模式,并提供了标签库和拦截器的概念,以便将端到端的业务逻辑处理加入到应用程序中。
通过以上示例,我们可以看到,使用Struts框架可以轻松构建Java Web应用程序,在此过程中仅需要少量的时间和功夫。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java的Struts框架以及相关的MVC设计理念 - Python技术站