题目是这样的
有两张表
一张为新闻类别表
有2个字段:
nid(pk) sort
有一张新闻内容表
有三个字段
cid(pk) nid(fk) title content
要求通过下拉列表框的方法选择新闻类别然后显示该类别的新闻标题(在当前页中显示)
我是用Struts2+Hibernate3.2+JPA实现的.
数据库脚本:
create
database
if
not
exists
news;
drop
table
if
exists
newssort;
create
table
newssort
(
nid
int
primary
key
AUTO_INCREMENT,
sort
varchar
(
50
)
);

drop
table
if
exists
news;
create
table
news
(
cid
int
primary
key
AUTO_INCREMENT,
title
varchar
(
50
)
not
null
,
content
varchar
(
500
)
not
null
,
nid
int
null
);

insert
into
newssort
values
(
null
,
'
娱乐
'
);
insert
into
newssort
values
(
null
,
'
时事
'
);

insert
into
news
values
(
null
,
'
好事
'
,
'
好事连连哈哈
'
,
1
);
insert
into
news
values
(
null
,
'
坏事
'
,
'
坏事不断
'
,
1
);
insert
into
news
values
(
null
,
'
爱情是什么
'
,
'
爱情是什么啊,还没知道呢
'
,
2
);
insert
into
news
values
(
null
,
'
什么啊
'
,
'
测试内容
'
,
2
);

select
*
from
news;
select
*
from
newssort;
两个VO类:
News.java:
package
com.vo;

import
java.io.Serializable;

import
javax.persistence.Entity;
import
javax.persistence.GeneratedValue;
import
javax.persistence.GenerationType;
import
javax.persistence.Id;
import
javax.persistence.Table;

@SuppressWarnings(
"
serial
"
)
@Entity
@Table(name
=
"
news
"
)
public
class
News
implements
Serializable

{
privateIntegercid;
privateStringtitle;
privateStringcontent;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
publicIntegergetCid()


{
returncid;
}

publicvoidsetCid(Integercid)


{
this.cid=cid;
}

publicStringgetTitle()


{
returntitle;
}

publicvoidsetTitle(Stringtitle)


{
this.title=title;
}

publicStringgetContent()


{
returncontent;
}

publicvoidsetContent(Stringcontent)


{
this.content=content;
}
}
Newssort.java:
package
com.vo;

import
java.io.Serializable;
import
java.util.ArrayList;
import
java.util.List;

import
javax.persistence.Entity;
import
javax.persistence.GeneratedValue;
import
javax.persistence.GenerationType;
import
javax.persistence.Id;
import
javax.persistence.JoinColumn;
import
javax.persistence.OneToMany;
import
javax.persistence.Table;

import
org.hibernate.annotations.LazyCollection;
import
org.hibernate.annotations.LazyCollectionOption;

@SuppressWarnings(
"
serial
"
)
@Entity
@Table(name
=
"
newssort
"
)
public
class
Newssort
implements
Serializable

{
privateIntegernid;
privateStringsort;
privateList<News>news=newArrayList<News>();
@OneToMany
@JoinColumn(name="nid")
@LazyCollection(LazyCollectionOption.FALSE)
publicList<News>getNews()


{
returnnews;
}

publicvoidsetNews(List<News>news)


{
this.news=news;
}

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
publicIntegergetNid()


{
returnnid;
}

publicvoidsetNid(Integernid)


{
this.nid=nid;
}

publicStringgetSort()


{
returnsort;
}

publicvoidsetSort(Stringsort)


{
this.sort=sort;
}
}
写个测试类先测试一个持久层操作:
package
com.test;

import
java.util.Iterator;
import
org.hibernate.Session;
import
org.hibernate.cfg.AnnotationConfiguration;
import
org.junit.After;
import
org.junit.Before;

import
com.vo.News;
import
com.vo.Newssort;
public
class
Test

{
privateSessionsession;
@Before
publicvoidsetUp()


{
session=newAnnotationConfiguration().configure().buildSessionFactory().openSession();
}
@After
publicvoidtearDown()


{
session.close();
}

@SuppressWarnings("unchecked")
@org.junit.Test
publicvoidtestFind()


{
@SuppressWarnings("unused")
//List<Newssort>newssort=session.createCriteria(Newssort.class).list();
Newssortnewssort=(Newssort)session.load(Newssort.class,2);
for(Iterator<News>i=newssort.getNews().iterator();i.hasNext();)


{
Stringtitle=i.next().getTitle();
System.out.println(title);
}
}
}
好了写Action
NewsAction:
package
com.web.action;

import
java.util.List;
import
java.util.Map;

import
org.hibernate.Session;
import
org.hibernate.cfg.AnnotationConfiguration;

import
com.opensymphony.xwork2.ActionContext;
import
com.opensymphony.xwork2.ActionSupport;
import
com.vo.News;
import
com.vo.Newssort;


@SuppressWarnings(
{"serial","unchecked"}
)
public
class
NewsAction
extends
ActionSupport

