struts
釋出已經很久了
雖然自己現在作GUI開發
不過有時間還是學習下web開發
現在就將我使用myeclipse工具應用struts
+ spring + hibernate 實現CRUD操作的步驟一一紀錄下來
為初學者少走彎路略盡綿薄之力!
首先
myeclipse中web工程目錄結構如下圖:
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161589.jpg)
使用myeclipse開發hibernate和spring的操作我就不詳細說了
網上的教程很多
如果有不明白的可以咨詢我
呵呵
其中持久類AbstractTest
Test
TestDAO
Test
hbm
xml都是myeclipse的hibernate工具生成的
TestAction類是struts
的核心處理類
代碼如下:
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
package com
yangqiang
strutsdemo
web;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import java
util
Collection;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import java
util
List;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import org
apache
log
j
Logger;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import com
opensymphony
xwork
ActionSupport;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import com
yangqiang
strutsdemo
domain
Test;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
import com
yangqiang
strutsdemo
domain
TestDAO;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang 創建日期:
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @version pattern Study
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 技術支持: <a >;/a>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161550.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
public class TestAction extends ActionSupport
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
private static final Logger log = Logger
getLogger(TestAction
class);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
private Integer id;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
private Integer[] ids;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
protected TestDAO testDao;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
private Test test;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
private Collection<Test> testColl;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述 return 返回 ids
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public Integer[] getIds()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return ids;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:設置ids的值
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @param ids
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public void setIds(Integer[] ids)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
this
ids = ids;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述 return 返回 testColl
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public Collection<Test> getTestColl()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return testColl;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:設置testColl的值
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @param testColl
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public void setTestColl(Collection<Test> testColl)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
this
testColl = testColl;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述 return 返回 id
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public Integer getId()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return id;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:設置id的值
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @param id
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public void setId(Integer id)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
this
id = id;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述 return 返回 testDao
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public TestDAO getTestDao()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return testDao;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:設置testDao的值
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @param testDao
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public void setTestDao(TestDAO testDao)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
this
testDao = testDao;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述 return 返回 test
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public Test getTest()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return test;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
/** *//**
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* 描述:設置test的值
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @param test
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @author Stone yang
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
* @date
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public void setTest(Test test)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
this
test = test;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public String load()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
test = getTestDao()
findById(id);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return SUCCESS;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
@SuppressWarnings(
unchecked
)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public String list()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
testColl = getTestDao()
findByExample(new Test());
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return SUCCESS;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public String store()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
getTestDao(rge(test);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return SUCCESS;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
public String remove()
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
for (int i =
size = ids
length; i < size; i++)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
getTestDao()
delete(getTestDao()
findById(ids[i]));
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
return SUCCESS;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161550.gif)
}
applicationContextxml 主要是工具生成 的只是將配置文件路徑改下代碼如下:
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<?xml version=
encoding=
UTF
?>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<!DOCTYPE beans PUBLIC
//SPRING//DTD BEAN//EN
beans
dtd
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<beans>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<bean id=
struts
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
class=
org
springframework
orm
hibernate
LocalSessionFactoryBean
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<property name=
configLocation
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<!
改變了一下
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<value>/WEB
INF/classes/hibernate
cfg
xml</value>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</property>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</bean>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<bean id=
testDao
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
class=
com
yangqiang
strutsdemo
domain
TestDAO
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<property name=
sessionFactory
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<ref bean=
struts
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</property>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</bean></beans>
struts
xml (變化不大
寫過以前struts配置文件的不難理解)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<?xml version=
encoding=
UTF
?>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<!DOCTYPE struts PUBLIC
//Apache Software Foundation//DTD Struts Configuration
//EN
dtd
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<struts>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<package name=
struts_crud
extends=
struts
default
namespace=
/test
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<action name=
List
class=
com
yangqiang
strutsdemo
web
TestAction
method=
list
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<result>list
jsp</result>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</action>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<action name=
Edit
class=
com
yangqiang
strutsdemo
web
TestAction
method=
load
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<result>edit
jsp</result>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</action>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<action name=
Store
class=
com
yangqiang
strutsdemo
web
TestAction
method=
store
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<result type=
redirect
>List
action</result>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</action>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<action name=
Remove
class=
com
yangqiang
strutsdemo
web
TestAction
method=
remove
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<result type=
redirect
>List
action</result>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</action>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</package>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</struts>
struts
properties
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
struts
objectFactory = spring
web
xml
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<?xml version=
encoding=
UTF
?>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<web
app version=
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
xmlns=
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
xmlns:xsi=
instance
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
xsi:schemaLocation=
;
app_
_
xsd
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<display
name>Struts
crud 例程</display
name>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<context
param>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<param
name>contextConfigLocation</param
name>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<param
value>classpath*:*
xml</param
value>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</context
param>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<listener>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<listener
class>org
sprntext
ContextLoaderListener</listener
class>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</listener>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<filter>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<filter
name>struts
</filter
name>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<filter
class>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
org
apache
struts
dispatcher
FilterDispatcher
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</filter
class>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</filter>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<filter
mapping>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<filter
name>struts
</filter
name>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<url
pattern>/*</url
pattern>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</filter
mapping>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<welcome
file
list>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<welcome
file>list
jsp</welcome
file>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</welcome
file
list>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</web
app>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
list
jsp
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
<%
@ page language=
java
contentType=
text/html; charset=utf
pageEncoding=
utf
%>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
<%
@ taglib prefix=
s
uri=
/struts
tags
%>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<!DOCTYPE html PUBLIC
//W
C//DTD XHTML
Transitional//EN
transitional
dtd
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<html xmlns=
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<head>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<title>Book List</title>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
<style type=
text/css
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
table {
}{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
border:
px solid black;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
border
collapse: collapse;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
table thead tr th {
}{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
border:
px solid black;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
padding:
px;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
background
color: #cccccc;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161572.gif)
table tbody tr td {
}{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
border:
px solid black;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161537.gif)
padding:
px;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161592.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161550.gif)
</style>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</head>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<body>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<h
>Book List</h
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:form action=
Remove
theme=
simple
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<table cellspacing=
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<thead>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<tr>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<th>勾選</th>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<th>ID</th>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<th>名稱</th>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<th>作者</th>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</tr>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</thead>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<tbody>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:iterator value=
testColl
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<tr>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<td><input type=
checkbox
name=
ids
value=
<s:property value=
id
/>
/></td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<td><s:property value=
id
/></td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<td><s:property value=
name
/></td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<td><s:property value=
author
/></td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<a <s:url action=
Edit
><s:param name=
id
value=
id
/></s:url>
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
Edit
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</a>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<a <s:url action=
Remove
><s:param name=
ids
value=
id
/></s:url>
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
Delete
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</a>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</td>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</tr>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</s:iterator>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</tbody>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</table>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:submit value=
Remove
/><a >Add Test</a>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</s:form>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</body>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</html>
edit
jsp
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
<%
@ page language=
java
contentType=
text/html; charset=utf
pageEncoding=
utf
%>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161596.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161570.gif)
<%
@ taglib prefix=
s
uri=
/struts
tags
%>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<!DOCTYPE html PUBLIC
//W
C//DTD XHTML
Transitional//EN
transitional
dtd
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<html xmlns=
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<head>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<title>Book</title>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</head>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<body>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<h
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:if test=
null == test
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
Add Book
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</s:if>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:else>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
Edit Book
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</s:else>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</h
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:form action=
Store
>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:hidden name=
test
id
label=
ID
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:textfield name=
test
name
label=
書名
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:textfield name=
test
author
label=
作者
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
<s:submit />
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</s:form>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</body>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320161518.gif)
</html>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28215.html