ognl和Struts2标签概述

ognl概述

ognl的作用

Struts2默认的表达式语言就是OGNL,它具有以下特点:

  • 支持对象方法调用。例如:objName.methodName()。
  • 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名]。

例如:@java.lang.String@format(‘foo %s’,’bar’)。

  • 支持赋值操作和表达式串联。

例如:price=100,discount=0.8,calculatePrice(),在方法中进行乘法计算会返回80。

  • 访问OGNL上下文 (OGNL context)和 ActionContext。
  • 操作集合对象。

但是上面OGNL作用的访问方法啊等等,都不是经常用到的。我们用到的是下面这种!!!

之前web阶段,学习过EL表达式,EL表达式在JSP中获取域对象里面的值。

OGNL是一种表达式,这个表达式功能更加强大

  • 在Struts2里面操作值栈的数据!!
  • 一般ognl在struts2操作:和struts2标签一起使用操作值栈。

OGNL和struts2的关系:OGNL不是struts2的一部分,是一个单独的项目,只是经常和struts2一起使用

  • 使用ognl的时候,首先导入jar包。

ognl入门案例

使用OGNL+struts2标签实现计算字符串长度。

  • 支持对象方法调用objName.methodName();

  • 以前计算长度在java代码中,调用字符串.length();

使用struts2的标签

  • 使用jstl的时候,除了导入jar包外,还要在jsp页面引入标签库。struts2也是一样的!!!

具体细节代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'ognl.jsp' starting pagetitle>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

  head>

  <body>
        <s:property value="'huyibaoaitongzuo'.length()"/>
  body>
html>

你可能感兴趣的:(struts2)