{
privateSessionsession;
privateIntegersortid;

publicIntegergetSortid()


{
returnsortid;
}

publicvoidsetSortid(Integersortid)


{
this.sortid=sortid;
}

publicvoidinit()


{
session=newAnnotationConfiguration().configure()
.buildSessionFactory().openSession();
}

publicStringfindNewssort()


{
this.init();
List<Newssort>sorts=session.createCriteria(Newssort.class).list();
Maprequest=(Map)ActionContext.getContext().get("request");
request.put("sorts",sorts);
session.close();
returnSUCCESS;
}

publicStringfindNews()


{
this.init();
System.out.println("findNews");
List<Newssort>sorts=session.createCriteria(Newssort.class).list();
Newssortnewssort=(Newssort)session.load(Newssort.class,sortid);
List<News>news=newssort.getNews();
Maprequest=(Map)ActionContext.getContext().get("request");
request.put("sorts",sorts);
request.put("news",news);
session.close();
returnSUCCESS;
}
}
hibernate.cfg.xml:
<?
xmlversion="1.0"encoding="UTF-8"
?>
<!
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
<
property
name
="dialect"
>
org.hibernate.dialect.MySQLDialect
</
property
>
<
property
name
="connection.driver_class"
>
com.mysql.jdbc.Driver
</
property
>
<
property
name
="connection.url"
>
jdbc:mysql://localhost:3306/news
</
property
>
<
property
name
="connection.username"
>
root
</
property
>
<
property
name
="connection.password"
>
root
</
property
>
<
property
name
="show_sql"
>
true
</
property
>
<!--
实体类映射
-->
<
mapping
class
="com.vo.News"
/>
<
mapping
class
="com.vo.Newssort"
/>
</
session-factory
>
</
hibernate-configuration
>
struts.xml:
<?
xmlversion="1.0"encoding="UTF-8"
?>
<!
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
<
struts
>
<
package
name
="com"
extends
="struts-default"
>
<
action
name
="findNewssort"
class
="com.web.action.NewsAction"
method
="findNewssort"
>
<
result
name
="success"
>
/index.jsp
</
result
>
</
action
>

<
action
name
="findNews"
class
="com.web.action.NewsAction"
method
="findNews"
>
<
result
name
="success"
>
/index.jsp
</
result
>
</
action
>
</
package
>
</
struts
>
web.xml:
<?
xmlversion="1.0"encoding="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
filter
>
<
filter-name
>
struts2
</
filter-name
>
<
filter-class
>
org.apache.struts2.dispatcher.FilterDispatcher
</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
struts2
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
<
welcome-file-list
>
<
welcome-file
>
prepare.jsp
</
welcome-file
>
</
welcome-file-list
>
</
web-app
>
前台有两个jsp:
prapare.jsp:
<%
@pagelanguage="java"pageEncoding="GB18030"
%>
<
html
>
<
head
>
<
title
>
MyJSP'index.jsp'startingpage
</
title
>

<
script
type
="text/javascript"
>
window.location="findNewssort.action";
</
script
>
</
head
>
<
body
>
</
body
>
</
html
>
index.jsp:
<%
@pagelanguage="java"pageEncoding="GB18030"
%>

<%
@tagliburi="/struts-tags"prefix="s"
%>
<
html
>
<
head
>
<
title
>
MyJSP'index.jsp'startingpage
</
title
>

<
script
type
="text/javascript"
>
functionfindNews()


{
varsort=document.getElementById("sort");
window.location="findNews.action?sortid="+sort.value;
}
</
script
>
</
head
>
<
body
>
<
select
id
="sort"
name
="sortid"
onchange
="findNews();"
>
<
option
>
请选择
</
option
>
<
s:iterator
value
="#request['sorts']"
id
="sort"
>
<
option
value
="<s:propertyvalue='#sort.nid'/>"
><
s:property
value
="#sort.sort"
/></
option
>
</
s:iterator
>
</
select
>
<
hr
/>
<
s:iterator
value
="#request['news']"
id
="news"
>
<
s:property
value
="#news.title"
/><
br
/>
</
s:iterator
>
</
body
>
</
html
>
好了,一切OK,打开浏览器测试一切正常.
源码可以在我的网盘下载. 下载
有两张表
一张为新闻类别表
有2个字段:
nid(pk) sort
有一张新闻内容表
有三个字段
cid(pk) nid(fk) title content
要求通过下拉列表框的方法选择新闻类别然后显示该类别的新闻标题(在当前页中显示)
我是用Struts2+Hibernate3.2+JPA实现的.
数据库脚本:




























News.java:












































































































































写个测试类先测试一个持久层操作:

















































NewsAction:










































































hibernate.cfg.xml:

















struts.xml:




































前台有两个jsp:
prapare.jsp:
















index.jsp:




































好了,一切OK,打开浏览器测试一切正常.
源码可以在我的网盘下载. 下载