7.1 Struts
优点:
1. MVC模式实现了表现与逻辑的分离,扩展性高。
2. 提供页面导航功能,通过配置文件建立整个系统各部分之间的联系。
3. 集成了一些常用处理功能。
缺点:
1. 仅面向 Web 应用程序开发
2. Action 非线程安全,资源需要考虑同步。
7.1 补充 - MVC
MVC模式的基本组成:
-
Model(模型):代表数据和业务逻辑。它负责数据的存储、检索和逻辑处理,通常与数据库进行交互。
-
View(视图):代表用户界面。它显示数据(通过Model提供)并收集用户的输入,但不处理业务逻辑。
-
Controller(控制器):充当Model和View之间的中介。它接收用户的输入,调用Model来处理数据,然后选择合适的View来显示结果。
MVC2模式的特点:
-
分离关注点:MVC2模式将数据、界面和逻辑分离,使得开发和维护更加清晰和简单。
-
可维护性:由于关注点分离,修改任何一个部分(数据、界面或逻辑)时,其他部分不受影响,提高了代码的可维护性。
-
可扩展性:MVC2模式使得扩展应用程序变得更加容易,可以独立地扩展Model、View或Controller。
-
可测试性:分离的架构使得对各个组件进行单元测试和集成测试变得更加简单。
7.1 补充 - Servlet
Servlet是Java EE(Java Enterprise Edition)规范的一部分,它是一种运行在服务器端的Java Web应用程序组件,用于处理客户端请求并生成动态响应。Servlet提供了一种将Java代码与HTTP协议交互的方式,使得开发者可以创建能够处理Web请求的Web应用程序。
Servlet的主要特点:
-
平台无关性:Servlet可以运行在任何支持Java EE Web规范的服务器上,例如Apache Tomcat、JBoss、GlassFish等。
-
请求处理:Servlet可以处理不同类型的HTTP请求,如GET、POST、PUT、DELETE等。
-
生命周期管理:Servlet容器管理Servlet的生命周期,包括初始化、服务、销毁等。
-
可重用性:Servlet可以被设计为可重用的组件,可以在多个Web应用程序中使用。
-
集成性:Servlet可以与其他Java EE组件(如EJB)集成,实现复杂的企业级应用。
Servlet的生命周期:
-
实例化:Servlet容器创建Servlet实例。
-
初始化:容器调用
init()
方法初始化Servlet实例。 -
服务:容器调用
service()
方法来处理客户端请求。 -
销毁:容器在销毁Servlet实例前调用
destroy()
方法。 -
垃圾回收:Servlet实例被垃圾收集器回收。
Servlet的工作原理:
-
客户端发送HTTP请求到Servlet容器。
-
Servlet容器创建对应的Servlet实例(如果尚未创建)。
-
Servlet容器调用Servlet的
service()
方法,并将请求和响应对象作为参数传递。 -
service()
方法根据请求类型(如GET或POST)调用相应的doGet()
或doPost()
方法。 -
Servlet处理请求,生成响应,并通过响应对象发送回客户端。
7.3 Struts 响应用户请求的工作流程
Web 启动时,会加载并初始化 ActionServlet,ActionServlet 从 config中读取配置信息,存放到 ActionMappings 对象中。当 ActionServlet 收到客户请求时:
1. 检索和用户请求匹配的 ActionMapping 实例,不存在则返回路径无效。
2. ActionFrom 实例化,保存用户提交的表单。
3. 根据配置信息进行表单验证。