一 、main.jsp
视图 View(jsp 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 'main.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">
-->
<link rel="stylesheet" href="css/icons/easyui.css" type="text/css"></link>
<link rel="stylesheet" href="css/icons/icon.css" type="text/css"></link>
<script type="text/javascript" src="css/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="css/js/jquery.easyui.min.js"></script>
<script type="text/javascript">
var addFlag="0";
$(function() {
$('#dg').datagrid({
title : '用户列表',
method : 'GET',
url : 'servlet/UserServlet?action=select',
fit : true,
fitColumns : true,
autoRowHeight : true,
checkOnSelect : false,
pagination : true,
striped : true,
nowrap : true,
multiSort : true,
ctrlSelect : true,
rownumbers : true,
collapsible : true,//是否可折叠的
pageList : [ 1, 2, 3 ],//可以设置每页记录条数的列表
frozenColumns : [ [ {
field : 'checkbox',
checkbox : true
} ] ],
toolbar : [ {
text : '查询',
iconCls : 'icon-search',
handler : function() {
$('#dg').datagrid('reload');
}
}, '-', {
text : '修改',
iconCls : 'icon-edit',
handler : function() {
alert('请选择');
}
}, '-', {
text : '添加',
iconCls : 'icon-add',
handler : function() {
if(addFlag=="0"){
$('#dg').datagrid('insertRow',{
index: 0, // 索引从0开始
row: {}
});
$('#dg').datagrid('selectRow',0);
$('#dg').datagrid('beginEdit',0);
addFlag="1";
}
}
}, '-', {
text : '删除',
iconCls : 'icon-remove',
handler : function() {
$.messager.confirm("信息确认","确定删除吗?",function(ret){
if(ret){
var row =$("#dg").datagrid("getSelections");
if(row.length==0){
$.messager.alert("提示","请选择要删除的数据");
return;
}
var ids =[];
for(var i=0;i<row.length;i++){
ids.push(row[i].id);
}
$.post("servlet/UserServlet?action=delete",{uid:ids},
function(data){
if(data>0){
$('#dg').datagrid('reload');
alert("删除成功");
}else{
alert("删除失败");
}
});
}
});
}
} ],
columns : [ [
{
field : 'id',
title : '用户名',
hidden:true
},
{
field : 'userName',
title : '用户名',
width : 100,
sortable : true,
editor : 'text',
align : 'center'
}, {
field : 'userPwd',
title : '密码',
width : 100,
editor : 'text',
align : 'center'
}, {
field : 'displayName',
title : '级别',
width : 100,
height : 100,
editor : 'text',
align : 'center'
},{
field : 'option',
title : '操作',
width : 100,
formatter: function(value,row,index){
if(row.editing){
var s ='<a href="javascript:void(0);" οnclick="saverow('+index+')">save</a>'
+" "+'<a href="javascript:void(0);" οnclick="cancleEdit('+index+')">cancle</a>'
;
return s;
}else{
var e ='<a href="javascript:void(0);" οnclick="editrow('+index+')">edit</a>';
return e;
}
}
} ] ],
onBeforeEdit : function(index,row){
row.editing = true;
$("#dg").datagrid("refreshRow",index);
},
onAfterEdit: function(index,row){
row.editing = false;
$("#dg").datagrid("refreshRow",index);
}
});
//设置分页控件
var p = $('#dg').datagrid('getPager');
$(p).pagination(
{
beforePageText : '第',//页数文本框前显示的汉字
afterPageText : '页 共 {pages} 页',
displayMsg : '当前显示 {from} - {to} 条记录 共 {total} 条记录'
});
});
function editrow(index){
var row = $("#dg").datagrid("getSelected");
if(row == null){
alert("请选择您要编辑的行");
return;
}
$("#dg").datagrid("beginEdit",index);
}
function cancleEdit(index){
$("#dg").datagrid("rejectChanges");
}
function saverow(index){
$("#dg").datagrid("endEdit",index);
var row = $("#dg").datagrid("getSelected");
dbAdd(row);
}
function dbSave(row){
var id=row.id;
var name=row.userName;
var pwd=row.userPwd;
var dName=row.displayName;
$.post("servlet/UserServlet?action=update",
{id:id,userName:name,userPwd:pwd,displayName:dName},
function(data){
if( data=="1"){
alert("修改成功");
}else{
alert("修改失败");
}
});
}
function dbAdd(row){
var id=row.id;
var name=row.userName;
var pwd=row.userPwd;
var dName=row.displayName;
if(addFlag=="1"){
$.post("servlet/UserServlet?action=add",
{userName:name,userPwd:pwd,displayName:dName},
function(data){
if( data=="1"){
alert("添加成功");
}else{
alert("添加失败");
}
});
addFlag="0";
}else{
$.post("servlet/UserServlet?action=update",
{id:id,userName:name,userPwd:pwd,displayName:dName},
function(data){
if( data=="1"){
alert("修改成功");
}else{
alert("修改失败");
}
});
}
}
</script>
</head>
<body>
<%-- ${sessionScope.user.userName}
${sessionScope.user.displayName}世界你好 --%>
<table class="easyui-datagrid" id="dg">
</table>
</html>
二、UserServlet.java
控制器 Controller(逻辑判断servlet)
根据客户的请求来操作数据,并把结果经由视图显示
package com.jredu.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.jredu.web.dao.UserDao;
import com.jredu.web.entity.User;
public class UserServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public UserServlet() {
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 {
this.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
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
String action=request.getParameter("action");
if(null==action||action.equals("select")){
select(request,response);
}else if(action.equals("update")){
update(request,response);
}else if(action.equals("add")){
add(request,response);
}else if(action.equals("delete")){
delete(request, response);
}
}
//查询
public void select(HttpServletRequest request, HttpServletResponse response) throws IOException{
String page=request.getParameter("page");
String row=request.getParameter("rows");
System.out.println("page:"+page+" rows"+row);
int rows=Integer.parseInt(row);
int from=(Integer.parseInt(page)-1)*rows;
UserDao userDao=new UserDao();
//List<User> list=userDao.selectAll();
List<User> list = userDao.selectPage(from, rows);
//JSONArray ja=JSONArray.fromObject(list);
/*返回一条数据*/
//JSONObject jo=JSONObject.fromObject(user);
HashMap<String, Object> map=new HashMap<String, Object>();
map.put("total",userDao.selectCount());
map.put("rows", list);
PrintWriter out=response.getWriter();
JSONObject jo=JSONObject.fromObject(map);
System.out.println(jo.toString());
out.print(jo.toString());
}
//修改
public void update(HttpServletRequest request, HttpServletResponse response) throws IOException{
String id=request.getParameter("id");
String userName=request.getParameter("userName");
String userPwd=request.getParameter("userPwd");
String displayName=request.getParameter("displayName");
User user=new User();
user.setId(Integer.parseInt(id));
user.setUserName(userName);
user.setUserPwd(userPwd);
user.setDisplayName(displayName);
UserDao userDao=new UserDao();
int affCount=userDao.update(user);
PrintWriter out=response.getWriter();
out.print(affCount);
}
//删除
public void delete(HttpServletRequest request, HttpServletResponse response) throws IOException {
String ids[] = request.getParameterValues("uid[]");
UserDao userDao = new UserDao();
int affCount=0;
for(int i=0;i<ids.length;i++) {
affCount += userDao.delete(Integer.parseInt(ids[i]));
}
PrintWriter out =response.getWriter();
out.print(affCount);
}
//增加
public void add(HttpServletRequest request, HttpServletResponse response) throws IOException{
String userName=request.getParameter("userName");
String userPwd=request.getParameter("userPwd");
String displayName=request.getParameter("displayName");
User user=new User();
user.setUserName(userName);
user.setUserPwd(userPwd);
user.setDisplayName(displayName);
UserDao userDao=new UserDao();
int affCount=userDao.inset(user);
PrintWriter out=response.getWriter();
out.print(affCount);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
三、DBConnection.java
package com.jredu.web.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static Connection con=null;
//驱动程序名
private static String driverName = "com.mysql.jdbc.Driver";
//数据库用户名
private static String userName = "root";
//密码
private static String userPasswd = "ffffff";
//数据库名
private static String dbName = "shcoolapp";
//联结字符串
private static String url = "jdbc:mysql://localhost/" + dbName
+ "?user="+ userName
+ "&password=" + userPasswd
+ "&useUnicode=true&characterEncoding=gbk";
//拿到链接
public static Connection getConnection(){
try{
/* 注册JDBC驱动 */
Class.forName(driverName);
/* 获得数据库连接 */
con=DriverManager.getConnection(url);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
return con;
}
public static void closeConnection(){
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
四、User.java 实体类
package com.jredu.web.entity;
public class User {
private int id;
private String userName;
private String userPwd;
private String displayName;
public User(){
}
public User(String userName, String userPwd, String displayName,int id) {
super();
this.userName = userName;
this.userPwd = userPwd;
this.displayName = displayName;
this.id=id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
}
五、UserDao.java
package com.jredu.web.dao;
import com.jredu.web.db.DBConnection;
import com.jredu.web.entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
//查询所有
public static List<User> selectAll(){
/* 获得数据库连接 */
Connection con=DBConnection.getConnection();
/* 由Connection产生,负责执行SQL语句 */
Statement stmt;
List<User> list=new ArrayList();
try {
stmt = con.createStatement();
/* 负责保存Statement 执行后所产生的查询结果 */
ResultSet rs=stmt.executeQuery("SELECT * FROM users");
while(rs.next()){
User user=new User();
user.setId(Integer.parseInt(rs.getString("Id")));
user.setUserName(rs.getString("USER_NAME"));
user.setUserPwd(rs.getString("PWD"));
user.setDisplayName(rs.getString("DISPLAY_NAME"));
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭链接
DBConnection.closeConnection();
}
return list;
}
//查询一条
public static User selectWhere(String whereOption){
/* 获得数据库连接 */
Connection con=DBConnection.getConnection();
/* 由Connection产生,负责执行SQL语句 */
Statement stmt;
User user=null;
try {
stmt = con.createStatement();
String sql="SELECT * FROM users";
if(!whereOption.equals("")){
sql+=whereOption;
}
/* 负责保存Statement 执行后所产生的查询结果 */
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
user=new User();
user.setUserName(rs.getString("USER_NAME"));
user.setUserPwd(rs.getString("PWD"));
user.setDisplayName(rs.getString("DISPLAY_NAME"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭链接
DBConnection.closeConnection();
}
return user;
}
//增加
public int inset(User user){
Connection con = DBConnection.getConnection();
PreparedStatement pstmt=null;
String sql=" insert into users(user_name,pwd,display_name) values(?,?,?)";
int count=0;
try{
pstmt=(PreparedStatement)con.prepareStatement(sql);
pstmt.setString(1,user.getUserName());
pstmt.setString(2,user.getUserPwd());
pstmt.setString(3,user.getDisplayName());
count=pstmt.executeUpdate();
if(count==0){
//throw new DataAlreadyExistException();
}
}catch (Exception e) {
e.printStackTrace();
}finally{
//关闭连接
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBConnection.closeConnection();
}
return count;
}
//修改
public int update(User user) {
Connection con = DBConnection.getConnection();
PreparedStatement pstmt=null;
String sql="update users " +
"set user_name=?," +
"pwd=?," +
"display_name=? " +
"where id=?";
int affCount=0;
try {
pstmt=con.prepareStatement(sql);
pstmt.setString(1,user.getUserName());
pstmt.setString(2,user.getUserPwd());
pstmt.setString(3,user.getDisplayName());
pstmt.setInt(4, user.getId());
affCount=pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBConnection.closeConnection();
}
return affCount;
}
//删除
public int delete(int id){
Connection con = DBConnection.getConnection();
PreparedStatement pstmt=null;
String sql="delete from users where id=?";
int affCount=0;
try {
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
affCount=pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBConnection.closeConnection();
}
return affCount;
}
//分页
public static List<User> selectPage(int from,int rows){
/* 获得数据库连接 */
Connection con=DBConnection.getConnection();
/* 由Connection产生,负责执行SQL语句 */
Statement stmt;
List<User> list=new ArrayList();
try {
stmt = con.createStatement();
/* 负责保存Statement 执行后所产生的查询结果 */
ResultSet rs=stmt.executeQuery("SELECT * FROM users LIMIT "+from+","+rows);
while(rs.next()){
User user=new User();
user.setId(Integer.parseInt(rs.getString("Id")));
user.setUserName(rs.getString("USER_NAME"));
user.setUserPwd(rs.getString("PWD"));
user.setDisplayName(rs.getString("DISPLAY_NAME"));
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭链接
DBConnection.closeConnection();
}
return list;
}
//现实页数
public int selectCount(){
Connection con = DBConnection.getConnection();
Statement stmt;
int count=0;
try {
stmt=con.createStatement();
String sql="SELECT count(1) as count FROM users ";
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
count=rs.getInt("count");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBConnection.closeConnection();
}
return count;
}
}