ee_15_mvc_db_page----demo---bai

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ee_15_mvc_db_page----demo---bai相关的知识,希望对你有一定的参考价值。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP ‘index.jsp‘ starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
        <form action="BookServlet?op=add" method="post">
  书名:   <input name="bname"/><br/>
  价格: <input name="price"/> <br/>
作者: <input name="author"/> <br/>
页码: <input name="pagecount"/> <br/>  
     <input type="submit" value="添加"/>
    </form>
  </body>
</html>

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP ‘update.jsp‘ starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
   <form action="BookServlet?op=update" method="post">
   编号: <input name="bid" value="${book.bid }" readonly="readonly"/> <br/>
  书名:   <input name="bname" value="${book.bname }"/><br/>
  价格: <input name="price" value="${book.price }"/> <br/>
作者: <input name="author" value="${book.author }"/> <br/>
页码: <input name="pagecount" value="${book.pagecount }"/> <br/>
  <input type="submit" value="提交"> 
   </form>
  </body>
</html>

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP ‘showlist.jsp‘ starting page</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

	</head>

	<body onload="showok(${canshow},‘${msg}‘)">
	   <script>
	   function showok(canshow,msg)
	   {
	   		if(canshow)
	   			alert(msg);
	   }
	   function confirm_delete(bid)
	   {
	   		if(window.confirm("确定删除编号为"+bid+"的书吗?"))
	   		{
	   			window.location.href = "BookServlet?op=delete&bid="+bid;
	   		}
	   }
	   </script>
		<table border="1">
			<tr>
				<th>
					编号
				</th>
				<th>
					书名
				</th>
				<th>
					价格
				</th>
				<th>
					操作
				</th>
			</tr>
		<c:set var="i" value="0"/>
	     <c:forEach items="${list}" var="book">
	     	<c:set var="i" value="${i+1}"/>
			<tr>
				<td>
					${book.bid }
				</td>
				<td>
					${book.bname }
				</td>
				<td>
					${book.price }
				</td>
				<td>
					<a href="javascript:confirm_delete(${book.bid})">删除</a>
					 
					<a href="BookServlet?op=toupdate&bid=${book.bid}">修改</a>
				</td>
			</tr>
	
		</c:forEach>
		
		</table>
		一共有${i}本书。
		<br/>
		<a href="add.jsp">重新录入</a>
	</body>
</html>

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP ‘showlist.jsp‘ starting page</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

	</head>

	<body onload="showok(${canshow},‘${msg}‘)">
	   <script>
	   function showok(canshow,msg)
	   {
	   		if(canshow)
	   			alert(msg);
	   }
	   function confirm_delete(bid)
	   {
	   		if(window.confirm("确定删除编号为"+bid+"的书吗?"))
	   		{
	   			window.location.href = "BookServlet?op=delete&bid="+bid;
	   		}
	   }
	   </script>
		<table border="1">
			<tr>
				<th>
					编号
				</th>
				<th>
					书名
				</th>
				<th>
					价格
				</th>
				<th>
					操作
				</th>
			</tr>
		<c:set var="i" value="0"/>
	     <c:forEach items="${pm.list}" var="book">
	     	<c:set var="i" value="${i+1}"/>
			<tr>
				<td>
					${book.bid }
				</td>
				<td>
					${book.bname }
				</td>
				<td>
					${book.price }
				</td>
				<td>
					<a href="javascript:confirm_delete(${book.bid})">删除</a>
					 
					<a href="BookServlet?op=toupdate&bid=${book.bid}">修改</a>
				</td>
			</tr>
	
		</c:forEach>
		
		</table>
		一共有${i}本书。		
		<br/>
		<a href="BookServlet?op=findbypage&pageno=1&pagesize=5">首页</a>		
		<a href="BookServlet?op=findbypage&pageno=${pm.pageno+1}&pagesize=5">下一页</a>
		<a href="BookServlet?op=findbypage&pageno=${pm.pageno-1}&pagesize=5">上一页</a>
		<a href="BookServlet?op=findbypage&pageno=${pm.totalpage}&pagesize=5">末页</a>
		<br/>
		<a href="add.jsp">重新录入</a>
	</body>
</html>

  

package com.etc.model.entity;

