对jsp的一个小结(4)使用JavaBean封装数据

来源:互联网 发布:淘宝千里眼是免费得吗 编辑:程序博客网 时间:2024/05/14 19:35

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,    --idcategoryId       number(10,0)    NOT NULL,                 --新闻类别idtitle      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_NEWSminvalue 1maxvalue 999999999999999999start with 1increment by 1cache 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,            --idnewsId           number(10,0)    NOT NULL,               --评论新闻idcontent          varchar2(2000),                         --评论内容author           varchar2(50),                          --评论者ip               varchar2(15),                          --评论ipcreatedate       date,                                  --发表时间Foreign key(newsId) references NEWS_DETAIL(id));SELECT * FROM news_detail;

创建News类

package com.pb.news.entity;import java.util.Date;//新闻信息的JavaBeanpublic 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以及getterpublic 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 blocke.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;}@Overridepublic boolean updateNews(News news) {return newsDao.update(news);}@Overridepublic boolean addNews(News news) {// TODO Auto-generated method stubreturn newsDao.add(news);}@Overridepublic boolean deleteNews(int id) {// TODO Auto-generated method stub return newsDao.delete(id);}@Overridepublic List<News> getNewsList() {// TODO Auto-generated method stubreturn 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>



0 0
原创粉丝点击