1. 程式人生 > >對jsp的一個小結(4)使用JavaBean封裝資料

對jsp的一個小結(4)使用JavaBean封裝資料

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>


相關推薦

jsp一個小結4使用JavaBean封裝資料

7使用JavaBean封裝資料 3編寫JavaBean(重新執行資料庫指令碼 添加了序列) -----新聞釋出系統 -----使用者表 drop table NEWS_USER; create table NEWS_USER( id NUMB

一個皮卡丘項目小結4

裏的 posit play art 創建 tag bstr dex https 前言 繼續總結過程中學到的新知識,這是第4部分,也是最後一部分。 主要是實現 頁面變速展示的 效果 一、創建button按鈕 1 HTNL結構 <div class="action">

微信小程序小結4 -- 分包加載及小程序間跳轉

項目 devel 目前 圖片 ria 首頁 .com logs path 分包加載 某些情況下,開發者需要將小程序劃分成不同的子包,在構建時打包成不同的分包,用戶在使用時按需進行加載(主要是空間不夠用,哈哈~)。 在構建小程序分包項目時,構建會輸出一個或多個功能的分包,其中

Appium--pageobject實踐4-unittest封裝

前提:已配置好yaml應用初始化引數檔案和log.conf日誌配置檔案 定義配置檔案cap.yaml,包括key和value,具體內容如下: platformName: Android platformVersion: 4.4.2 deviceName: 127.0.0.1:62001

Java學習4:統計一個文件中的英文,中文,數字,其他字符以及字符總數

port let args str reader 文件路徑 要求 cnblogs pub 要求:統計一個文件中的英文,中文,數字,其他字符以及字符總數(此隨筆以txt文件為例) import java.io.BufferedReader; import java.io.F

轉每天一個linux命令4:mkdir命令

指定位置 cnblogs 同名 parent --help pos uri 不存在 必須 linux mkdir 命令用來創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。 1.命令格式: mkdir [選

PYTHON多線程--4QUEUE

open any python多線程 list fbx taf svm vda python OPENSWANI%E6%96%B9%E6%89%93%E5%8D%B0 http://mp3.baidu.com/songlist/502720018?9oo6=C67F h

Mysql加鎖過程詳解4-select for update/lock in share mode 事務並發性影響

per inno targe 允許 evel transacti 修改 not null warn select for update/lock in share mode 對事務並發性影響 事務並發性理解 事務並發性,粗略的理解就是單位時間內能夠執行的事務數量,常見的單

我的第一個python web開發框架4——數據庫結構設計與創建

數據結構 描述 分析器 設置 一個 由於 logs 記錄 開發框架   小白做好前端html設計後,馬上開始進入數據庫結構設計步驟。      在開始之前,小白回憶了一下老大在公司裏培訓時講過的數據庫設計解說:   對於初學者來說,很多拿到原型時不知道怎麽設計數據表結

知乎上的一個自制力的回答

做什麽 大眾 你知道 掌握 驅動 學生 而不是 自己 quest 原文鏈接:https://www.zhihu.com/question/38554523 作者:鳳紅邪鏈接:https://www.zhihu.com/question/38554523/answer/7

一個皮卡丘項目小結1

ref pre 偽元素 一個 cnblogs orm solid tps height 前言 今天開始做一個 畫皮卡丘的項目,所以總結一下過程中學到的一些新知識。 一 設置盒模型 設置盒模型為 IE盒模型: *{ margin: 0; padding: 0; b

一個皮卡丘項目小結2

弧度 order 設置 簡寫形式 tps tom 傾斜 red 居中 前言 繼續總結過程中學到的新知識,這是第2部分。 一 畫一個傾斜的 弧度 .upperLip{ width: 80px; /*設置上嘴唇的寬高*/ height: 20

Hadoop2.7.2文檔的學習-Yarn部分4Yarn Application

mat app nbsp desc pro .org 節點 option 對象 Writing YARN Applications Link:http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/

Java基礎——面向4

無法 code 由於 自己的 自己 通過 java tro 子類構造方法 第一章 構造方法 對象創建時要執行的方法。既然是對象創建時要執行的方法,那麽只要在new對象時,知道其執行的構造方法是什麽,就可以在執行這個方法的時候給對象進行屬性賦值。 構造方法的格式: 修飾符

Python學習筆記4:容器、叠代象、叠代器、生成器、生成器表達式

iter 有一種 ref function 但是 tool 數列 edt 叠代器類型 在了解Python的數據結構時,容器(container)、可叠代對象(iterable)、叠代器(iterator)、生成器(generator)、列表/集合/字典推導式(list,se

scala成長之路4compaion object——伴生象的使用

面向 aio tostring 直接 style rri spa eat 我們 雖然java一直聲稱自己是完全面向對象的語言,但一直以來都被很多人所質疑,其中java的靜態成員函數就是主要的“罪魁禍首”。由於java中保留了靜態方法的調用,導致其編程模式依然有過程式編程的可

C++C語言的拓展4—— 函數重載

over 及其 尋求 所有 print har nbsp erro erl   函數重載(Function Overload):用同一個函數名定義不同的函數,當函數名和不同的參數搭配時函數的含義不同。 1、重載規則 (1)函數名相同; (2)參數個數不同,參數的類型不同,參

一個月刷完機器學習筆試題300題4

第四天: 1、下列時間序列模型中,哪一個模型可以較好地擬合波動性的分析和預測。 A AR模型 B MA模型 C ARMA模型 D GARCH模型 解析:AR auto regressive model AR模型是一種線性預測 MA模型(moving average model)滑動平均模

javaweb學習筆記十四JSP4

目錄   製作高仿的JSTL標籤庫之核心標籤庫 《1》xiaohua.tld檔案: 《2》依附的各個類: 《3》imitate.core.jsp檔案: 《4》瀏覽器檢視:   製作高仿的JSTL標籤庫之核心標籤庫 通過自定義標籤,製

朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝一個函式2

  朱有鵬C語言高階---4.9.2--單鏈表--訪問單鏈表中各個節點的資料(1) 朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2)     原始碼:4.9.3danlianbiao2.c #include &