public class Book 
{
	private int bid;
	private String bname;
	private float price;
	private String author; //作者
	private int pagecount; //页码
	
	
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public int getPagecount() {
		return pagecount;
	}
	public void setPagecount(int pagecount) {
		this.pagecount = pagecount;
	}
	public int getBid() {
		return bid;
	}
	public void setBid(int bid) {
		this.bid = bid;
	}
	public String getBname() {
		return bname;
	}
	public void setBname(String bname) {
		this.bname = bname;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	public Book(int bid, String bname, float price, String author, int pagecount) {
		super();
		this.bid = bid;
		this.bname = bname;
		this.price = price;
		this.author = author;
		this.pagecount = pagecount;
	}
	
}

  

package com.etc.model.entity;

import java.util.ArrayList;
import java.util.List;

//分页的数据。对于实体对象的分页封装,必须新增分页的信息
//T为泛型参数
public class PageModel<T>   
{
	//分页的数据,用数组来保存!
	private List<T> list= new ArrayList<T>();
	
	//2个重要的分页参数
	private int pagesize; //每页有几条
	private int pageno; //第几页,从1开始
	
	//3 总记录数
	private int totalcount;
	
	//4 总页码数
	private int totalpage;

	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

	public int getPagesize() {
		return pagesize;
	}

	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}

	public int getPageno() {
		return pageno;
	}

	public void setPageno(int pageno) {
		this.pageno = pageno;
	}

	public int getTotalcount() {
		
		return totalcount;
	}

	public void setTotalcount(int totalcount) {
		this.totalcount = totalcount;
	}

	//根据pagesize和总记录数,自动算出总页面数
	public int  Totalpage() 
	{
		if(totalcount%pagesize==0) //整除
			totalpage = totalcount/pagesize;
		else //不整除
			totalpage = totalcount/pagesize+1;
		return totalpage;
	}
}

  

package com.etc.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.etc.model.biz.BookBiz;
import com.etc.model.entity.Book;
import com.etc.model.entity.PageModel;

public class BookServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public BookServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request,response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	//所有mvc请求的统一入口
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1 对请求参数进行解码
		request.setCharacterEncoding("utf-8");
		//2 对响应进行编码(偶尔也需要用servlet直接响应html-出错了)
		response.setContentType("text/html;charset=utf-8");
		//3 读取op参数
		String op = request.getParameter("op");
				
		//4 根据op的不同处理具体的不同请求
		if("add".equals(op))
		{
			add(request,response); //添加
		}
		else if("findall".equals(op))
		{
			findall(request,response);//查询全部书
		}
		else if("delete".equals(op))
		{
			delete(request,response);//删除书
		}
		else if("toupdate".equals(op))
		{
			toupdate(request,response);//进入修改页面
		}
		else if("update".equals(op))
		{
			update(request,response);//执行修改
		}
		else if("findbypage".equals(op))  //新增,执行分页查询
		{
			findByPage(request,response);
		}
	}

	private void update(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException
	{
		
		//1 读取参数
		int bid = Integer.parseInt(request.getParameter("bid"));
		String bname = request.getParameter("bname");
		float price = Float.parseFloat(request.getParameter("price"));
		String author = request.getParameter("author");
		int pagecount = Integer.parseInt(request.getParameter("pagecount"));
		
		//2 调用模型
		Book book = new Book(bid, bname, price, author, pagecount);
		BookBiz biz = new BookBiz();
		if(biz.update(book))
		{

			//3 派发视图
			//通过本地js实现信息提示并重新发起请求
			String html = "<html><body><script>alert(‘修改成功!‘);window.location.href=‘BookServlet?op=findall‘;</script></body></html>";
			response.getWriter().print(html);
		}
		else
		{
			String html = "<html><body>修改失败!<a href=‘history.back()‘>返回</a></body></html>";
			response.getWriter().print(html);
		}
	}

	//进入修改页面
	private void toupdate(HttpServletRequest request,
			HttpServletResponse response)
	throws ServletException, IOException
	{
		//1 读取请求参数
		int bid  = Integer.parseInt(request.getParameter("bid"));		
		//2 调用模型
		BookBiz biz = new BookBiz();
		Book book = biz.findByBid(bid);
		//3 派发视图
		//在作用域保存数据
		request.setAttribute("book", book);
		//转发
		request.getRequestDispatcher("update.jsp").forward(request, response);		
	}

	// 执行删除
	private void delete(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException
	{
		//1 读取请求参数
		int bid  = Integer.parseInt(request.getParameter("bid"));
		//2 调用模型
		BookBiz biz = new BookBiz();
		if(biz.delete(bid))
		{		
			//3 派发视图
			//通过本地js实现信息提示并重新发起请求
			String html = "<html><body><script>alert(‘删除成功!‘);window.location.href=‘BookServlet?op=findall‘;</script></body></html>";
			response.getWriter().print(html);
		}
		else
		{
			String html = "<html><body>删除失败!<a href=‘history.back()‘>返回</a></body></html>";
			response.getWriter().print(html);
		}
		
	}

	//查询全部
	private void findall(HttpServletRequest request,
			HttpServletResponse response)
	throws ServletException, IOException
	{
		//1 读取请求参数,无需
		//2 调用模型
		BookBiz biz = new BookBiz();
		List<Book> list = biz.findAll();
		
		//3 派发视图
		if(list!=null) //查询成功
		{
			//作用域保存数据
			request.setAttribute("list", list);
			request.setAttribute("canshow", false);
			request.setAttribute("msg", "");
			request.getRequestDispatcher("showlist.jsp").forward(request, response);
		}
		else //失败
		{
			String html = "<html><body>查询失败!<a href=‘history.back()‘>返回</a></body></html>";
			response.getWriter().print(html);
		}
	}
	
	//查询指定页码
	private void findByPage(HttpServletRequest request,
			HttpServletResponse response)
	throws ServletException, IOException
	{
		//1 读取请求参数,
		int pageno = Integer.parseInt(request.getParameter("pageno"));
		int pagesize = Integer.parseInt(request.getParameter("pagesize"));
		//2 调用模型
		BookBiz biz = new BookBiz();
		PageModel<Book> pm = biz.findByPage(pageno,pagesize);
		
		//3 派发视图
		if(pm!=null) //查询成功
		{
			//作用域保存数据
			request.setAttribute("pm", pm);
			request.setAttribute("canshow", false);
			request.setAttribute("msg", "");
			request.getRequestDispatcher("showlist.jsp").forward(request, response);
		}
		else //失败
		{
			String html = "<html><body>查询失败!<a href=‘history.back()‘>返回</a></body></html>";
			response.getWriter().print(html);
		}
	}
	

	//处理add的请求
	private void add(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException
	{
		//1 读取请求参数		
		String bname = request.getParameter("bname");
		float price = Float.parseFloat(request.getParameter("price"));
		String author = request.getParameter("author");
		int pagecount = Integer.parseInt(request.getParameter("pagecount"));
		
		//2 调用模型
		//创建模型-实体bean
		Book book = new Book(-1, bname, price,author,pagecount);
		BookBiz biz = new BookBiz();
		if(biz.add(book)) //成功,那么???
		{
			//3 派发视图	
			//转发到"查询全部"的请求命令
			request.getRequestDispatcher("BookServlet?op=findall").forward(request, response);
			
		}
		else //失败
		{
			String html = "<html><body>添加失败!<a href=‘javascript:history.back()‘>返回</a></body></html>";
			response.getWriter().print(html);
		}
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

  

package com.etc.model.biz;

import java.util.List;

import com.etc.model.dao.BookDao;
import com.etc.model.entity.Book;
import com.etc.model.entity.PageModel;
//业务bean,实现具体的业务逻辑
public class BookBiz 
{
	private BookDao dao = new BookDao();
	//添加书,返回是否成功
	public boolean add(Book book) //添加书,返回是否添加成功!
	{
		//靠dao对象来实现具体的数据库操作		
		return dao.add(book);
	}
	
	//查询全部的数
	public List<Book> findAll()
	{
		//靠dao对象来实现具体的数据库操作		
		return dao.findAll();
	}
	//删除书,返回是否成功
	public boolean delete(int bid) //删除书,返回是否添加成功!
	{
		//靠dao对象来实现具体的数据库操作		
		return dao.delete(bid);
	}
	//查询指定 编号的书,用于进入修改页面
	public Book findByBid(int bid)
	{
		return dao.findByBid(bid);
	}
	
	//修改书,返回是否成功
	public boolean update(Book book) //修改书,返回是否添加成功!
	{
		//靠dao对象来实现具体的数据库操作		
		return dao.update(book);
	}
	//查找第n页的书
	public PageModel<Book> findByPage(int pageno,int pagesize)
	{
		return dao.findByPage(pageno, pagesize);
	}	
}

  

package com.etc.model.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.etc.model.entity.Book;
import com.etc.model.entity.PageModel;
import com.etc.utils.JDBCUtil;

//实现所有数据库的操作
public class BookDao {
	//实现书的添加!返回是否成功!
	public  boolean add(Book book)
	{
		//通过jdbc工具类来实现添加
		String sql = "insert into book(bname,price,author,pagecount) "
			+" values(?,?,?,?)";
		String[] ps = {book.getBname(),book.getPrice()+"",book.getAuthor(),book.getPagecount()+""};
		return JDBCUtil.doUpdate(sql, ps)==1;
	}
	//实现书的删除!返回是否成功!
	public  boolean delete(int bid)
	{
		//通过jdbc工具类来实现添加
		String sql = "delete from book where bid=?";
		String[] ps = {bid+""};
		return JDBCUtil.doUpdate(sql, ps)==1;
	}
	
	//实现书的全部查询
	public List<Book> findAll()
	{
		List<Book> list = new ArrayList<Book>();
		
		String sql = "select * from book";		
		ResultSet rs = JDBCUtil.doQuery(sql);
		try {
			//依次遍历记录
			while (rs.next()) {
				//读取每条记录的字段值
				int bid = rs.getInt("bid");
				String bname = rs.getString("bname");
				float price = rs.getFloat("price");
				String author = rs.getString("author");
				int pagecount = rs.getInt("pagecount");
				//创建对象并添加到数组中
				list.add(new Book(bid, bname, price, author, pagecount));
			}
		} catch (Exception e) {
			return null;
		}
		finally
		{
			JDBCUtil.close(rs);
		}
		return list;
	}
	//实现指定 编号的书的查询
	public Book findByBid(int bid)
	{
		Book book = null;
		
		String sql = "select * from book where bid = ?";
		String[] ps = {bid+""};
		ResultSet rs = JDBCUtil.doQuery(sql,ps);
		try {
			//依次遍历记录
			if (rs.next()) {
				//读取每条记录的字段值				
				String bname = rs.getString("bname");
				float price = rs.getFloat("price");
				String author = rs.getString("author");
				int pagecount = rs.getInt("pagecount");
				//创建对象并添加到数组中
				book = new Book(bid, bname, price, author, pagecount);
			}
			else //找不到,返回空
				return null;
		} catch (Exception e) {
			return null;
		}
		finally
		{
			JDBCUtil.close(rs);
		}
		return book;
	}
	//实现书的修改!返回是否成功!
	public  boolean update(Book book)
	{
		//通过jdbc工具类来实现添加
		String sql = "update book set bname=?,price=?,author=?,pagecount=? where bid=?";
		String[] ps = {book.getBname(),book.getPrice()+"",book.getAuthor(),book.getPagecount()+"",book.getBid()+""};
		return JDBCUtil.doUpdate(sql, ps)==1;
	}
	//获得书本的总的记录数
	private int getTotalCount()
	{
		String sql = "select count(1) as t from book";
		
		ResultSet rs = JDBCUtil.doQuery(sql);
		try {
			//依次遍历记录
			rs.next();
			return rs.getInt("t"); //返回记录数
		} catch (Exception e) {
			return -1;
		}
		finally
		{
			JDBCUtil.close(rs);
		}
	}
	//实现指定页面数的书的查询
	public PageModel<Book> findByPage(int pageno,int pagesize)
	{
		List<Book> list = new ArrayList<Book>();
		
		String sql = "select * from book limit "+
		pagesize*(pageno-1)+","+pagesize;
		//设置起点和条数		
		ResultSet rs = JDBCUtil.doQuery(sql);
		try {
			//依次遍历记录
			while (rs.next()) {
				//读取每条记录的字段值
				int bid = rs.getInt("bid");
				String bname = rs.getString("bname");
				float price = rs.getFloat("price");
				String author = rs.getString("author");
				int pagecount = rs.getInt("pagecount");
				//创建对象并添加到数组中
				list.add(new Book(bid, bname, price, author, pagecount));
			}
			PageModel<Book> pm = new PageModel<Book>();
			pm.setList(list); //该页装载的记录数
			pm.setPageno(pageno); //页面数
			pm.setPagesize(pagesize); //每页有几条
			int count = getTotalCount();//获得总的记录数
			pm.setTotalcount(count); //总的记录数
			return pm;
		} catch (Exception e) {
			return null;
		}
		finally
		{
			JDBCUtil.close(rs);
		}
	}
	
}

  

以上是关于ee_15_mvc_db_page----demo---bai的主要内容,如果未能解决你的问题,请参考以下文章

EE308FZ LAB_1_2

J2EE作业_拦截器

J2EE_登陆验证

J2EE_登陆验证

linux环境下搭建 j2ee环境

text clusterupdate_39ee37f97ab065a3763ee10b834b3e6e25aae491.log