Struts框架详解:架构、组件与配置

需积分: 0 0 下载量 34 浏览量 更新于2024-12-25 收藏 147KB DOC 举报
"Struts的体系结构,Struts Framework Architecture,胡长城,银狐999,Struts, Framework, Architecture, Componennt, MVC,JSP/Servlet的web层应用,J2EE体系结构,CustomerTagLib" 在深入探讨Struts之前,我们需要了解一些预备知识。模型-视图-控制器(MVC)架构模式是核心,它是设计Web应用程序的一种常用方法,将业务逻辑、数据处理和用户界面分离。JSP和Servlet是构建Web层应用的基础,而J2EE则提供了企业级的开发环境。对于Struts中的自定义标签库(TagLib)的理解,特别是CustomerTagLib,能够帮助更好地利用Struts的功能。 **1. Framework概念和体系简介** 一个框架(Framework)是一个半完成的软件系统,它提供了一组服务、设计模式和最佳实践,用于快速开发特定类型的软件。它包含可重用、可扩展的组件,这些组件已经过良好的测试,以确保高效和稳定。在多层应用中,框架的核心是"命令和控制"组件,如Framework Factory and Manager,它协调和管理各个部分的交互。 **2. Struts的概念和体系结构** Struts是一个基于MVC模式的Java Web框架,旨在简化开发过程,提高代码复用性和可维护性。它的体系结构由多个组件组成,包括ActionForm、Controller(Struts Action Servlet)、View(JSP)以及一系列的配置文件,如struts-config.xml。 **3. Struts的工作原理和组件** - **Controller**: 控制器由Struts Action Servlet实现,负责接收HTTP请求,解析请求参数,并调用相应的业务逻辑。 - **ActionForm**: 表单对象存储用户输入的数据,与Controller进行交互。 - **Action**: 实现业务逻辑的类,Controller调用Action来执行具体操作。 - **Model**: 包含业务逻辑和数据访问层,可以是JavaBean或其他服务组件。 - **View**: JSP页面作为视图,展示数据和用户界面,通常通过JSP标签库(TagLib)来绑定模型数据。 **4. Struts配置文件简介** Struts Deployment Description (struts-config.xml)是Struts的主要配置文件,定义了ActionMapping、ActionForm、Action和Controller之间的关系。此外,Web应用程序的web.xml文件也需配置Struts的入口点,即ActionServlet。 在struts-config.xml中,你可以定义Action的映射,指定哪个URL请求应该由哪个Action处理,ActionForm的使用,以及ActionForward来控制请求的转发。配置文件是Struts灵活性的关键,使得开发者可以根据需求调整框架的行为。 总结,Struts Framework通过提供一套规范化的结构和组件,降低了Web应用的开发复杂度,促进了团队协作和代码的复用。通过理解Struts的架构、工作原理和配置,开发者能够更高效地构建符合MVC原则的Web应用程序。

<?php // 连接数据库 $conn = mysqli_connect("localhost", "tms", "123456", "nut"); // 检查连接是否成功 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } // 处理表单提交 if ($_SERVER["REQUEST_METHOD"] == "POST") { // 获取表单数据 $aoiSteps = $_POST['aoi_step']; $defectTypes = $_POST['defect_type']; $layerCodes = $_POST['layer_code']; $types = $_POST['type']; $dpets = $_POST['dpet']; $subcodes = $_POST['subcode']; $codeDescriptions = $_POST['code_description']; $determinationRules = $_POST['determination_rule']; $imagePaths = []; // 存储图片路径的数组 // 处理上传的图片 for ($i = 1; $i <= 5; $i++) { $imageField = "image" . $i; $targetDir = "D:/phpstudy_pro/WWW/192.168.1.16/images"; // 设置上传目录的路径 $fileName = uniqid() . '_' . $_FILES[$imageField]["name"]; // 生成唯一文件名 $targetFile = $targetDir . '/' . basename($fileName); // 将反斜杠替换为正斜杠 $targetFile = str_replace('\\', '/', $targetFile); if (isset($_FILES[$imageField]) && $_FILES[$imageField]["error"] == UPLOAD_ERR_OK && move_uploaded_file($_FILES[$imageField]["tmp_name"], $targetFile)) { $imagePath = $targetFile; } else { $imagePath = ""; } $imagePaths[] = $imagePath; } // 插入数据 $stmt = $conn->prepare("INSERT INTO tms (aoi_step, defect_type, layer_code, type, dpet, subcode, code_description, image1_path, image2_path, image3_path, image4_path, image5_path, determination_rule) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); if (!$stmt) { die("预处理失败: " . $conn->error); } foreach ($aoiSteps as $key => $aoiStep) { // 绑定参数 $stmt->bind_param("sssssssssssss", $aoiStep, $defectTypes[$key], $layerCodes[$key], $types[$key], $dpets[$key], $subcodes[$key], $codeDescriptions[$key], $imagePaths[0], $imagePaths[1], $imagePaths[2], $imagePaths[3], $imagePaths[4], $determinationRules[$key]); if ($stmt->execute()) { echo "数据插入成功"; } else { echo "数据插入失败: " . $stmt->error; } } // 关闭数据库连接 mysqli_close($conn); } ?>在这个代码中还存在一个问题,就是当我插入两行图片不同的数据时,在image1_path字段下是相同的图片,并非我数据对应是图片

2023-07-25 上传