1.先在mysql建立兩張表,一張城市表City,一張地區表Area:
2.寫兩個實體類:
City.java
package com.jmx.entity;
public class City {
private int id;
private String name;
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;
}
public City(int id,String name) {
this.id = id;
this.name = name;
}
public City() {
}
}
Area.java
package com.jmx.entity;
public class Area {
private int id;
private int cid;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Area(int id,String name,int cid) {
this.id = id;
this.name = name;
this.cid = cid;
}
public Area() {
}
}
3.寫一個Dao類:
Dao.java
public class Dao {
/**
* 查詢所有城市
* @throws ClassNotFoundException
* */
public List<City> SelCity() throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/emp","root","408817");
PreparedStatement ps = null;
ResultSet rs = null;
List<City> list = new ArrayList<City>();
String sql = "select * from City";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
City city = new City();
city.setId(rs.getInt("id"));
city.setName(rs.getString("name"));
list.add(city);
}
conn.close();
rs.close();
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/**
* 查詢所有的地區
* @throws SQLException
* @throws ClassNotFoundException
* */
public List<Area> SelArea(int id) throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/emp","root","408817");
PreparedStatement ps = null;
ResultSet rs = null;
List<Area> list = new ArrayList<Area>();
String sql = "select * from Area a join City c on a.cid=c.id where a.cid=?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while(rs.next()) {
Area area = new Area();
area.setCid(rs.getInt("id"));
area.setName(rs.getString("name"));
area.setCid(rs.getInt("cid"));
list.add(area);
}
conn.close();
rs.close();
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
4.action類
DemoAction.java
public class DemoAction extends ActionSupport {
private String user;
private List<City> citylist;
private Map<Integer,List<Area>> areaMap;
Dao dao = new Dao();
@Override
public String execute() throws Exception {
citylist = dao.SelCity();
areaMap = new HashMap<Integer,List<Area>>();
List<Area> area = new ArrayList<Area>();
for(int i=0;i<citylist.size();i++) {
area=dao.SelArea(citylist.get(i).getId());
areaMap.put(citylist.get(i).getId(), area);
}
return SUCCESS;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public List<City> getCitylist() {
return citylist;
}
public void setCitylist(List<City> citylist) {
this.citylist = citylist;
}
public Map<Integer, List<Area>> getAreaMap() {
return areaMap;
}
public void setAreaMap(Map<Integer, List<Area>> areaMap) {
this.areaMap = areaMap;
}
}
5.index.jsp
<s:form action="login">
<s:doubleselect name="a" doubleList="areaMap.get(top.id)" list="citylist" doubleName="id1" listKey="id" listValue="name" doubleListKey="id" doubleListValue="name" theme="simple" ></s:doubleselect>
<s:submit />
</s:form>
6.struts.xml
<package name="default" extends="struts-default">
<action name="login" class="com.jmx.action.DemoAction">
<result name="success">/index.jsp</result>
</action>
</package>
訪問: