Struts 框架基础

 

Struts 是 Apache 软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta 项目中的一个子项目,并在 2004 年 3 月成为 ASF 的顶级项目。它实现了基于 Java EE Web 应用的 Model-View-Controller(MVC)设计模式的应用框架,其采用的主要技术是 Java Servlet、JSP 以及 Custom Tag Library 等技术,是 MVC 经典设计模式中的一个经典产品。

 

  • Struts2 是非侵入式设计,即不依赖于 Servlet API 和 Struts API.

  • Struts2 提供了强大的拦截器,利用拦截器可以进行 AOP 编程(面向切面的编程),实现如权限拦截等功能。

  • Struts2 提供了类型转换器,可以很方便地进行类型转换,例如将特殊的请求参数转换成需要的类型。

  • Struts2 支持多种表现层技术,如 JSP、FreeMarker、Velocity 等。

  • Struts2 的输入验证可以对指定的方法进行验证

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/WEB-INF/jsp/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>

    <!-- Add packages here -->

</struts>

首先是 <constant> 包含一些属性设置,它可以改变 struts 框架的一些行为。例如示例中的 struts.enable.DynamicMethodInvocation 设为 true,表示设置动态方法调用为真,而 struts.devMode 表示是否启用开发者模式。

 

 

OGNL(Object-Graph Navigation Language,对象图导航语言),它是一个功能强大的表达式语言,用来获取和设置 Java 对象的属性以及调用对象的方法。它旨在提供一个更高的更抽象的层次来对 Java 对象图进行导航。

OGNL 是 Struts2 的默认表达语言,OGNL 表达式的计算是围绕 OGNL 上下文(Context)进行的,相当于一个 Map 对象,见下图的结构:

 

<body>
    Hello World, Welcome! <s:property value="name"/>
</body>

 

<s:property value="name"/> 这便是 OGNL 的一种应用,访问 action 的普通属性。

  • # 符号

通常有三种用法:

  1. 访问非 root 对象。
  1. 用于过滤和投影集合。
     
  2. 构造 Map,例如:#{'key1':'value1', 'key2':'value2'}。
  • % 符号

用途是告诉标签的处理类将它包含的字符串,强行按照 OGNL 表达式处理。例如:

<s:set name="mySet" value="#{'key1':'value1','key2':'value2'}" />
<s:property value="#mySet['key1']"/>   //输出的是 value1
<s:url value="#mySet['key1']" />      //输出的是#mySet['key1']
<s:url value="%{#mySet['key1']}"/>   //输出的是 value1

 

  • $ 符号

通常在 struts.xml 配置文件中的使用方式如下:

<field-validator type="stringlength">
            <param name="maxLength">18</param>
               <param name="minLength">6</param>
               <param name="trim">true</param>
            <message>密码强度必须在 ${minLength}到${maxLength} 之间!</message>
        </field-validator>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值