一.准备

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

下面是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. labview下UDP通信

      本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 因项目需要,用labview写了个UDP通信测试程序,原理图如下: 前面板 后面板: 运行效果:

  2. 使用Java辅助类(CountDownLatch、CyclicBarrier、Semaphore)并发编程

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法 一.C ...

  3. 精《记叙“tom”4年的软件开发之旅》

    1.引言 本篇文章是记叙tom四年的软件开发从业经历,虽然他资历不长,况且本身也是个菜鸟,但他也曾有过荣誉.迷茫.困惑与选择,在这里他希望通过自己所经历过的事情分享给大家,给那些真正热爱软件开发的同学 ...

  4. java 流程执行 循环 foreach循环

    一. if分支 1. 结构  if  else if   else 2.执行原则 if  if  if 结构  会一直去执行()里的判断语句 if else if  else if 结构  只要一条( ...

  5. Android(java)学习笔记192:SQLite数据库(表)的创建 以及 SQLite数据库的升级

    一.数据库的创建 1.文件的创建      //引用,如果文件不存在是不会创建的   File  file = new File("haha.txt"):     //输出流写数据 ...

  6. 【Android】数据存储-SharedPreferences存储

    简单介绍:SharedPreferences是使用键值对的方式来存储数据的,也就是说,当保存一条数据的时候,给这条数据提供一个键,如果需要读取数据,只需要通过这个键就可以提取到对应的数据. 一:存储数 ...

  7. CentOS7安装Python3.5

    2. 安装Python的依赖包 yum -y groupinstall "Development tools" yum -y install openssl-devel sqlit ...

  8. Linux netstat命令参数解释

    netstat –ntlp 显示 tcp 的监听端口 netstat –ntlp 显示 tcp udp 的监听端口 netstat –r 显示路由表 netstat –rn 显示路由表不做名称解析(较 ...

  9. 当append里面的标签显示不出来的时候,用下面的方式做

     $("#result_td").append(tem1+tem3)  $("#result_td").append($(tem1+tem3)) 

  10. C# 与 C++ 交互

    参考: http://www.cnblogs.com/liping13599168/archive/2011/03/31/2000320.html Platform Invoke Tutorial:h ...