基于MVC模式的数据库综合练习
一.准备
没什么好说的,直接上代码。。。。
下面是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模式的数据库综合练习的更多相关文章
- 【Unity】基于MVC模式的背包系统 UGUI实现
前言 本文基于MVC模式,用UGUI初步实现了背包系统. Control层包括了点击和拖拽两种逻辑. 博文首发:http://blog.csdn.net/duzixi 下载地址:https://git ...
- 构建一个简单的基于MVC模式的JavaWeb
零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...
- struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb
在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...
- 基于MVC模式的应用框架之struts
1.struts开发步骤 引入struts的jar包: 在web.xml中引入struts的核心功能,配置struts核心过滤器:(如果项目中用到了其他过滤器,要放在struts过滤器之前,否则会失效 ...
- 基于MVC模式开发的后台框架
1.ThinkCMF 2.NFine快速开发平台 3.力软快速开发框架 如有好的开发框架希望可以一起交流
- 基于 Dojo toolkit 实现 web2.0 的 MVC 模式
前言 MVC 模式是设计模式中的经典模式,它可以有效的分离数据层,展示层,和业务逻辑层.Web2.0 技术由于其良好的用户体验被广泛应用于 WEB 应用的展示层.但是在传统的 web 开发中,展示层的 ...
- 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组
真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...
- 传统的MVC模式
对于MVC模式,我们可以将可视化UI呈现,UI处理逻辑和业务逻辑分别定义在View,Controller,和Model中. 可视化UI呈现->View UI处理逻辑->Controller ...
- 什么是MVC模式?
MVC (Model View Controller) 是一个设计模式,使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务.M是指数据模型,V是指用户界面,C则是控制器. ...
随机推荐
- FastDFS 的部署、配置与测试的
部署篇:http://soartju.iteye.com/blog/803477 配置篇:http://soartju.iteye.com/blog/803524 测试篇:http://soartju ...
- Android开发之UI更新交互机制与实例解析
android开发过程中,经常需要更新UI的状态和文案等.这是就需要对UI进行 更新.在android中更新UI一般有三种方法,handler机制.RunOnUiThread方法以及AsyncTask ...
- Validation Rule和Binding Group
WPF学习之绑定-Validation Rule和Binding Group 在上一篇文章中我们讨论了有关WPF绑定的知识点,现在我们可以很容易的将业务数据作为源绑定到WPF控件并可以通过创建不同的D ...
- apache的一些基本配置
Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) 基本配置: ServerRoot "/mnt/softw ...
- SQL带参数拼接
List<SqlParameter> paras = new List<SqlParameter>(); string wherSql = PreWhereSQL + GetQ ...
- 用Module元素实现SharePoint Webpart Page的自动生成
最近研发的项目中开发了很多的WebPart,每次部署这些WebPart到新环境中总是很麻烦,因为自己要新创建WebpartPage,同时还要把这些WebPart放到指定的WebPart页中去: 为了方 ...
- ( 转 )Github配置
以下转自 http://liuzhijun.iteye.com/blog/1457207 有问题请联系我删除. -----———————————————————————— 如果你的代码不知道放哪里好, ...
- jsp - forward指令
forward指令 既可以指向静态的html页面,也可以转发到动态的jsp页面,并可以保留先前请求的参数. 例如,在web中新建一个Jsp_src.jsp的jsp页面: <%@ page lan ...
- jQuery实现多级手风琴树形下拉菜单(源码)
前几天因为公司的菜单要调整,公司的UI框架是不支持的,所以就自己在网上找了一个下拉菜单,可以支持多级菜单数据的,菜单数据是从xml文件中配置后读取的,网上有许多这方面的例子感觉不是很好用,就打了个包贴 ...
- tomcat的server.xml详解
Tomcat服务器是由一系列可配置的组件构成,其核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器.Tomcat的组件可以在<CATALINA_HOME& ...