建网站对企业的作用,保定网站建设方案报价,微官网和微网站,用jquery做网站Struts2的值栈和OGNL牛逼啊一 值栈简介#xff1a;值栈是对应每个请求对象的一套内存数据的封装#xff0c;Struts2会给每个请求创建一个新的值栈#xff0c;值栈能够线程安全的为每个请求提供公共的数据存取服务。二 OGNL介绍#xff1a;(1)基本数据#xff1a;OGNL 是对…Struts2的值栈和OGNL牛逼啊一 值栈简介值栈是对应每个请求对象的一套内存数据的封装Struts2会给每个请求创建一个新的值栈值栈能够线程安全的为每个请求提供公共的数据存取服务。二 OGNL介绍(1)基本数据OGNL 是对象图导航语言Object-GraphNavigationLanguage的缩写它是一种功能强大的表达式语言。OGNL 访问ValueStack数据OGNL 访问ActionContext数据访问某个范围下的数据要用##parameters 请求参数 request.getParameter(...)#request 请求作用域中的数据 request.getAttribute(...)#session 会话作用域中的数据 session.getAttribute(...)#application 应用程序作用域中的数据 application.getAttribute(...)#attr 按照 page request session application 顺序查找值我们以例子理解这部分内容,设置HelloAction1 public class HelloAction extendsActionSupport{2 private static final long serialVersionUID 1L;3 Override4 public String execute() throwsException {5 //狭义上的值栈6 ActionContext actionContextActionContext.getContext();7 ValueStack valueStackactionContext.getValueStack();8 valueStack.set(name, 张三(ValueStack));9 valueStack.set(age, 11);10 //session中的值11 Map sessionactionContext.getSession();12 session.put(name,王五(session));13 session.put(age,13);14 //application中的内容15 Map applicationactionContext.getApplication();16 application.put(name, 赵六(application));17 application.put(age,14);18 returnSUCCESS;19 }20 }Struts.xml文件的配置1 2 3 4 5 success.jsp6 7 8 前端页面success.jsp1 2 pageEncodingutf-8%3 4 5 6 7 8 Insert title here9 10 11 request.setAttribute(name,李四(request));12 request.setAttribute(age,12);13 %14 15 值栈 获取的数据16 17 18 前台传递的数据19 20 21 request中的数据22 23 24 session中的数据25 26 27 application的数据: 28 29 30 attr取值 : 31 32 33 34 首先是取值方式①值栈 直接取 比如说是name age就可以使用这种方式value”name” value”age”②page页面传递的数据 比如说是name age使用这种方式value#parameters.name” value#parameters.age”③requset设置的值 使用的方式 value#request.name value#request.age④session设置的值使用的方式 value#session.name value#session.age⑤application设置的值使用的方式value#application.name value#application.age之后attr的取值方式是按照page request session applicaiton这个顺序取得。例如attr获取的是request的值(2)OGNL访问静态方法和属性Mystatic类1 public classMyStatic {23 public static final String stryxs;45 public staticString printUrl(){67 System.out.println(http://www.yxs.com);89 return http://www.yxs.com;1011 }1213 }Static.jsp直接访问1 2 访问静态属性 3 访问静态方法4 结果(3)OGNL 访问复杂对象我们以javaBean对象为例Student类1 public classStudent {2 privateString name;3 private intage;4 publicStudent() {5 super();6 //TODO Auto-generated constructor stub7 }8 public Student(String name, intage) {9 super();10 this.name name;11 this.age age;12 }13 publicString getName() {14 returnname;15 }16 public voidsetName(String name) {17 this.name name;18 }19 public intgetAge() {20 returnage;21 }22 public void setAge(intage) {23 this.age age;24 }25 }Success.jsp文件:1 2 3 ognl的javaBean值 4 5 6 ognl的List集合 7 8 9 10 11 12 13 14 15 ognl的Map 16 17 18 19 20 21 22 HelloAction文件代码1 public class HelloAction extendsActionSupport{2 private static final long serialVersionUID 1L;3 private Student student;//javaBean4 private Liststudents;//list5 private MapstudentMap;//Map6 publicStudent getStudent() {7 returnstudent;8 }910 public voidsetStudent(Student student) {11 this.student student;12 }1314 public ListgetStudents() {15 returnstudents;16 }1718 public void setStudents(Liststudents) {19 this.students students;20 }2122 public MapgetStudentMap() {23 returnstudentMap;24 }2526 public void setStudentMap(MapstudentMap) {27 this.studentMap studentMap;28 }2930 Override31 public String execute() throwsException {32 //TODO Auto-generated method stub3334 studentsnew ArrayList();35 studentnew Student(小八,12);36 students.add(new Student(小酒,13));37 students.add(new Student(小石,14));38 students.add(new Student(十一,15));39 studentMapnew HashMap();40 studentMap.put(goodStudent, new Student(学霸,20));41 studentMap.put(badStudent, new Student(学渣,19));42 returnSUCCESS;43 }44 }显示结果