7使用JavaBean封裝數據
3編寫JavaBean(重新運行數據庫腳本 添加了序列)
-----新聞發佈系統
-----用戶表
drop table NEWS_USER;
create table NEWS_USER(
id NUMBER(10, 0) PRIMARY KEY NOT NULL, ---用戶編號
username varchar2(20) NOT NULL, ---用戶名
password varchar2(20) NOT NULL, ---密碼
email varchar2(100) NULL,
usertype number(5,0) NOT NULL ----用戶類型 0:管理員 1:普通用戶
);
INSERT INTO NEWS_USER VALUES(1,'admin','admin','[email protected]',0);
INSERT INTO NEWS_USER VALUES(2,'user','user','[email protected]',1);
INSERT INTO NEWS_USER VALUES(3,'test','test','[email protected]',1);
-----新聞分類表, 有外鍵存在,因此先刪除子表
drop table NEWS_COMMENT;
drop table NEWS_DETAIL;
drop table NEWS_CATEGORY;
create table NEWS_CATEGORY(
id NUMBER(10,0) NOT NULL PRIMARY KEY,
name varchar2(50) NOT NULL,
createdate Date NOT NULL ---創建時間
);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(1,'國內',sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(2,'國際',sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(3,'娛樂',sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(4,'軍事',sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(5,'財經',sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(6,'天氣',sysdate);
-----新聞明細表
create table NEWS_DETAIL(
id number(10,0) NOT NULL PRIMARY KEY, --id
categoryId number(10,0) NOT NULL, --新聞類別id
title varchar2(100) NOT NULL,--新聞標題
summary varchar2(255) NULL, --新聞摘要
content CLOB NULL, --新聞內容
picpath varchar2(255) NULL, --新聞圖片路徑
author varchar2(50) NULL,--發表者
createdate date NULL, --創建時間
modifydate date NULL, --修改時間
Foreign key(categoryId) references NEWS_CATEGORY(id)
);
create sequence SEQ_NEWS
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
INSERT INTO NEWS_DETAIL VALUES(SEQ_NEWS.nextval,2,'尼日利亞一架客機墜毀','尼日利亞一架客機墜毀,傷亡慘重','尼日利亞一架客機墜毀,傷亡慘重,10人重傷','','admin',sysdate,sysdate);
INSERT INTO NEWS_DETAIL VALUES(SEQ_NEWS.nextval,1,'快女資訊快報','快女資訊最先獲得','快女資訊誰能拿到?','','admin',sysdate,sysdate);
INSERT INTO NEWS_DETAIL VALUES(SEQ_NEWS.nextval,1,'85歲老人扭秧歌','成都一羣85歲老人自發扭秧歌','成都一羣85歲老人自發扭秧歌','','admin',sysdate,sysdate);
-----新聞評論表
create table NEWS_COMMENT(
id number(10,0) PRIMARY KEY, --id
newsId number(10,0) NOT NULL, --評論新聞id
content varchar2(2000), --評論內容
author varchar2(50), --評論者
ip varchar2(15), --評論ip
createdate date, --發表時間
Foreign key(newsId) references NEWS_DETAIL(id)
);
SELECT * FROM news_detail;
創建News類
package com.pb.news.entity;
import java.util.Date;
//新聞信息的JavaBean
public class News {
//新聞屬性
private int id;
private int categoryId;
private String title;
private String summary;
private String content;
private String picPath;
private String author;
private Date createDate;
private Date modifyDate;
//setter以及getter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCategoryId() {
return categoryId;
}
public void setCategoryId(int categoryId) {
this.categoryId = categoryId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPicPath() {
return picPath;
}
public void setPicPath(String picPath) {
this.picPath = picPath;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
}
修改NewsDao接口
package com.pb.news.dao;
import java.util.Date;
import java.util.List;
import com.pb.news.entity.News;
public interface NewsDao {
// 查詢新聞信息
public List<News> getNewsList();
// 增加新聞信息
public boolean add(News news) ;
// 刪除新聞信息
public boolean delete(int id) ;
// 修改新聞
public boolean update(News news) ;
}
修改實現類
package com.pb.news.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.pb.news.dao.BaseDao;
import com.pb.news.dao.NewsDao;
import com.pb.news.entity.News;
import com.pb.news.util.ConfigManager;
public class NewsDaoImpl extends BaseDao implements NewsDao {
// 查詢新聞信息
public List<News> getNewsList(){
List<News> newList=new ArrayList<News>();
try {
//(3)獲得Statement對象,執行SQL語句
String sql="select * from news_detail";
Object[] params={};
ResultSet rs=this.executeSQL(sql, params);
//(4)處理執行結果(ResultSet),
while(rs.next()){
int id=rs.getInt("id");
String title=rs.getString("title");
String summary=rs.getString("summary");
String content=rs.getString("content");
String author=rs.getString("author");
Timestamp time=rs.getTimestamp("createdate");
//封裝成新聞信息對象
News news=new News();
news.setId(id);
news.setTitle(title);
news.setSummary(summary);
news.setContent(content);
news.setAuthor(author);
news.setCreateDate(time);
//將新聞對象放進集合中
newList.add(news);
}
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//釋放資源
this.closeResource();
}
return newList;
}
// 增加新聞信息
public boolean add(News news) {
boolean flag=false;
try {
String sql="insert into news_detail(id,categoryId,title,summary,content,createdate) values(SEQ_NEWS.nextval,?,?,?,?,?)";
Object[] params={news.getCategoryId(),news.getTitle(),news.getSummary(),news.getContent(), news.getCreateDate()};
int i=this.executeUpdate(sql, params);
//(4)處理執行結果
if(i>0){
System.out.println("插入新聞成功!");
}
flag=true;
}finally{
//釋放資源
this.closeResource();
}
return flag;
}
// 刪除新聞信息
public boolean delete(int id) {
boolean flag=false;
try {
String sql = "delete from news_Detail where id=?";
Object[] params={id};
int i=this.executeUpdate(sql, params);
//(4)處理執行結果
if(i>0){
System.out.println("刪除新聞成功!");
}
flag=true;
} finally {
//釋放資源
this.closeResource();
}
return flag;
}
// 修改新聞
public boolean update(News news) {
boolean flag=false;
try {
String sql = "update News_detail set categoryId=? , title=?, summary=? , content=?, picpath=?"
+",author=? ,modifydate=? where id=?";
Object[] params={news.getCategoryId(),news.getTitle(),news.getSummary(),news.getContent(),news.getPicPath(),news.getAuthor(),news.getModifyDate(),news.getId()};
int i=this.executeUpdate(sql, params);
//(4)處理執行結果
if(i>0){
System.out.println("修改新聞成功!");
}
flag=true;
} finally {
//釋放資源
this.closeResource();
}
return flag;
}
//測試
public static void main(String[] args) {
NewsDaoImpl newsDao=new NewsDaoImpl();
/*newsDao.add(3, 1, "快女選秀快訊", "快女比賽正進入白熱化", "她、她、她,誰是你心中的快女冠軍?",
new Date());*/
//newsDao.update(3, "快女選秀快訊速遞");
//newsDao.delete(3);
List<News> newsList=newsDao.getNewsList();
for(News news:newsList){
System.out.println(news.getId()+"\t"+news.getTitle()+"\t"+news.getSummary()+"\t"+news.getContent()+"\t"+news.getAuthor()+"\t"+news.getCreateDate());
}
}
}
4編寫service(分層的思想)
編寫NewsService接口
package com.pb.news.service;
import java.util.List;
import com.pb.news.entity.News;
public interface NewsService {
// 更新選擇的新聞
public boolean updateNews(News news);
// 添加新聞
public boolean addNews(News news);
// 刪除新聞
public boolean deleteNews(int id);
//查詢新聞信息
public List<News> getNewsList();
}
編寫實現類
NewsServiceImpl
package com.pb.news.service.impl;
import java.util.List;
import com.pb.news.dao.NewsDao;
import com.pb.news.entity.News;
import com.pb.news.service.NewsService;
public class NewsServiceImpl implements NewsService {
private NewsDao newsDao;
public NewsDao getNewsDao() {
return newsDao;
}
public void setNewsDao(NewsDao newsDao) {
this.newsDao = newsDao;
}
@Override
public boolean updateNews(News news) {
return newsDao.update(news);
}
@Override
public boolean addNews(News news) {
// TODO Auto-generated method stub
return newsDao.add(news);
}
@Override
public boolean deleteNews(int id) {
// TODO Auto-generated method stub
return newsDao.delete(id);
}
@Override
public List<News> getNewsList() {
// TODO Auto-generated method stub
return newsDao.getNewsList();
}
}
5新聞列表顯示頁面(各行變色、多態的使用)
<tbody>
<%
NewsServiceImpl newsService=new NewsServiceImpl();
NewsDao newsDao=new NewsDaoImpl();
newsService.setNewsDao(newsDao);
List<News> newsList=newsService.getNewsList();
//新聞行數
int i=0;
for(News news:newsList){
i++;
%>
<tr <% if(i%2==0){%>class="admin-list-td-h2"<%} %>>
<td><a href='adminNewsView.jsp?id=3'><%=news.getTitle() %></a></td>
<td><%=news.getAuthor() %></td>
<td><%=news.getCreateDate() %></td>
<td><a href='adminNewsCreate.jsp?id=3'>修改</a>
<a href="javascript:if(confirm('確認是否刪除此新聞?')) location='adminNewsDel.jsp?id=3'">刪除</a>
</td>
</tr>
<%} %>
</tbody>
6jsp:useBean的使用(放在head裏面,也可以放在其它頁面裏進行導入)
<jsp:useBean id="newsService" class="com.pb.news.service.impl.NewsServiceImpl" scope="page"/>
<jsp:useBean id="newsDao" class="com.pb.news.dao.impl.NewsDaoImpl" scope="page"/>
<jsp:setProperty property="newsDao" name="newsService" value="<%=newsDao %>"/>
代替
//NewsServiceImpl newsService=new NewsServiceImpl();
//NewsDao newsDao=new NewsDaoImpl();
//newsService.setNewsDao(newsDao);
7jsp:include的使用(
超鏈接跳轉設置,跳轉到框架
<base target="rightFrame"/>
)<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>無標題文檔</title>
<!-- 讓超鏈接後的頁面在頁面的右下部分顯示 -->
<base target="rightFrame"/>
<link type="text/css" rel="stylesheet" href="../../css/common.css"/>
<style type="text/css">
<!--
-->
</style>
</head>
<body>
<!--頁面頂部-->
<jsp:include page="adminTop.jsp"></jsp:include>
<!--頁面中部-->
<div id="content" class="main-content clearfix">
<jsp:include page="adminSidebar.jsp"></jsp:include>
<jsp:include page="adminRightbar.jsp"></jsp:include>
</div>
<!--頁面底部-->
<jsp:include page="adminBottom.jsp"></jsp:include>
</body>
</html>
rightbar
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<link type="text/css" rel="stylesheet" href="../../css/common.css"/>
<div class="main-content-right">
<iframe name=rightFrame style="WIDTH: 100%; HEIGHT: 800px" src="newsDetailList.jsp"
frameborder=0>
</iframe>
</div>
8兩種頁面包含的區別
靜態包含先包含後執行
抽出common.jsp
<link type="text/css" rel="stylesheet" href="../../css/common.css"/>
<jsp:useBean id="newsDao" class="com.pb.news.dao.impl.NewsDaoImpl" scope="page"/>
<jsp:useBean id="newsService" class="com.pb.news.service.impl.NewsServiceImpl" scope="page"/>
<jsp:setProperty property="newsDao" name="newsService" value="<%=newsDao%>"/>
使用靜態包含到NewsDetailList.jsp
<%@page import="com.pb.news.entity.News"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@include file="../common/common.jsp" %>
<script type="text/javascript">
<!--
function addNews(){
window.location="newsDetailCreateSimple.jsp";
}
//-->
</script>
動態包含在7裏面有,先執行後包含9jsp:forward的使用
添加新聞後提交給doadd.jsp
<%@page import="java.util.Date"%>
<%@page import="com.pb.news.entity.News"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<%@include file="../common/common.jsp" %>
<body>
<%
//接收增加的新聞信息,並調用後臺方法,將新聞信息插入數據庫
request.setCharacterEncoding("utf-8");
int categoryId=Integer.parseInt(request.getParameter("categoryId")); //新聞類別
String title=request.getParameter("title"); //新聞標題
String author=request.getParameter("author"); //新聞作者
String summary=request.getParameter("summary"); //新聞摘要
String content=request.getParameter("newscontent"); //新聞內容
//將新聞信息封裝爲一個新聞對象
News news =new News();
news.setCategoryId(categoryId);
news.setTitle(title);
news.setAuthor(author);
news.setSummary(summary);
news.setContent(content);
news.setCreateDate(new Date());
//調用後臺方法,將新聞信息插入數據庫
boolean flag=newsService.addNews(news);
if(flag){
%>
<jsp:forward page="newsDetailList.jsp"/>
<%
//request.getRequestDispatcher("newsDetailList.jsp").forward(request, response);
}
%>
</body>
</html>