我的漫漫程序之旅
专注于JavaWeb开发
一道Struts面试题
题目是这样的
有两张表
一张为新闻类别表
有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
{
private
Integer cid;
private
String title;
private
String content;
@Id
@GeneratedValue(strategy
=
GenerationType.AUTO)
public
Integer getCid()
{
return
cid;
}
public
void
setCid(Integer cid)
{
this
.cid
=
cid;
}
public
String getTitle()
{
return
title;
}
public
void
setTitle(String title)
{
this
.title
=
title;
}
public
String getContent()
{
return
content;
}
public
void
setContent(String content)
{
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
{
private
Integer nid;
private
String sort;
private
List
<
News
>
news
=
new
ArrayList
<
News
>
();
@OneToMany
@JoinColumn(name
=
"
nid
"
)
@LazyCollection(LazyCollectionOption.FALSE)
public
List
<
News
>
getNews()
{
return
news;
}
public
void
setNews(List
<
News
>
news)
{
this
.news
=
news;
}
@Id
@GeneratedValue(strategy
=
GenerationType.AUTO)
public
Integer getNid()
{
return
nid;
}
public
void
setNid(Integer nid)
{
this
.nid
=
nid;
}
public
String getSort()
{
return
sort;
}
public
void
setSort(String sort)
{
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
{
private
Session session ;
@Before
public
void
setUp()
{
session
=
new
AnnotationConfiguration().configure().buildSessionFactory().openSession();
}
@After
public
void
tearDown()
{
session.close();
}
@SuppressWarnings(
"
unchecked
"
)
@org.junit.Test
public
void
testFind()
{
@SuppressWarnings(
"
unused
"
)
//
List<Newssort> newssort = session.createCriteria(Newssort.class).list();
Newssort newssort
=
(Newssort) session.load(Newssort.
class
,
2
);
for
(Iterator
<
News
>
i
=
newssort.getNews().iterator();i .hasNext();)
{
String title
=
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
{
private
Session session;
private
Integer sortid;
public
Integer getSortid()
{
return
sortid;
}
public
void
setSortid(Integer sortid)
{
this
.sortid
=
sortid;
}
public
void
init()
{
session
=
new
AnnotationConfiguration().configure()
.buildSessionFactory().openSession();
}
public
String findNewssort()
{
this
.init();
List
<
Newssort
>
sorts
=
session.createCriteria(Newssort.
class
).list();
Map request
=
(Map) ActionContext.getContext().get(
"
request
"
);
request.put(
"
sorts
"
, sorts);
session.close();
return
SUCCESS;
}
public
String findNews()
{
this
.init();
System.out.println(
"
findNews
"
);
List
<
Newssort
>
sorts
=
session.createCriteria(Newssort.
class
).list();
Newssort newssort
=
(Newssort) session.load(Newssort.
class
, sortid);
List
<
News
>
news
=
newssort.getNews();
Map request
=
(Map) ActionContext.getContext().get(
"
request
"
);
request.put(
"
sorts
"
, sorts);
request.put(
"
news
"
, news);
session.close();
return
SUCCESS;
}
}
hibernate.cfg.xml:
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.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:
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.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:
<?
xml version="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:
<%
@ page language
=
"
java
"
pageEncoding
=
"
GB18030
"
%>
<
html
>
<
head
>
<
title
>
My JSP 'index.jsp' starting page
</
title
>
<
script
type
="text/javascript"
>
window.location
=
"
findNewssort.action
"
;
</
script
>
</
head
>
<
body
>
</
body
>
</
html
>
index.jsp:
<%
@ page language
=
"
java
"
pageEncoding
=
"
GB18030
"
%>
<%
@taglib uri
=
"
/struts-tags
"
prefix
=
"
s
"
%>
<
html
>
<
head
>
<
title
>
My JSP 'index.jsp' starting page
</
title
>
<
script
type
="text/javascript"
>
function
findNews()
{
var
sort
=
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:property value='#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,打开浏览器测试一切正常.
源码可以在我的网盘下载.
下载
posted on 2007-12-08 21:14
々上善若水々
阅读(2481)
评论(0)
编辑
收藏
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-12-08 21:29 编辑过
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
导航