天天看點

[Struts]學習日記3 - 在頁面中顯示條目清單

開發jsp/servlet最經常遇到的應用其中之一就是在頁面上顯示一個條目清單(例如使用者清單、文章清單、商品清單等等),然後使用者才好在浏覽的基礎上選擇對某一個條目進行操作。現在就說一下怎樣用struts實作這個功能。

一般來說,用struts開發的應用是不應該直接通路.jsp檔案的,而是由action轉發請求,jsp隻是顯示action傳來的資料用。是以即使這樣簡單的一個應用,也還是需要一個action的。

1、還是使用easy struts的向導,在菜單裡選擇File->New->Other,然後選擇Easy Action這一項。這就打開一個向導視窗,該向導隻有兩步,比學習日記1裡的少了建立form bean的那一步。

2、我們給要建立的action起名叫listItems好了,也就是說,在user case框裡輸入listItems。Type最好根據需要修改一下包名稱。按下一步繼續。

3、增加一個名為success的forward,path為/form/listItems.jsp。按finish按鈕完成整個向導。

4、下面,首先編輯剛剛生成的ListItemsAction.java檔案,修改execute方法如下:

 public ActionForward execute(

  ActionMapping mapping,

  ActionForm form,

  HttpServletRequest request,

  HttpServletResponse response)

  throws Exception {

  User user = new User();

  List items = new ArrayList();

  items.add(new Item("001", "Medicine"));

  items.add(new Item("002", "Ticket"));

  items.add(new Item("003", "Clothes"));

  user.setItems(items);

  request.getSession().setAttribute("user", user);

  return (mapping.findForward("success"));

 }

這裡的User和Item都是我們自己寫的類,一個User可以擁有多個items,Item具有id和name兩個屬性。具體代碼見後。

5、接下來在/form下建立名為listItems.jsp的檔案,内容如下:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> 

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> 

<html> 

 <head>

  <title>itemlist</title>

 </head>

 <body>

  <table>

  <logic:iterate name="user" property="items" id="item">

   <tr>

    <td><bean:write name="item" property="id" filter="true"/></td>

    <td><bean:write name="item" property="name" filter="true"/></td>

   </tr>

  </logic:iterate>

  </table>

</html>

這裡關鍵的就是<logic:iterate>這個标簽,在這個例子中,它用來周遊session或request中key為user對應的對象的items屬性,在周遊過程中可用item引用每個對象(<bean:write name="item">)。<bean:write>用于輸出每個對象的不同屬性,filter="true"表示把特殊字元進行轉換,例如<轉換為<等等。

001

Medicine

002

Ticket

003

Clothes

7、我們可以修改struts-config.xml檔案,讓使用者登入成功後直接轉向條目清單頁面。隻需要把原來logon action的名為success的forward的path由/form/main.htm改為/listItems.do就可以了。

附:

User.java代碼:

public class User {

 private List items;

 public User(){

  items=new ArrayList();

 public List getItems() {

  return items;

 public void setItems(List list) {

  items = list;

}

Item.java代碼:

public class Item {

 private String id;

 private String name;

 public Item(String arg0, String arg1){

  id=arg0;

  name=arg1;

 public String getId() {

  return id;

 public String getName() {

  return name;

 public void setId(String string) {

  id = string;

 public void setName(String string) {

  name = string;