java之路—— 带你了解Struts与其基本的应用

13 篇文章 0 订阅

在这里插入图片描述

创作不易,各位亲给个免费的呗


前言

Struts是在2000年由Apache软件基金会首次发布的,自那时以来,它在Java Web开发中扮演着重要的角色,并经历了许多值得注意的发展阶段。

Struts 1.x:Struts的最初版本是Struts 1.x系列,它引入了MVC架构模式,提供了基本的控制器(Action)和视图(JSP)的分离。Struts 1.x以其可靠性和易用性受到了广泛的关注和应用。

Struts 2.x:随着时间的推移,Struts 2.x取代了Struts 1.x成为新一代的Struts框架。Struts 2.x在架构上进行了重大改进,采用了更灵活、更面向对象的设计理念。它引入了拦截器、标签库和注解等新特性,使得开发更加高效和舒适。

Struts对Web开发的影响:Struts的出现对Java Web开发产生了重要的影响。它提供了一种组织和管理Web应用程序的模式,帮助开发者更好地处理请求、处理业务逻辑和渲染用户界面。Struts架构在很多Web应用程序中得到了广泛的应用。

社区和生态系统:Struts在其发展过程中建立了一个活跃的开发者社区和生态系统。这个社区不断为Struts贡献新特性、修复bug和提供支持。此外,还有许多第三方库和工具与Struts集成,为开发者提供了更多的选择和扩展性。

虽然如今有一些新的框架如Spring MVC、Spring Boot等的出现,但Struts作为一个经过时间考验的框架仍然存在,并继续为许多企业和开发者所使用。无论是通过Struts 1.x还是Struts 2.x,它们都为Java Web开发提供了强大的支持和灵活的架构。不断的改进和持续的社区贡献使得Struts能够适应新的技术需求和潮流,为开发者创造更好的开发体验。

一、什么是Struts,可以用来干嘛

Struts是一个用于开发Java Web应用程序的开源框架。它提供了一个MVC(Model-View-Controller)的架构,帮助开发者更好地组织和管理web应用程序的代码。

1. MVC架构:Struts采用MVC架构模式来分离应用程序的不同层次。Model层负责处理数据逻辑,View层负责渲染用户界面,而Controller层负责处理用户请求并调度相应的业务逻辑。

2. 核心组件:Struts的核心组件包括Action、Interceptor、Validator等。Action负责接收并处理用户请求,Interceptor用于实现请求处理拦截和前后处理,Validator用于验证用户输入。

3. 配置文件:Struts使用XML文件来配置应用程序的行为。其中,struts.xml文件是主要配置文件,定义了Action映射、拦截器栈、全局结果等。通过配置文件,开发者可以灵活地管理和配置应用程序的行为。

4. 表单处理:Struts提供了方便的表单处理机制。开发者可以通过在Action中定义表单类,自动将用户请求的参数绑定到表单对象中。同时,还可以使用Struts提供的表单标签库来生成表单、处理表单验证等。

5. 标签库支持:Struts提供了丰富的标签库,用于生成HTML元素和控件。这些标签库简化了开发者对用户界面的开发,提高了开发的效率。开发者可以使用这些标签库来生成表单、按钮、下拉框等用户界面元素。

6. 国际化支持:Struts提供了强大的国际化支持,使得开发者能够轻松地实现应用程序的多语言支持。通过使用资源束和国际化相关的标签,开发者可以方便地在应用程序中实现多语言切换。

总的来说,Struts是一个功能丰富且成熟的Java Web开发框架,它提供了许多有用的特性和工具,帮助开发者快速构建可靠、可维护的Web应用程序。无论是初学者还是有经验的开发者,使用Struts都能够更加高效地开发出优秀的Web应用程序。

二、Struts 与 springmvc

Struts和Spring MVC都是用于开发Java Web应用程序的框架,它们都基于MVC架构模式,但在一些方面有一些不同之处。下面我们来比较一下Struts和Spring MVC

1. 学习曲线:相对而言,Struts具有较陡峭的学习曲线。由于它的配置文件较多,需要了解和掌握更多的概念和规则。而Spring MVC则相对简单、灵活,易于学习和使用。

2. 配置方式:Struts使用XML配置(比如struts.xml)来定义Action映射、拦截器栈等,而Spring MVC使用注解(比如@Controller、@RequestMapping)和Java配置来实现,减少了对XML配置文件的依赖。

3. 轻量级与重量级:相对而言,Spring MVC是更轻量级的框架,它的设计更灵活,可以根据需求定制。而Struts则是一个相对重量级的框架,拥有更多的特性和功能,但在某些情况下可能会显得复杂。

4. 集成能力:Spring MVC与Spring框架天然集成,可以很好地利用Spring提供的依赖注入和面向切面编程等功能。而在Struts中,如果需要使用Spring的依赖注入等特性,需要通过一些技术手段来实现集成。

