对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','admin@bdqn.cn',0);
INSERT INTO NEWS_USER VALUES(2,'user','user','user@bdqn.cn',1);
INSERT INTO NEWS_USER VALUES(3,'test','test','test@bdqn.cn',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>



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值