上一篇介绍了JAVA_WEB项目之新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现。
下面实现前台首页,新闻分类(体育新闻,科技新闻等),新闻列表分页。
1、首页的jsp代码;
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>新闻主页</title>
</head>
<body align="center">
<div align="center">
<%@include file="head.jsp"%>
<table style="border:6px solid #ccc" border="1px" cellspacing="0px" width="1200px" height="600px">
<tr>
<td><br/><br/><br/><br/>
<div style="width:300px"><img src="images/z_title.png"/></div><br/>
<iframe frameborder="0" width="100%" height="100%" scrolling="no" name="all" src="${pageContext.request.contextPath}/FrontNewsAction?action=findAllNews" ></iframe></td>
<td>
<br/><br/><br/><br/>
<div style="width:300px"><img src="images/k_title.png"/></div><br/>
<iframe frameborder="0" width="100%" height="100%" scrolling="no" name="technology" src="${pageContext.request.contextPath}/FrontNewsAction?action=findAllNews&category_id=1"></iframe></td>
</tr>
<tr>
<td>
<br/><br/><br/><br/>
<div style="width:300px"><img src="images/t_title.png"/></div><br/>
<iframe frameborder="0" width="100%" height="100%" scrolling="no" name="popular" src="${pageContext.request.contextPath}/FrontNewsAction?action=findAllNews&category_id=2"></iframe></td>
<td>
<br/><br/><br/><br/>
<div style="width:300px"><img src="images/y_title.png"/></div><br/>
<iframe frameborder="0" width="100%" height="100%" scrolling="no" name="sports" src="${pageContext.request.contextPath}/FrontNewsAction?action=findAllNews&category_id=3" ></iframe></td>
</tr>
</table>
</div>
</body>
</html>
2、新闻分类,新闻分页的实现:
package com.news.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.news.domain.News;
import com.news.domain.PageBean;
import com.news.domain.QueryInfo;
import com.news.service.FrontNewsService;
import com.news.utils.WebUtils;
public class FrontNewsAction extends BaseAction{
public void findAllNews(HttpServletRequest request,HttpServletResponse response) throws Exception{
try{
//synchronized (this) {
QueryInfo info=WebUtils.request2bean(request, QueryInfo.class);
FrontNewsService service=new FrontNewsService();
String cid=request.getParameter("category_id");
int category_id=0;
if(cid!=null){
category_id=Integer.parseInt(cid);
}
PageBean bean= service.pageQuery(info,category_id);
System.out.println("大小是:"+bean.getList().size());
String jsp_Page="/news_jsps/News_All.jsp";
System.out.println(category_id);
if(category_id==1){
jsp_Page="/news_jsps/News_Technology.jsp";
}else if(category_id==2){
jsp_Page="/news_jsps/News_Sports.jsp";
}else if(category_id==3){
jsp_Page="/news_jsps/News_Popular.jsp";
}
request.setAttribute("pagebean", bean);
request.getRequestDispatcher(jsp_Page).forward(request, response);
//}
}catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", "查看新闻列表失败!!");
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
public void findNewsById(HttpServletRequest request,HttpServletResponse response) throws Exception{
try{
String news_id=request.getParameter("news_id");
FrontNewsService service=new FrontNewsService();
News news= service.findNewsById(Integer.parseInt(news_id));
request.setAttribute("news", news);
request.getRequestDispatcher("/news_jsps/News_Information.jsp").forward(request, response);
}catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", "查看新闻失败!!");
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
}
service层:
package com.news.service;
import com.news.dao.FrontNewsDao;
import com.news.domain.News;
import com.news.domain.PageBean;
import com.news.domain.QueryInfo;
import com.news.domain.QueryResult;
public class FrontNewsService {
FrontNewsDao dao=new FrontNewsDao();
public PageBean pageQuery(QueryInfo queryInfo,int category_id) throws Exception
{
//调用dao获得页面数据
QueryResult qr= dao.pageQuery(queryInfo.getStartindex(), queryInfo.getPagesize(),category_id);
//把获得页面数据封装到pagebean里面
PageBean pagebean=new PageBean();
pagebean.setList(qr.getList());
pagebean.setTotalrecord(qr.getTotalrecord());
pagebean.setCurrentpage(queryInfo.getCurrentpage());
pagebean.setPagesize(queryInfo.getPagesize());
return pagebean;
}
public News findNewsById(int news_id) throws Exception{
return dao.findNewsById(news_id);
}
}
dao层:
package com.news.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import org.apache.commons.dbutils.DbUtils;
import com.news.domain.Category;
import com.news.domain.News;
import com.news.domain.QueryResult;
import com.news.utils.JdbcUtils;
public class FrontNewsDao {
public QueryResult pageQuery(int startindex,int pagesize,int category_id) throws Exception
{
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
QueryResult qr=new QueryResult();
try {
conn=JdbcUtils.getConnection();
String sql="select * from tb_news order by id desc limit ?,?";
System.out.println("分类id:"+category_id);
if(category_id>0){
sql="select * from tb_news where category_id=? order by id desc limit ?,? ";
}
st=conn.prepareStatement(sql);
if(category_id>0){
st.setInt(1,category_id );
st.setInt(2, startindex);
st.setInt(3, pagesize);
}else{
st.setInt(1, startindex);
st.setInt(2, pagesize);
}
rs=st.executeQuery();
List list=new LinkedList();
while(rs.next())
{
News n=new News();
n.setTitle(rs.getString("title"));
n.setContent(rs.getString("content"));
n.setNews_id(rs.getInt("id"));
n.setDate(rs.getDate("date"));
n.setCategory(new Category(rs.getInt("category_id"),null));
list.add(n);
}
if(category_id>0){
sql="select count(*) from tb_news where category_id=?";
}else{
sql="select count(*) from tb_news";
}
st=conn.prepareStatement(sql);
if(category_id>0){
st.setInt(1,category_id );
}
rs=st.executeQuery();
if(rs.next())
{
qr.setTotalrecord(rs.getInt(1));
}
qr.setList(list);
return qr;
} catch (Exception e) {
// TODO Auto-generated catch block
throw new Exception(e);
}finally{
DbUtils.closeQuietly(conn, st, rs);
}
}
public News findNewsById(int news_id) throws Exception{
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
conn=JdbcUtils.getConnection();
String sql="select * from tb_news where id=?";
st=conn.prepareStatement(sql);
st.setInt(1, news_id);
rs=st.executeQuery();
News n=new News();
if(rs.next())
{
n.setTitle(rs.getString("title"));
n.setContent(rs.getString("content"));
n.setNews_id(rs.getInt("id"));
n.setDate(rs.getDate("date"));
n.setCategory(new Category(rs.getInt("category_id"),null));
}
return n;
} catch (Exception e) {
// TODO Auto-generated catch block
throw new Exception(e);
}finally{
DbUtils.closeQuietly(conn, st, rs);
}
}
}
工具类:
package com.news.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
public class JdbcUtils implements ServletContextListener{
private static ComboPooledDataSource ds=null;
static{
try{
ds=new ComboPooledDataSource();
}catch (Exception e) {
// TODO: handle exception
throw new ExceptionInInitializerError(e);
}
}
public static DataSource getDateSource(){
return ds;
}
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
public static void release(Connection conn,Statement st,ResultSet rs)
{
if(rs!=null)
{
try{
rs.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
rs=null;
}
if(st!=null)
{
try{
st.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
st=null;
}
if(conn!=null){
try{
conn.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
conn=null;
}
}
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("���");
try
{
DataSources.destroy(ds);
}
catch (Exception e)
{
e.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
}
系统的主要源码就贴到这,接下来提供源码下载
整个项目的源码下载