ognl取值的代码

1.首先设置后台User数据 

分别设置有id和name和地址

再用有参和无参将之初始化:

接着用SET、get方法将之对外封装

package ognl;

public class User {
    
    private int id;
    
    private String name;
    
    private Adress adress=new Adress("广东","gz");

    
    
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }

    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
        this.adress = adress;
    }

    public Adress getAdress() {
        return adress;
    }

    public void setAdress(Adress adress) {
        this.adress = adress;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.设置后台action控制

首先继承actionsupport,再去重写里面的execute方法

 再用struts2中比较万能的struts2的ActionContext取得联系上下文的request,再以map集合封装

最后用map集合来存储外部数据 

 也可以直接使用ActionContext来存储数据,既是利用ActionContext.getContextMap().put();在put中放入数据

案例:

package ognl;

import java.util.Map;

import org.junit.Test;

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

public class OgnlDemo2 extends ActionSupport{
//这里是有参方法封装利用   

private User user=new User(100,"sam");    
    public User getUser() {
        return user;
    }

//set、get方法封装
    public void setUser(User user) {
        this.user = user;
    }


    @Override
        public String execute() throws Exception {
            
        ActionContext ac=ActionContext.getContext();
        //映射数据
        //这个是一个上下文的map,其实就是一个request
    //    ac.getContextMap().put("request_data", "request_data");
        //数据存储数据
        //传统来说:用 这种方法是比较好的
            Mapmap=(Map) ac.get("request");
            map.put("request_data", "request_data");
            map.put("cn", "china");
         
        
            ac.getSession().put("session_data", "session_data");
            ac.getApplication().put("application_data", "application_data");
            //二、值栈对象的存储数据的原理
            ValueStack vs=ac.getValueStack();
            //栈顶
        /*    vs.getRoot().push(new User(1002,"tom"));
            //移除栈顶元素
            vs.pop();*/
            vs.set("user1", new User(1,"sam"));
            vs.set("user2", new User(2,"yezi"));
            System.out.println(vs);
            return super.execute();
        }
}


3.最后可以设置前台的jsp页面了

首先在jsp页面中必须要学会运用ognl表达式

取值分为:取根元素和非根元素两种区别

其一:什么是根元素什么是非根元素

根元素:即action对象和全局属性

访问这两者的区别在于根元素不需要加#直接拿来用而非根是需要加#号的

最后使用取值方法来直接呈现在jsp页面上


案例:

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



 
    My JSP 'index.jsp' starting page
    
    
        
    
    
    
 
 
 
 
 
 
1.取根元素的值

 
   
         
     
              
               
 
2.取非根元素的值

 
 
 
 

 
 
   
   
  
  
 

      
 
 
 
 



然后部署文件启动tomcat,在浏览器里访问(当然在这里,我没有亮出配置web.xml方法)

ognl取值的代码_第1张图片

这就是ognl取值的过程(其实也就是在jsp页面上呈现的代码而已利用s:property的value从action中获取的值


你可能感兴趣的:(java小结)