5. 社区和生态系统:Spring MVC拥有更大规模的社区和更丰富的生态系统,有更多的文档、教程和第三方库可供参考和使用。Struts虽然曾经非常流行,但相对来说其社区规模和生态系统相对较小。


其实两个框架各有优势,选择哪个框架取决于具体需求和个人偏好。
如果你更喜欢轻量级、灵活的框架,对Spring框架有一定了解,可以选择Spring MVC。
如果你需要一个功能丰富、成熟的框架,对XML配置和Struts的规则和设定感到舒适,可以选择Struts。
不管你选择哪个框架,都可以使用它们来构建高效、可维护的Java Web应用程序。

三、Struts的开发的基本步骤

好的,以下是使用Struts进行开发的简要代码示例,展示了开发步骤的具体实现:

  1. 确定需求:
// 根据应用程序需求,明确功能和用户交互方式的具体实现细节
  1. 搭建环境:
// 确保你的开发环境已经配置好JDK、Tomcat和开发工具(如Eclipse)
  1. 创建项目:
// 创建一个新的Java Web工程,根据你的开发工具和项目需求进行具体操作
  1. 配置框架:
  • 在项目的lib目录中添加Struts框架的相关依赖库。
  • 在web.xml文件中添加Struts的过滤器和监听器配置。

示例代码如下:

<!-- 配置Struts2过滤器 -->
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置Struts2监听器 -->
<listener>
    <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
  1. 创建Action类:
// 创建一个Action类,用于处理来自用户的请求

// 导入Struts2相关的类
import com.opensymphony.xwork2.ActionSupport;

// 创建一个继承自ActionSupport的Action类
public class MyAction extends ActionSupport {
    // 添加所需的属性和方法,用于处理请求和展示数据
    // ...
}

根据具体的需求,你还可以继续编写业务逻辑和视图层的代码,以完成一个完整的Struts应用程序。

四、Struts的处理流程

Struts框架的处理流程可以概括为以下几个步骤:
在这里插入图片描述

1. 请求拦截:
当用户在浏览器中发起一个请求时,请求会被应用服务器拦截。Struts使用web.xml中配置的过滤器来接收请求。

2. Action类的调度:
拦截器将请求转发给相应的Action类。在Struts框架中,Action类是处理请求的核心组件。根据配置文件中的映射关系,框架会找到匹配的Action类来处理请求。

3. Action类处理请求:
Action类是应用程序中的控制器部分,它负责处理请求并生成响应。在Action类中,开发人员可以根据业务逻辑处理请求参数、调用服务层方法、设置返回结果等。

4. 拦截器的应用:
在处理请求的过程中,Struts框架通过配置的拦截器来执行一系列定义好的操作。拦截器可以在请求到达Action类之前或之后执行特定的逻辑,例如身份验证、日志记录、异常处理等。拦截器的执行顺序可以通过配置文件进行控制。

5. 视图解析与渲染:
在Action类中,开发人员根据业务逻辑设置结果视图的名称。Struts框架根据配置文件中的视图映射,将结果视图解析成实际的页面,并将其进行渲染。渲染后的页面会作为响应返回给浏览器。

6. 响应返回到浏览器:
最后,生成的响应会被Struts框架发送回浏览器展示给用户。用户可以在浏览器中看到请求的结果。

这个流程保证了代码的模块化和可维护性,使开发人员能够更加专注于业务逻辑的实现。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Struts Logic标签库中包含的标签列表 Tag name Description empty 如果标签parameter,propertie等属性所指定的变量值为null或空字符串,则处理标签包含的内容 equal 如果标签parameter,propertie等属性所指定的变量的值等于标签value属性所指定的值,则处理标签所包含的内容, 如: <logic:equal value="modify" property="action" name="projectForm"> <bean:message key="project.project_modify"/> </logic:equal> 上面的示例表示,如果projectForm的action属性等于modify,则处理<bean:message key="project.project_modify"/ >语句。 forward Forward control to the page specified by the ActionForward entry. greaterEqual Evaluate the nested body content of this tag if the requested variable is greater than or equal to the specified value. greaterThan Evaluate the nested body content of this tag if the requested variable is greater than the specified value. iterate Repeat the nested body content of this tag over a specified collection. lessEqual Evaluate the nested body content of this tag if the requested variable is less than or equal to the specified value. lessThan Evaluate the nested body content of this tag if the requested variable is less than the specified value. match Evaluate the nested body content of this tag if the specified value is an appropriate substring of the requested variable. messagesNotPresent Generate the nested body content of this tag if the specified message is not present in this request. messagesPresent Generate the nested body content of this tag if the specified message is present in this request. notEmpty Evaluate the nested body content of this tag if the requested variable is neither null nor an empty string. notEqual Evaluate the nested body content of this tag if the requested variable is not equal to the specified value.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流光CN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值