標簽庫簡化了用戶對標簽的使用
結(jié)合OGNL使用,對于集合、對象的訪問功能非常強大
提供可擴展的主題、模板支持、極大簡化了視圖頁面的編寫
不依賴任何表現(xiàn)層技術(shù)
Struts2標簽的分類:
通用標簽(Generir Tags)
UI標簽(UI Tags)
Ajax標簽(Ajax Tags)
二、數(shù)據(jù)標簽web.xml
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPRepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
三個實體類
package com.pb.entity;/* * 地區(qū)類 */public class District { private int districtId; //地區(qū)編號 private String districtName; //地區(qū)名稱 public District() { super(); // TODO Auto-generated constructor stub } public District(int districtId, String districtName) { super(); this.districtId = districtId; this.districtName = districtName; } public int getDistrictId() { return districtId; } public String getDistrictName() { return districtName; } public void setDistrictId(int districtId) { this.districtId = districtId; } public void setDistrictName(String districtName) { this.districtName = districtName; } }package com.pb.entity;/* * 街道 */public class Street { private int streetId; //街道ID private String streetName; //街道名稱 private District district; //街道所在地區(qū) public Street() { super(); // TODO Auto-generated constructor stub } public Street(int streetId, String streetName, District district) { super(); this.streetId = streetId; this.streetName = streetName; this.district = district; } public District getDistrict() { return district; } public int getStreetId() { return streetId; } public String getStreetName() { return streetName; } public void setDistrict(District district) { this.district = district; } public void setStreetId(int streetId) { this.streetId = streetId; } public void setStreetName(String streetName) { this.streetName = streetName; } }package com.pb.entity;import java.util.Date;/* * 房屋 */public class House { private int houseId; //房屋ID private String title; //房屋標題 private Street street;//房屋所在街道 private Date addDate;//房屋發(fā)布日期 private String desc; //房屋描述 public House() { super(); // TODO Auto-generated constructor stub } public House(int houseId, String title, String desc, Date addDate, Street street) { super(); this.houseId = houseId; this.title = title; this.desc = desc; this.addDate = addDate; this.street = street; } public Date getAddDate() { return addDate; } public String getDesc() { return desc; } public int getHouseId() { return houseId; } public Street getStreet() { return street; } public String getTitle() { return title; } public void setAddDate(Date addDate) { this.addDate = addDate; } public void setDesc(String desc) { this.desc = desc; } public void setHouseId(int houseId) { this.houseId = houseId; } public void setStreet(Street street) { this.street = street; } public void setTitle(String title) { this.title = title; }}
houseaction
package com.pb.web.action;import java.util.ArrayList;import java.util.Date;import java.util.List;import com.opensymphony.xwork2.ActionSupport;import com.pb.entity.District;import com.pb.entity.House;import com.pb.entity.Street;public class HouseAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private List<House> houses; @Override public String execute() throws Exception { //聲明地區(qū) District dt1=new District(75501,"寶安區(qū)"); District dt2=new District(75502,"南山區(qū)"); //聲明街道 Street street1=new Street(74,"布心一村",dt1); Street street2=new Street(25,"商業(yè)街",dt1); Street street3=new Street(87,"科技園",dt2); Street street4=new Street(99,"南頭古城",dt2); //房屋 House house1=new House(11,"一房一廳","靠近公園",new Date(),street1); House house2=new House(12,"二房一廳","環(huán)中線",new Date(),street2); House house3=new House(13,"單間","高新公寓",new Date(),street3); House house4=new House(14,"一房一廳","靠近中山公園",new Date(),street4); houses=new ArrayList<House>(); //添加 houses.add(house1); houses.add(house2); houses.add(house3); houses.add(house4); return SUCCESS; } public List<House> getHouses() { return houses; } public void setHouses(List<House> houses) { this.houses = houses; } }
struts.xml
<package name="default" namespace="/" extends="struts-default"> <action name="house" class="com.pb.web.action.HouseAction"> <result name="success"> /houseList.jsp </result> </action> </package>
頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><%//絕對路徑 String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><!-- 引入絕對路徑 --><base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>房屋列表信息</title></head><body><!--房屋列表中第一個房屋的信息標題 -->房屋列表中第一個房屋的信息標題 :<s:property value="houses[0].title"/><br/>房屋列表中第一個房屋的信息ID :<s:property value="houses[0].houseId"/><br/><!--房屋列表中第一個房屋的信息標題 -->房屋列表中第一個房屋的信息標題 :<s:property value="" default="默認信息"/><br/><!--是否轉(zhuǎn)義HTML,將OGNL轉(zhuǎn)化為字符要加單引號 -->是否轉(zhuǎn)義HTML:<s:property value="'<hr/>'" /><br/><!--是否轉(zhuǎn)義HTML 將OGNL轉(zhuǎn)化為字符要加單引號 escapeXml默認為true -->是否轉(zhuǎn)義HTML:<s:property value="'<hr/>'" escapeHtml="false" /><br/><!--s:date標簽格式化日期 -->房屋列表中第一個房屋的發(fā)布日期 未格式:<s:property value="houses[0].addDate"/><br/>房屋列表中第一個房屋的發(fā)布日期 格式化后:<s:date name="houses[0].addDate" format="yyyy-MM-dd HH:mm:ss"/><br/><s:property value="'<hr/>'" escapeHtml="false"/><br/><!--s:set標簽 -->房屋列表中第一個房屋的街道名稱:<s:set var="s" value="houses[0].Street" /><s:property value="#s.streetName"/><br/>房屋列表中第一個房屋的街道ID:<s:property value="#s.streetId"/><br/>房屋列表中第一個房屋的地區(qū)名稱:<s:property value="houses[0].Street.District.districtId"/><br/>房屋列表中第一個房屋的地區(qū)名稱:<s:set var="d" value="#s.District" /><s:property value="#d.districtName"/><br/><br/>房屋列表中第一個房屋的地區(qū)ID:<s:property value="#d.districtId"/><br/><br/><s:property value="'<hr/>'" escapeHtml="false"/><br/><!--scope指定s:set var的取值 -->房屋列表中第一個房屋的街道名稱:<s:set var="s" value="houses[0].Street" scope="request" /><s:property value="#request.s.streetName"/><br/>房屋列表中第一個房屋的街道ID:<s:property value="#request.s.streetId"/><br/><s:property value="'<hr/>'" escapeHtml="false"/><br/>房屋列表中第一個房屋的地區(qū)名稱:<s:set var="d" value="houses[0].Street.District" scope="session"/><s:property value="#session.d.districtName"/><br/>房屋列表中第一個房屋的地區(qū)ID:<s:property value="#session.d.districtId"/><br/><s:debug/><br/></body></html>
地址欄輸入:http://localhost:8080/OGNLDemo2/house.action發(fā)生跳轉(zhuǎn)
三、s:a與s:url<s:url var="house" value="house.action"><!-- 傳遞參數(shù) name為參數(shù)名稱 vaule為要傳的值 --><s:param name="str" value="'struts2'"/></s:url><!-- 使用%{}來獲取值--><s:a href="%{#house}">跳轉(zhuǎn)列表頁面</s:a><!--動態(tài)包含 --><s:include value="include.jsp"></s:include>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><% //絕對路徑 String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><!-- 引入絕對路徑 --><base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>房屋列表信息</title><style type="text/CSS">.header{ text-align: center; background-color: #999999; font-weight: bold; font-size: 18px;}.even { text-align: center; background-color: #FFCCFF;}.odd { text-align: center; background-color: #CCCCFF;}</style></head><body> <table border="1" width="100%"> <tr class="header"> <td>房屋編號</td> <td>房屋標題</td> <td>房屋描述</td> <td>房屋發(fā)布日期</td> <td>房屋街道ID</td> <td>房屋街道</td> <td>房屋街道地區(qū)ID</td> <td>房屋街道地區(qū)名稱</td> </tr> <s:iterator var="hou" value="houses" status="status"> <s:if test="#status.even"> <tr class="even"> </s:if> <s:if test="#status.odd"> <tr class="odd"> </s:if> <!-- 定義街道 --> <s:set var="strtmp" value="#hou.Street" /> <!--定義地區(qū) --> <s:set var="distmp" value="#strtmp.District" /> <td><s:property value="#hou.houseId" /></td> <td><s:property value="#hou.title" /></td> <td><s:property value="#hou.desc" /></td> <td><s:date name="#hou.addDate" format="yyyy-MM-dd HH:mm:ss" /></td> <td><s:property value="#strtmp.streetId" /></td> <td><s:property value="#strtmp.streetName" /></td> <td><s:property value="#distmp.districtId" /></td> <td><s:property value="#distmp.districtName" /></td> </tr> </s:iterator> </table> <s:debug /></body></html>
struts.xml
<action name="house2" class="com.pb.web.action.HouseAction"> <result name="success"> /houseList2.jsp </result> </action>
地址欄中輸入:http://localhost:8080/OGNLDemo2/house2.action訪問
|
新聞熱點
疑難解答