一.准备

没什么好说的,直接上代码。。。。

下面是web.xml


  <servlet>
  	<servlet-name>list_user</servlet-name>
  	<servlet-class>servlet.UserList</servlet-class>
  </servlet>
  <display-name>servlet_2</display-name>
  <servlet-mapping>
  	<servlet-name>list_user</servlet-name>
  	<url-pattern>/userList</url-pattern>
  </servlet-mapping>

文档结构如下

二.代码实现

package bean;

import java.util.List;

public class PageBean {

	private int rowCount;
	private int pageSize;
	private int pageCount;
	private int pageNum;
	private List contents;

	//下面是get、set方法
}
package bean;

import java.util.Date;

public class User {

	private int id;
	private String username;
	private String password;
	private Date birthday;
	//下面是get/set
}
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbTool {

	public static Connection getConnection(){
		Connection conn = null;

		try{
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1/db_user";
			String uid = "root";
			String pid = "root";
			conn = DriverManager.getConnection(url,uid,pid);
		}catch(Exception exp){
			exp.printStackTrace();
		}

		return conn;
	}

	public static void closeConnection(Connection conn){
		try {
			if(null != conn && !conn.isClosed()){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static Object getOneResult(String cmd){
		Object o = null;

		Connection conn = getConnection();

		try {
			Statement st = conn.createStatement();
			ResultSet rs = st.executeQuery(cmd);
			if(rs.next()){
				o = rs.getObject(1);
			}
			rs.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}


		closeConnection(conn);

		return o;
	}

	public static int execute(String cmd){
		Connection conn = getConnection();
		int result = 0;
		try {
			Statement st = conn.createStatement();
			result = st.executeUpdate(cmd);

		} catch (SQLException e) {
			e.printStackTrace();
		}
		closeConnection(conn);

		return result;
	}
}
package dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import bean.PageBean;
import bean.User;

public class UserDao {

	public static void add(User u){

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String cmd = "insert into t_user (username,password,birthday) values('"+
				u.getUsername()+"','"+
				u.getPassword()+"','"+
				sdf.format(u.getBirthday())+"')";
		DbTool.execute(cmd);
	}
	public static void delete(int id){
		String cmd = "delete from t_user where id="+id;
		DbTool.execute(cmd);
	}
	public static void update(User u){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String cmd = "update t_user set username='"+
				u.getUsername()+"',password='"+
				u.getPassword()+"',birthday='"+
				sdf.format(u.getBirthday())+"' where id="+
				u.getId();
		DbTool.execute(cmd);
	}
	public static int getUsersCount(){
		int count = 0;

		String cmd = "select count(*) from t_user";
		Object o = DbTool.getOneResult(cmd);
		if(null != o){
			count = ((Long)o).intValue();
		}

		return count;
	}

	public static PageBean getSomeUser(int pageSize,int pageNum){
		PageBean pb = new PageBean();

		int rowCount = getUsersCount();
		int pageCount = rowCount%pageSize ==0 ? rowCount/pageSize: rowCount/pageSize+1;
		if(pageNum<1)pageNum = 1;
		if(pageNum>pageCount)pageNum=pageCount;
		int first = (pageNum-1)*pageSize;
		String cmd = "select * from t_user limit "+first+","+pageSize;
		Connection conn = DbTool.getConnection();
		List<User> users = new ArrayList<User>();
		try{
			Statement st = conn.createStatement();
			ResultSet rs = st.executeQuery(cmd);
			while (rs.next()){
				User u = new User();
				u.setId(rs.getInt(1));
				u.setUsername(rs.getString(2));
				u.setPassword(rs.getString(3));
				u.setBirthday(rs.getDate(4));
				users.add(u);
			}
		}catch(Exception exp){
			exp.printStackTrace();
		}

		DbTool.closeConnection(conn);

		pb.setContents(users);
		pb.setPageCount(pageCount);
		pb.setPageNum(pageNum);
		pb.setPageSize(pageSize);
		pb.setRowCount(rowCount);

		return pb;
	}
}
package servlet;

import java.io.IOException;

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

import dao.UserDao;

import bean.PageBean;

public class UserList extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String pn = request.getParameter("pageNum");
		int pageNum = 1;
		if(null != pn && pn.length()>0){
			pageNum = Integer.parseInt(pn);
		}

		PageBean pb = UserDao.getSomeUser(5, pageNum);
		request.setAttribute("pageBean", pb);
		RequestDispatcher rd = request.getRequestDispatcher("user_list.jsp");
		rd.forward(request, response);
	}
}
<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="bean.User"%>
<%@page import="java.util.List"%>
<%@page import="bean.PageBean"%>
<%@ 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>
<body>

<table>
	<tr>
		<td>id</td>
		<td>用户名</td>
		<td>密码</td>
		<td>生日</td>
	</tr>
<%
	PageBean pb = (PageBean)request.getAttribute("pageBean");

	List<User> users = (List<User>)pb.getContents();
	int pageNum = pb.getPageNum();
	int pageCount = pb.getPageCount();
	int pageSize = pb.getPageSize();
	int rowCount = pb.getRowCount();
	for(User u : users){
		Date bir = u.getBirthday();
		String birthday = new SimpleDateFormat("yyyy-MM-dd").format(bir);
%>
	<tr>
		<td><%=u.getId() %></td>
		<td><%=u.getUsername() %></td>
		<td><%=u.getPassword()%></td>
		<td><%=birthday %></td>
	</tr>
<%
	}
%>

</table>
共<%=rowCount %>条记录,当前是第<%=pageNum %> / <%=pageCount %>页,每页显示<%=pageSize %>条记录。<br/>
<a href="userList?pageNum=1">第一页</a>
<a href="userList?pageNum=<%=pageNum-1 %>">上一页</a>
<a href="userList?pageNum=<%=pageNum+1 %>">下一页</a>
<a href="userList?pageNum=<%=pageCount %>">最后页</a>
</body>
</html>

三.结束语

虽然技术上不是问题,不过怎么分包却是大问题,目前还没有好办法。。。。。

基于MVC模式的数据库综合练习的更多相关文章

  1. 【Unity】基于MVC模式的背包系统 UGUI实现

    前言 本文基于MVC模式,用UGUI初步实现了背包系统. Control层包括了点击和拖拽两种逻辑. 博文首发:http://blog.csdn.net/duzixi 下载地址:https://git ...

  2. 构建一个简单的基于MVC模式的JavaWeb

    零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...

  3. struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb

    在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...

  4. 基于MVC模式的应用框架之struts

    1.struts开发步骤 引入struts的jar包: 在web.xml中引入struts的核心功能,配置struts核心过滤器:(如果项目中用到了其他过滤器,要放在struts过滤器之前,否则会失效 ...

  5. 基于MVC模式开发的后台框架

    1.ThinkCMF 2.NFine快速开发平台 3.力软快速开发框架 如有好的开发框架希望可以一起交流

  6. 基于 Dojo toolkit 实现 web2.0 的 MVC 模式

    前言 MVC 模式是设计模式中的经典模式,它可以有效的分离数据层,展示层,和业务逻辑层.Web2.0 技术由于其良好的用户体验被广泛应用于 WEB 应用的展示层.但是在传统的 web 开发中,展示层的 ...

  7. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  8. 传统的MVC模式

    对于MVC模式,我们可以将可视化UI呈现,UI处理逻辑和业务逻辑分别定义在View,Controller,和Model中. 可视化UI呈现->View UI处理逻辑->Controller ...

  9. 什么是MVC模式?   

    MVC (Model View Controller) 是一个设计模式,使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务.M是指数据模型,V是指用户界面,C则是控制器. ...

随机推荐

  1. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇

    续:软件项目量化管理(CMMI高成熟度)实践经验谈--之概述篇 二.项目管理过程 软件开发项目管理过程,从项目全视角来看,分为售前.售中.售后等三个大的阶段.本文所谈的是售中阶段项目管理过程,在售中阶 ...

  2. BTrace系列

    http://blog.csdn.net/mgoann/article/category/473844 http://www.cnblogs.com/serendipity/archive/2012/ ...

  3. PureMVC(JS版)源码解析(十):Controller类

          这篇博客我们继续讲解PureMVC的三大核心类(View/Controller/Model)——Controller类.根据PureMVC模块设计,Controller类保存所有的Comm ...

  4. apache服务器php程序

    1.全是.php结尾的.如何首页是index 2.安装完apache,如果输入 http://localhost:50/ 若出现 it works ,代表apache运作正常

  5. 【Android】数据存储-java IO流文件存储

    1.数据持久化:将在内存中的瞬时数据保存在存储设备中.瞬时数据:设备关机数据丢失.持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间转换. 2.Android中简单的三种存储方式:文件存储.Sh ...

  6. 解决iScroll中事件点击一次却触发两次的问题

    var t1=null;//全局 function myClick() { if (t1 == null){ t1 = new Date().getTime(); }else{ var t2 = ne ...

  7. [转载]Access to the path '' is denied.解决方案

    原文地址:Access to the path '' is denied.解决方案作者:趴着墙等红杏 ccess to the path '路径' is denied.我在网上找了很多资料,最后终于解 ...

  8. 《转载》CSS中的三种样式来源:创作人员、读者和用户代理

    CSS中的样式一共有三种来源:创作人员.读者和用户代理,来源的不同会影响到样式的层叠方式,很多第一次学习CSS的朋友,对这三种来源可能会存在一些困惑,下面我写一下自己的理解,若有错误的地方还请指正. ...

  9. Javascript基础学习(2)_表达式和运算符

    1.==和===的区别(!=和!==是相反的比较) 它们采用了同一性的两个不同定义.==是相等性,===是等同性. ①“===”进行两个值的比较 两个值的类型不同,就不相等 两个值是数字,并且值相同, ...

  10. C# 读取txt文本内容写入到excel

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...