首页 > 代码库 > struts2-9-OGNL

struts2-9-OGNL

一:简单属性,对象,嵌套对象,指定域作value:

     

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 简单属性作value:<br>
12    &nbsp;用户名:<s:property value="username"/><br>
13    &nbsp;密码:<s:property value="password"/><br>
14 对象作value:<br>
15   &nbsp;用户名:<s:property value="user.username"/><br>
16   &nbsp;密码:<s:property value="user.password"/><br>
17 嵌套对象作value:<br>
18   &nbsp;<s:property value="cat.friend.name"/>&nbsp;And&nbsp;<s:property value="cat.name"/>是好朋友!<br>
19 获取指定域的值:<br>
20    &nbsp;指定域session中的值:<s:property value="#session.USER"/>
21 </body>
22 </html>

 

二:需要有对应的Set,Get方法

   nuc.sw.vo---> User.java  Cat.java  Mouse.java  

 

 1 package nuc.sw.vo;
 2 
 3 public class User {
 4   private String username;
 5   private String password;
 6 public String getUsername() {
 7     return username;
 8 }
 9 public void setUsername(String username) {
10     this.username = username;
11 }
12 public String getPassword() {
13     return password;
14 }
15 public void setPassword(String password) {
16     this.password = password;
17 }
18   
19   
20   
21 }
 1 package nuc.sw.vo;
 2 
 3 public class Cat {
 4    private Mouse friend;
 5    private String name;
 6 public Mouse getFriend() {
 7     return friend;
 8 }
 9 public void setFriend(Mouse friend) {
10     this.friend = friend;
11 }
12 public String getName() {
13     return name;
14 }
15 public void setName(String name) {
16     this.name = name;
17 }
18    
19 }
 1 package nuc.sw.vo;
 2 
 3 public class Mouse {
 4   private String name;
 5 
 6 public String getName() {
 7     return name;
 8 }
 9 
10 public void setName(String name) {
11     this.name = name;
12 }
13   
14 }

 

三:action中做相应的set,get

nuc.sw.action--->OgnlAction.java

 1 package nuc.sw.action;
 2 
 3 import com.opensymphony.xwork2.ActionContext;
 4 import com.opensymphony.xwork2.ActionSupport;
 5 
 6 import nuc.sw.vo.Cat;
 7 import nuc.sw.vo.User;
 8 
 9 public class OgnlAction extends ActionSupport {
10   private String username;
11   private String password;
12   
13 public String getUsername() {
14     return username;
15 }
16 public void setUsername(String username) {
17     this.username = username;
18 }
19 public String getPassword() {
20     return password;
21 }
22 public void setPassword(String password) {
23     this.password = password;
24 }
25   
26 
27 private User user;
28 public User getUser() {
29     return user;
30 }
31 public void setUser(User user) {
32     this.user = user;
33 }
34 
35 
36 private Cat cat;
37 
38 public Cat getCat() {
39     return cat;
40 }
41 public void setCat(Cat cat) {
42     this.cat = cat;
43 }
44 
45 
46 @Override
47     public String execute() throws Exception {
48     ActionContext.getContext().getSession().put("USER", "ZD");
49         return SUCCESS;
50     }
51 }

 

 

