struts2详细讲义下载和具体实现
### Struts2详解与实践 #### 第1章 Struts是否过时? ##### 1.1 Struts的历史与发展 - **起源**:Struts是Apache软件基金会的一个开源项目,最初版本Struts 1发布于2000年左右,是基于Java Servlet/JavaServer Pages (JSP)技术的MVC(Model-View-Controller)架构框架。 - **演变**:随着Web应用需求的增长和技术的发展,Struts框架也在不断进化。2005年,Struts 2发布,它是对Struts 1的重大改进,并引入了许多新的特性。 ##### 1.2 Struts 2的核心功能 - **1.2.1 标签库介绍**:Struts 2提供了丰富的标签库来简化Web开发。例如,`s:textfield`用于创建文本输入框,`s:submit`用于创建提交按钮等。 - **1.2.2 拦截器的应用目的**:拦截器在Struts 2中扮演着关键角色,它们可以拦截用户的请求并执行预处理或后处理操作。例如,可以使用拦截器来进行身份验证、日志记录等。 - **1.2.3 FilterDispatcher与Action概述**:FilterDispatcher是Struts 2的核心组件之一,它负责处理所有HTTP请求,并将它们转发给合适的Action。Action是应用程序的核心逻辑处理单元。 - **1.2.4 配置文件处理**:Struts 2的配置文件主要通过`struts.xml`文件来管理,该文件定义了应用的行为和结构。 - **1.2.5 OGNL介绍与类型转换目的**:OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。Struts 2利用OGNL来实现数据绑定等功能。 - **1.2.6 进行校验**:Struts 2提供了一套完整的校验机制,可以通过注解或XML配置的方式定义校验规则。 - **1.2.7 Web项目国际化**:为了支持多语言环境,Struts 2提供了强大的国际化支持,可以通过资源文件实现不同语言的切换。 - **1.2.8 SiteMesh页面布局框架简介**:SiteMesh是Struts 2中的一个装饰器模式实现,可以帮助开发者轻松地实现页面布局和模板化。 ##### 1.3 为什么选择Struts 2 - **成熟稳定**:Struts 2作为一个成熟的框架,拥有庞大的社区支持和丰富的文档资源。 - **灵活性**:Struts 2具有高度可定制性,可以通过自定义拦截器等方式扩展其功能。 - **易学易用**:Struts 2的设计哲学简单明了,对于新手来说易于上手。 ##### 1.4 在Web项目中使用Struts 2 - **快速搭建**:通过简单的配置即可快速搭建起基于Struts 2的Web应用。 - **代码重用**:Struts 2支持代码重用,减少重复劳动,提高开发效率。 #### 第2章 Web基础技术简介 ##### 2.1 B/S与C/S系统的区别 - **B/S架构**(Browser/Server):客户端通过浏览器访问服务器端程序,无需安装任何额外的客户端软件。 - **C/S架构**(Client/Server):客户端需要安装特定的软件才能与服务器端通信。 ##### 2.2 JSP与Servlet介绍 - **JSP**(Java Server Pages):一种动态网页技术标准,可以在HTML中嵌入Java代码。 - **Servlet**:Java技术的一部分,用于处理来自客户端的HTTP请求。 ##### 2.3 XML知识介绍 - **XML**(eXtensible Markup Language):一种标记语言,用于存储和传输数据。XML被广泛应用于Web服务中作为数据交换格式。 #### 第3章 Struts 2核心技术 ##### 3.1 使用web.xml配置Struts 2 - **配置文件**:通过在`web.xml`中配置Filter,可以初始化Struts 2环境。 - **代码演示**: ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` ##### 3.2 使用struts.xml配置页面导航 - **页面导航**:通过定义Action及其对应的Result来实现页面间的跳转。 - **代码演示**: ```xml <package name="default" namespace="/" extends="struts-default"> <action name="welcome" class="com.example.WelcomeAction"> <result name="success">/welcome.jsp</result> </action> </package> ``` ##### 3.3 使用Action类控制业务逻辑 - **Action类**:Action类是Struts 2框架中的核心组件之一,负责处理用户的请求,并返回相应的结果。 - **代码演示**: ```java public class WelcomeAction implements Action { private String message; public String execute() throws Exception { message = "Hello, World!"; return SUCCESS; } public String getMessage() { return message; } } ``` ##### 3.4 使用ActionSupport进行校验 - **校验机制**:Struts 2通过ActionSupport类提供了一套完整的校验机制。 - **代码演示**: ```java public class LoginAction extends ActionSupport { private String username; private String password; public String execute() throws Exception { if (username == null || username.trim().length() == 0) { addFieldError("username", "Username is required"); } if (password == null || password.trim().length() == 0) { addFieldError("password", "Password is required"); } if (hasErrors()) { return INPUT; } // ... return SUCCESS; } public void validate() { // 自定义校验逻辑 } } ``` #### 第4章 Struts 2的拦截器技术 ##### 4.1 拦截器的缺省应用 - **缺省拦截器栈**:Struts 2提供了一系列默认的拦截器栈,如`defaultStack`,用于处理常见的业务逻辑。 ##### 4.2 拦截器原理实现 - **拦截器工作原理**:当请求到达Struts 2框架时,拦截器会被调用来执行预处理任务。之后,请求会传递给Action处理。Action处理完成后,拦截器会再次被调用来执行后处理任务。 ##### 4.3 自定义拦截器配置 - **扩展拦截器接口**:通过实现`Interceptor`接口来创建自定义拦截器。 - **代码演示**: ```java public class MyInterceptor implements Interceptor { @Override public String intercept(Invocation invocation) throws Exception { // 前置处理 System.out.println("Before action..."); String result = invocation.invoke(); // 后置处理 System.out.println("After action..."); return result; } } ``` - **继承抽象拦截器**:通过继承`AbstractInterceptor`类来创建自定义拦截器。 - **代码演示**: ```java public class MyAbstractInterceptor extends AbstractInterceptor { @Override public String intercept(Invocation invocation) throws Exception { // 实现逻辑 return invocation.invoke(); } } ``` - **继承方法拦截器**:通过继承`MethodFilterInterceptor`类来创建自定义拦截器。 - **代码演示**: ```java public class MyMethodInterceptor extends MethodFilterInterceptor { @Override protected String doIntercept(Invocation invocation) throws Exception { // 实现逻辑 return invocation.invoke(); } } ``` ##### 4.4 文件上传与下载 - **文件上传**:Struts 2内置了文件上传功能,可以通过配置拦截器实现。 - **代码演示**: ```java public class UploadAction extends FileUploadSupport { private File uploadFile; private String uploadFileName; public String execute() throws Exception { // 处理上传文件 return SUCCESS; } public File getUploadFile() { return uploadFile; } public void setUploadFile(File uploadFile) { this.uploadFile = uploadFile; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } } ``` - **文件下载**:通过Action返回文件流的方式实现文件下载。 - **代码演示**: ```java public class DownloadAction implements StreamingAction { private String fileName; public String execute() throws Exception { return STREAMING; } public Map<String, Object> getStreamingContent() throws IOException { Map<String, Object> map = new HashMap<>(); map.put("contentType", "application/octet-stream"); map.put("contentDisposition", "attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\""); map.put("inputStream", new FileInputStream(new File(fileName))); return map; } } ``` #### 第5章 Struts 2标签库 ##### 5.1 Struts 2标签使用原理 - **标签库介绍**:Struts 2提供了丰富的标签库来帮助开发者构建动态Web应用。 - **标签原理**:Struts 2标签通过JSP表达式语言(EL)和OGNL来动态生成HTML代码。 ##### 5.2 OGNL表达式语言 - **基本概念**:OGNL是一种强大的表达式语言,用于获取和设置Java对象的属性。 - **代码演示**: ```jsp <s:textfield name="user.name" label="Name" /> ``` ##### 5.3 Struts 2控制标签 - **append标签**:用于将一个字符串添加到另一个字符串后面。 - **generator标签**:用于生成一系列元素。 - **if、else、elseif标签**:用于条件判断。 - **iterator标签**:用于遍历集合。 - **merge标签**:用于合并多个集合。 - **sort标签**:用于排序集合。 - **subset标签**:用于从集合中提取子集。 ##### 5.4 Struts 2数据标签 - **action标签**:用于执行Action并显示结果。 - **更多标签**:Struts 2还提供了其他许多实用的数据展示标签,如`select`、`textarea`等,方便用户输入和展示数据。 通过以上章节的详细介绍,我们可以看出Struts 2不仅具备强大的功能,而且拥有丰富的API和标签库,能够满足各种复杂的Web应用开发需求。无论是从理论还是实践的角度出发,掌握Struts 2都将极大地提升开发效率。
剩余222页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2020第六届百度&西安交大大数据竞赛暨IKCEST第二届“一带一路”国际大数据竞赛.zip
- 集成电路 LTC2255是 14 位 125Msps 105Msps、低功率 3V A D 转器,专为对高频、宽动态范围信号进行数字化处理而设计 LTC2255 LTC2254 非常适合于
- 2021 微信大数据挑战赛 复赛Rank23.zip
- 2021中国高校计算机大赛-微信大数据挑战赛.zip
- 9-自动驾驶决策规划控制Matlab代码 1.1 Matlab自动驾驶工具箱介绍 1.2 创建S型道路自动道场景 2.1 RNN与LSTM网络介绍 2.2 构建S型轨迹预测的数据集 2.3 训练轨迹预
- ak-design可视化低代码快速开发平台,使用基于vue3.x桌面端组件库 Elemnet-Plus,通过可视化的操作,可轻松快速完成拖拽表单编辑设计器、数据列表页设计、流程管理设计器、数据.zip
- BDCI2020 - 大数据时代的Serverless工作负载预测.zip
- 基于小程序的开放实验室预约管理系统源码(小程序毕业设计完整源码+LW).zip
- 超表面石墨烯案例comsol
- canvas 绘制的 vue 表格组件,解决上万行+多列数据渲染问题,集成大部分表格功能.zip
- 哲风壁纸-人物-8K壁纸
- CCF大数据竞赛.zip
- Darwin大数据应用支撑平台.zip
- 2-MP4文件分轨工具v2.53
- 文字生成视频-可灵1.6
- 分析斜齿轮的动态特性,必须考虑斜齿轮接触线的时变性,根据Kar and Mohanty文献编写的斜齿轮时变接触线长度,静态条件下的时变摩擦力和时变摩擦力矩计算程序,考虑了斜齿轮的变位,并修正了原文献中