📜  Struts 2教程(1)

📅  最后修改于: 2023-12-03 15:35:10.432000             🧑  作者: Mango

Struts 2教程

Struts 2是一个基于MVC架构的Java Web应用程序开发框架,旨在帮助开发人员更快更简单地开发可扩展和可维护的Web应用程序。本教程将深入介绍如何使用Struts 2开发Web应用程序,从配置和基本概念开始,然后逐步介绍更高级的主题。

内容概述

本教程将包含以下主题:

  1. Struts 2基本概念
  2. Struts 2配置文件
  3. Struts 2拦截器
  4. Struts 2动态配置
  5. Struts 2表单处理
  6. Struts 2验证
  7. Struts 2国际化
  8. Struts 2文件上传
  9. Struts 2标签库
  10. Struts 2与Spring集成
Struts 2基本概念

Struts 2框架是一个基于MVC模式的框架,其中M代表模型,V代表视图,C代表控制器。模型表示数据和业务规则,视图表示展示数据的用户界面,控制器处理用户请求并更新模型数据和视图。Struts 2将MVC模式转换为以下组件:

  • Action:表示Controller,负责处理用户请求和更新模型数据和视图
  • Struts 2标签库:表示View,负责展示数据的用户界面
  • Interceptor:表示Model,负责处理业务规则和模型数据
Struts 2配置文件

Struts 2应用程序的核心配置文件是struts.xml,它定义了应用程序中Action、拦截器、结果等的配置信息。Struts 2还支持动态配置,可以通过在运行时修改配置文件来实现。配置文件的格式通常是XML格式,但也可以使用JSON或Java代码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Struts//XSD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="hello" extends="struts-default">
        <action name="welcome" class="com.example.WelcomeAction">
            <result name="success">/welcome.jsp</result>
        </action>
    </package>
</struts>
Struts 2拦截器

Struts 2中的拦截器是一个强大的功能,它允许我们在Struts 2执行Action的过程中添加自定义逻辑,例如日志记录、数据验证等。Struts 2框架中有许多内置的拦截器。

<interceptors>
  <interceptor name="myLogger" class="com.example.MyLoggerInterceptor" />
  <interceptor-stack name="customStack">
    <interceptor-ref name="defaultStack" />
    <interceptor-ref name="myLogger" />
  </interceptor-stack>
</interceptors>
Struts 2动态配置

Struts 2支持在运行时动态修改配置文件,例如,可以添加、修改或删除Action、拦截器或结果等。Struts 2还提供了一个管理员页面,允许我们修改配置而无需重新启动应用程序。

ConfigurationManager configurationManager = new ConfigurationManager();
configurationManager.addContainerProvider(new StrutsXmlConfigurationProvider("struts.xml", true));
configurationManager.reload();
Struts 2表单处理

在Struts 2中,表单处理非常容易。Struts 2框架提供了许多标签库,允许我们轻松创建表单、文本框、下拉列表等界面元素。同时,Struts 2还提供了表单验证和错误处理。

<s:form action="login.action">
  <s:textfield name="username" label="Username" />
  <s:password name="password" label="Password" />
  <s:submit value="Login" />
</s:form>
Struts 2验证

在Struts 2中,数据验证非常容易。我们可以轻松定义数据验证规则,例如必填、范围、正则表达式等。Struts 2还提供了错误消息处理和客户端和服务器端验证。

<validators>
  <field name="username">
    <field-validator type="requiredstring">
      <message key="errors.required" />
    </field-validator>
  </field>
  <field name="age">
    <field-validator type="int">
      <param name="min">0</param>
      <param name="max">150</param>
      <message key="errors.range" />
    </field-validator>
  </field>
</validators>
Struts 2国际化

Struts 2允许我们根据用户的语言和位置提供多语言支持。使用Struts 2国际化,我们可以轻松创建翻译资源包,并在应用程序中使用它们。

welcome.message=欢迎
login.username=用户名
login.password=密码
Struts 2文件上传

Struts 2提供了一个易于使用的文件上传功能,它允许我们将文件上传到服务器。使用Struts 2文件上传,我们可以上传文件,并在Action中访问它们。

<s:form action="upload.action" enctype="multipart/form-data">
  <s:file name="upload" label="Select a file" />
  <s:submit value="Upload" />
</s:form>
Struts 2标签库

Struts 2标签库为我们提供了许多常用的Web表单元素,例如文本框、复选框、下拉列表等。使用Struts 2标签库,我们可以轻松地创建自定义的用户界面。

<s:textfield name="username" label="Username" />
<s:checkbox name="rememberMe" label="Remember me" />
<s:select name="country" label="Country" list="#{'US':'United States','UK':'United Kingdom'}" />
Struts 2与Spring集成

Struts 2框架与Spring框架的无缝集成允许我们访问Spring IoC容器中的服务,例如数据库连接、业务逻辑等。

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="url" value="jdbc:mysql://localhost/myDB" />
  <property name="username" value="root" />
  <property name="password" value="" />
</bean>
结论

本教程为程序员介绍了Struts 2框架的基本概念、配置、拦截器、动态配置、表单处理、验证、国际化、文件上传、标签库以及与Spring集成的主题。掌握这些技能将使你能够更快地开发可扩展和可维护的Web应用程序。