对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
- 对jsp的一个小结(4)使用JavaBean封装数据
- JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
- JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
- 使用javaBean封装数据
- JSP中使用JavaBean的一个实例
- JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用(转)
- 对jsp的一个小结(1)搭建web应用环境、用jsp实现输出、实现数据传递
- 对jsp的一个小结(3)使用JDBC操作数据库
- jsp系列学习:jsp与javaBean的使用,用javaBean来封装
- 对jsp的一个小结(2)session、cookie、application
- 一个对数据库进行操作的JavaBean(可用于任何数据库和JSP页面中)
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- shell中if的用法
- [NHibernate]一对多关系(级联删除,级联添加)
- AFNetworking 子类化封装
- spring mvc Controller中使用@Value无法获取属性值
- 165-Stamps【回溯】
- 对jsp的一个小结(4)使用JavaBean封装数据
- 【iOS开发】往Xcode中导入图片注意事项
- 动态分配多维数组
- maven详解
- 用Eclipse生成keystore签名
- list 根据相同字段合并数据
- Mybatis在我的工作中使用
- vc++ 操作COM
- 面试遇到的问题