您的位置:首页 > 其它

使用 OGNL 通过 Action 获取请求参数

2012-03-19 17:14 344 查看
OGNL:Object-Graph Navigation Language,对象图导航语言 ,可以方便地操作对象属性的开源表达式语言

至于怎么说是表达式语言,看了书上的例子大概了解了一点。

1. OnglAction.java

package com.lihui;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class OnglAction extends ActionSupport{

private Car myCar;

@Override
public String execute() throws Exception {
//获取ActionContext 示例,以便访问 servlet API
ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("msg", "application信息");
ctx.getSession().put("msg", "session信息");
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("msg", "request信息");
myCar = new Car();
myCar.setColor("Black");
myCar.setWidth("1.5cm");
ctx.getSession().put("mycar", myCar);
return SUCCESS;
}

public Car getCar(){
return myCar;
}

public void setCar(Car car){
this.myCar = car;
}

}


2.自定义Car类

package com.lihui;

public class Car {
private String width;
private String color;
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public String getWidth(){
return width;
}
public void setWidth(String width){
this.width = width;
}
}


3.struts,xml

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

<struts>
<package name="com.lihui" extends="struts-default">
<action name="onglAction" class="com.lihui.OnglAction">
<result name="success">msg.jsp</result>
</action>
</package>

</struts>


4.msg.jsp

在上面这段代码中,第16行获取值其实与第18行获取值是等价的。并且,第16行的 Car 指的应

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>msg.jsp</title>
</head>

<body>
<p>parameters:<s:property value="#parameters.msg"/></p>
<p>request.msg:<s:property value="#request.msg"/></p>
<p>session.msg:<s:property value="#session.msg"/></p>
<p>application.msg:<s:property value="#application.msg"/></p>
<p>attr.msg:<s:property value="#attr.msg"/></p>
<s:property value="Car.{?#this.color=='Black'}.{width}[0]"/><br/>
汽车的颜色:<s:property value="#session.mycar.color"/>
<p>汽车的Width为:<s:property value="#session.mycar.width"/></p>
<!-- 下面创建一个新集合 -->
<s:set name="student" value="#{'Jack':'21','Rose':'22'}"></s:set>
<p>学生Jack的年龄为:<s:property value="#student['Jack']"/></p>
</body>
</html>


该是类。但是测试发现,大小写并不敏感。

全部配置好之后,编译,启动服务器,输入 http://localhost:8080/onglAction.action?msg=lihui 后显示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