四:对集合做相应的操作

   (1) 循环和迭代</s:iterator>取数组的值,

   (2)练习使用 ?(全部)   ^(第一)  $(最后一个),

  (3)练习使用Status属性对奇数行或者偶数行做相应改变

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <s:property value="books"/>
12 <table border="1">
13 <tr>
14   <td>书名</td>
15   <td>作者</td>
16   <td>价格</td>
17 </tr>
18 <tr>
19     <td><s:property value="books[0].bookName"/></td>
20     <td><s:property value="books[0].bookAuthor"/></td>
21     <td><s:property value="books[0].bookPrice"/></td>
22 </tr>
23 <tr>
24     <td><s:property value="books[1].bookName"/></td>
25     <td><s:property value="books[1].bookAuthor"/></td>
26     <td><s:property value="books[1].bookPrice"/></td>
27 </tr>
28 <tr>
29    <td><s:property value="books[2].bookName"/></td>
30     <td><s:property value="books[2].bookAuthor"/></td>
31     <td><s:property value="books[2].bookPrice"/></td>
32 </tr>
33 </table>
34 
35 <table border="1">
36 <s:iterator value="books" var="book">
37 <tr>
38     <td><s:property value="#book.bookName"/></td>
39     <td><s:property value="#book.bookAuthor"/></td>
40     <td><s:property value="#book.bookPrice"/></td>
41 </tr>
42 </s:iterator>
43 </table>
44 <br/>
45 练习使用 ?(全部)   ^(第一)  $(最后一个)<br>
46    <s:property value="books.{?#this.bookPrice<50}.{bookName}"/><br>
47    <s:property value="books.{^#this.bookPrice<50}.{bookName}"/><br>
48    <s:property value="books.{$#this.bookPrice<50}.{bookName}"/><br>
49   
50 练习使用Status属性奇数行做相应改变<br>
51 <table border="1">
52 <tr>
53   <td>书名</td>
54   <td>作者</td>
55   <td>价格</td>
56 </tr>
57 <s:iterator value="books" var="book" status="st">
58 <tr <s:if test="#st.odd">style="background-color:#ff0000"</s:if>>
59     <td><s:property value="#book.bookName"/></td>
60     <td><s:property value="#book.bookAuthor"/></td>
61     <td><s:property value="#book.bookPrice"/></td>
62 </tr>
63 </s:iterator>
64 </table>
65 <br/> 
66 
67 练习使用Status属性偶数行做相应改变<br>
68 <table border="1">  
69 <tr>
70   <td>书名</td>
71   <td>作者</td>
72   <td>价格</td>
73 </tr>
74 <s:iterator value="books" var="book" status="st">
75 <tr <s:if test="#st.even">style="background-color:yellow"</s:if>>
76     <td><s:property value="#book.bookName"/></td>
77     <td><s:property value="#book.bookAuthor"/></td>
78     <td><s:property value="#book.bookPrice"/></td>
79 </tr>
80 </s:iterator>
81 </table>
82 </body>
83 </html>

 

五:在对应的action中添加书籍信息

 1 package nuc.sw.action;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import com.opensymphony.xwork2.ActionSupport;
 7 
 8 import nuc.sw.vo.Book;
 9 
10 public class OgnlListAction extends ActionSupport {
11    private List<Book> books=new ArrayList<Book>();
12 
13 public List<Book> getBooks() {
14     return books;
15 }
16 
17 public void setBooks(List<Book> books) {
18     this.books = books;
19 }
20     public String addBook() throws Exception {
21         // TODO Auto-generated method stub
22         books.add(new Book("数据结构","严蔚敏",32.5f));
23         books.add(new Book("数据库","贾美丽",13.2f));
24         books.add(new Book("Struts","李刚",79.5f));
25         return SUCCESS;
26     }
27 } 

 

六:配置struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 9     <constant name="struts.devMode" value="true" />
10 
11     <package name="default" namespace="/" extends="struts-default">
12         <action name="OgnlAction" class="nuc.sw.action.OgnlAction">
13             <result>/hello.jsp</result>
14         </action>
15         <action name="BookListAction" class="nuc.sw.action.OgnlListAction" method="addBook">
16              <result>/showBook.jsp</result>
17         </action>
18     </package>
19 
20 
21 </struts>

 

 

七:项目结构

技术分享

 

八:运行结果

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

 

九:注意事项

 (1):OgnlListAction中不能写 ,因为没有返回值return,所以在struts.xml中不能写method,因此会出错。

        

1 //public OgnlListAction(List<Book> books) {
2 //    super();
3 //    this.books = books;
4 //    //books.add(new Book("数据结构","严蔚敏",(float)32.5));    
5 //}

 

(2)<s:iterator>和<table>要有先后顺序,否则只迭代一个。

(3)背景颜色 background-color。

 

struts2-9-OGNL