<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>MongoDB</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>MongoDB</display-name>
<servlet-name>MongoDB</servlet-name>
<servlet-class>org.newyear.servlet.MongoDBServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MongoDB</servlet-name>
<url-pattern>/MongoDB</url-pattern>
</servlet-mapping>
</web-app>
/**
*修改页面
*/
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/common/common.jsp" %>
<!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">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.4.min.js"></script>
<script src="<%=request.getContextPath() %>/js/myJs/commonJs/commonJs.js"></script>
<script src="<%=request.getContextPath()%>/js/myJs/emp/emp.js"></script>
<title>修改页面</title>
</head>
<body onload="getContextPath('<%=request.getContextPath()%>');selectMenu(${emp.sex})">
<form action="<%=request.getContextPath() %>/MongoDB?action=updateEmp" method="post" >
<table>
<tr>
<td>员工名称:</td>
<td>
<input type="hidden" name="id" value="${emp.id}">
<input type="text" name="name" value="${emp.name}">
</td>
</tr>
<tr>
<td>员工性别:</td>
<td>
<input type="radio" name="sex" value="1"/> 男
<input type="radio" name="sex" value="2"/> 女
</td>
</tr>
<tr>
<td>员工年龄:</td>
<td><input type="text" name="age" value="${emp.age}"></td>
</tr>
<tr>
<td>入职日期:</td>
<td>
<input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" value="${emp.brith}" name="brith">
</td>
</tr>
<tr>
<td><input type="submit" value="修改员工"></td>
</tr>
</table>
</form>
</body>
</html>
package org.newyear.servlet;

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

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

import org.newyear.dao.MongodbDao;
import org.newyear.dao.MongodbDaoImpl;
import org.newyear.model.Employee;
import org.newyear.model.Page;

/**
* Servlet implementation class MongoDB
*/
public class MongoDBServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
@SuppressWarnings("unused")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
MongodbDao mongdbDao=new MongodbDaoImpl();
String action = request.getParameter("action");
Employee emp=new Employee();
//跳转到添加页面
if(action!=null && action.equals("toAddEmp")){
request.getRequestDispatcher("/WEB-INF/view/mongodb/addEmp.jsp").forward(request, response);
//添加员工
}else if(action!=null && action.equals("addEmp")){
setEmp(request, emp);
mongdbDao.addEmp(emp);
response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
//获取员工并且分页 和 根据条件搜索
}else if(action!=null && action.equals("getEmpList")){
String name = request.getParameter("name");
if(name!=null && !name.equals("")){
emp.setName(name);
}
String sex = request.getParameter("sex");
if(sex!=null && !sex.equals("")){
emp.setSex(Integer.parseInt(sex));
}
String minAge = request.getParameter("minAge");
if(minAge!=null && !minAge.equals("")){
emp.setMinAge(Integer.parseInt(minAge));
}
String maxAge = request.getParameter("maxAge");
if(maxAge!=null && !maxAge.equals("")){
emp.setMaxAge(Integer.parseInt(maxAge));
}

String minBrith = request.getParameter("minBrith");
if(minBrith!=null && !minBrith.equals("")){
emp.setMinBrith(minBrith);
}
String maxBrith = request.getParameter("maxBrith");
if(maxBrith!=null && !maxBrith.equals("")){
emp.setMaxBrith(maxBrith);
}

int count=mongdbDao.getCountEmp(emp);
String pageIndex = request.getParameter("emp.pageIndex");
if(pageIndex!=null && !pageIndex.equals("")){
emp.setPageIndex(Integer.parseInt(pageIndex));
}
emp.setTotalCount(count);
emp.calculatePage();
Page page=emp;
List<Employee> listEmp=mongdbDao.getEmpList(emp);
request.setAttribute("page", page);
request.setAttribute("listEmp", listEmp);
String parameter = request.getParameter("flag");
int flag = 0;
if(parameter!=null && ! parameter.equals("")){
flag=Integer.parseInt(parameter);
}
if(flag==1){
request.getRequestDispatcher("/WEB-INF/view/mongodb/PageListEmp.jsp").forward(request, response);
}else{
request.getRequestDispatcher("/WEB-INF/view/mongodb/getListInfoEmp.jsp").forward(request, response);
}
//跳转到修改页面
}else if(action!=null && action.equals("toUpdateEmp")){
String eid = request.getParameter("eid");
if(eid!=null){
emp.setId(Integer.parseInt(eid));
}
emp=mongdbDao.findEmp(emp);
request.setAttribute("emp", emp);
request.getRequestDispatcher("/WEB-INF/view/mongodb/updateEmp.jsp").forward(request, response);
//修改员工
}else if(action!=null && action.equals("updateEmp")){
setEmp(request, emp);
String id = request.getParameter("id");
emp.setId(Integer.parseInt(id));
mongdbDao.updateEmp(emp);
response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
//修改员工
}else if(action!=null && action.equals("delEmp")){
String ids = request.getParameter("ids");
mongdbDao.delEmp(ids);
response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
}

}

private void setEmp(HttpServletRequest request, Employee emp) {
String brith = request.getParameter("brith");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
if(brith!=null){
emp.setBrith(brith);
}
if(age!=null){
emp.setAge(Integer.parseInt(age));
}
if(name!=null){
emp.setName(name);
}
if(sex!=null){
emp.setSex(Integer.parseInt(sex));
}
}
}
/**
* 添加页面
* @param
*/
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/common/common.jsp" %>
<!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>添加员工</title>
</head>
<body>
<form action="<%=request.getContextPath() %>/MongoDB?action=addEmp" method="post" >
<table>
<tr>
<td>员工名称:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>员工性别:</td>
<td>
<input type="radio" name="sex" value="1"> 男
<input type="radio" name="sex" value="2"/> 女
</td>
</tr>
<tr>
<td>员工年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td>入职日期:</td>
<td>
<input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" name="brith">
</td>
</tr>
<tr>
<td><input type="submit" value="添加员工"></td>
</tr>
</table>
</form>
</body>
</html>
/**
* 展示页面
* @param
* @return
*/
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/common/common.jsp" %>
<!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">
<link href="<%=request.getContextPath() %>/css/showLoading.css" rel="stylesheet" media="screen" />
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jsframework/showLoading/jquery.showLoading.min.js"></script>
<script src="<%=request.getContextPath() %>/js/myJs/commonJs/commonJs.js"></script>
<script src="<%=request.getContextPath()%>/js/myJs/emp/emp.js"></script>
<title>展示页面</title>
</head>
<body onload="getContextPath('<%=request.getContextPath()%>')">
<form>
<table onkeypress="EnterPress()">
<tr>
<td>姓名:</td>
<td><input type="text" id="name" size="5"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="1"> 男
<input type="radio" name="sex" value="2"/> 女
</td>
</tr>
<tr>
<td>年龄:</td>
<td>
<input type="text" id="minAge" size="5">到
<input type="text" id="maxAge" size="5">
</td>
</tr>
<tr>
<td>入职日期:</td>
<td>
<input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" id="minBrith">到
<input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" id="maxBrith">
</td>
</tr>
<tr>
<td>
<input type="button" value="搜索" onclick="search(1)"/>
</td>
<td>
<input type="reset" value="重置"/>
<input type="button" value="添加员工" onclick="addEmp()"/>
<input type="button" value="删除员工" onclick="delEmp()"/>
</td>
</tr>
</table>
</form>
<div id="empId">
<jsp:include page="/WEB-INF/view/mongodb/PageListEmp.jsp"></jsp:include>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/common/common.jsp" %>
<!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>展示页面</title>
<style>
#emp {
text-align:center;
width: 500px;
border-collapse: collapse;
}
#emp th, #emp td {
border: 1px solid #666;
border-collapse: collapse;
}
</style>
</head>
<body>
<table id="emp">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>入职日期</td>
<td>操作 <input type="button" value="反选" onclick="fanxuan()"/></td>
</tr>
<c:forEach items="${listEmp}" var="emp">
<tr>
<td>${emp.name}</td>
<td>${emp.age}</td>
<td>${emp.sexView}</td>
<td>${emp.brith}</td>
<td>
<input type="checkbox" name="cb" value='${emp.id}'/>
<input type="button" value="修改信息" onclick="updateEmp('${emp.id}')" />
</td>
</tr>
</c:forEach>
</table>
<jsp:include page="/common/ajaxpage.jsp"></jsp:include>
</body>
</html>
package org.newyear.dao;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;

import org.bson.BasicBSONObject;
import org.newyear.model.Employee;

import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;

public class MongodbDaoImpl implements MongodbDao {
static Mongo mongo;
static DB db;
static DBCollection empInfo;
static{
try {
mongo = new Mongo("localhost", 27017);
// 得到数据库java1211b
db = mongo.getDB("dudu");
empInfo = db.getCollection("emp");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加员工
* @param emp
*/
@Override
public void addEmp(Employee emp) {
BasicDBObject bd = new BasicDBObject();
if(empInfo.getCount()==0){
bd.put("_id", 1);
}else{
DBObject orderBy=new BasicDBObject();
orderBy.put("_id", -1);
DBCursor cursor = empInfo.find().sort(orderBy).limit(1);
DBObject next = cursor.next();
bd.put("_id", Integer.parseInt(((BasicBSONObject) next).getString("_id"))+1);
}
bd.put("name", emp.getName());
bd.put("sex", emp.getSex());
bd.put("age", emp.getAge());
bd.put("brith", emp.getBrith());
empInfo.save(bd);
}
/**
* 获取员工列表
* @param emp
* @return
*/
@Override
public List<Employee> getEmpList(Employee emp) {
List<Employee> listInfo=new ArrayList<Employee>();
DBObject orderBy=new BasicDBObject();
orderBy.put("_id", -1);
DBObject dbo = extracted(emp);
DBCursor cursor = empInfo.find(dbo).sort(orderBy).skip(emp.getStartPos()).limit(emp.getPageSize());
while(cursor.hasNext()){
Employee employee=new Employee();
BasicDBObject bdbObj = (BasicDBObject) cursor.next();
if(bdbObj != null){
employee.setId(Integer.parseInt(bdbObj.getString("_id")));
employee.setAge(bdbObj.getInt("age"));
employee.setName(bdbObj.getString("name"));
employee.setBrith(bdbObj.getString("brith"));
employee.setSex(bdbObj.getInt("sex"));
}
listInfo.add(employee);
}
for (Employee employeeInfo : listInfo) {
if(employeeInfo.getSex()==1){
employeeInfo.setSexView("男");
}else if(employeeInfo.getSex()==2){
employeeInfo.setSexView("女");
}
}
return listInfo;
}
/**
* 获取员工总条数
* @param emp
* @return
*/
@Override
public int getCountEmp(Employee emp) {
DBObject dbo = extracted(emp);
return (int) empInfo.getCount(dbo);
}
private DBObject extracted(Employee emp) {
//>=和<=操作
DBObject dbo=new BasicDBObject();
//根据年龄进行搜索
DBObject greateAndLess=null;
if(emp.getMinAge()!=0){
if(greateAndLess==null){
greateAndLess=new BasicDBObject();
greateAndLess.put("$gte", emp.getMinAge());
}
}
if(emp.getMaxAge()!=0){
if(greateAndLess==null){
greateAndLess=new BasicDBObject();
greateAndLess.put("$lte", emp.getMaxAge());
}else{
greateAndLess.put("$lte", emp.getMaxAge());
}
}
if(greateAndLess!=null){
dbo.put("age", greateAndLess);
}
//根据入职日期进行搜索
DBObject brithGL=null;
if(emp.getMinBrith()!=null && emp.getMinBrith().length()>0){
if(brithGL==null){
brithGL=new BasicDBObject();
brithGL.put("$gte", emp.getMinBrith());
}
}
if(emp.getMaxBrith()!=null && emp.getMaxBrith().length()>0){
if(brithGL==null){
brithGL=new BasicDBObject();
brithGL.put("$lte", emp.getMaxBrith());
}else{
brithGL.put("$lte", emp.getMaxBrith());
}
}
if(brithGL!=null){
dbo.put("brith", brithGL);
}

//根据性别进行搜素
BasicDBList count=null;
if(emp.getSex()!=0){
count=new BasicDBList();
count.add(emp.getSex());
}
if(count!=null){
dbo.put("sex", new BasicDBObject("$in",count));
}
//根据名字进行模糊搜索
if(emp.getName()!=null && emp.getName().length()>0){
Pattern pattern=Pattern.compile("^.*"+emp.getName()+".*$", Pattern.CASE_INSENSITIVE);
dbo.put("name", pattern);
}
return dbo;
}
/**
*修改回填 根据id中啊到对应的对象
* @param emp
* @return
*/
@Override
public Employee findEmp(Employee emp) {
Employee employeeInfo=new Employee();
DBObject findEmp=new BasicDBObject();
findEmp.put("_id", emp.getId());
DBCursor find = empInfo.find(findEmp);
while(find.hasNext()){
BasicDBObject next = (BasicDBObject) find.next();
employeeInfo.setId(Integer.parseInt(next.getString("_id")));
employeeInfo.setAge(next.getInt("age"));
employeeInfo.setName(next.getString("name"));
employeeInfo.setSex(next.getInt("sex"));
employeeInfo.setBrith(next.getString("brith"));
}
return employeeInfo;
}
/**
* 修改员工
* @param emp
*/
@Override
public void updateEmp(Employee emp) {
BasicDBObject bd = new BasicDBObject();
BasicDBObject bdInfo = new BasicDBObject();
bd.put("name", emp.getName());
bd.put("sex", emp.getSex());
bd.put("age", emp.getAge());
bd.put("brith", emp.getBrith());
bdInfo.put("_id", emp.getId());
empInfo.update(bdInfo, bd);
}
/**
* 批量删除
* @param ids
*/
@Override
public void delEmp(String ids) {
String[] split = ids.split(",");
BasicDBObject bd = new BasicDBObject();
BasicDBList count=new BasicDBList();
for (int i = 0; i < split.length; i++) {
count.add(Integer.parseInt(split[i]));
}
bd.put("_id", new BasicDBObject("$in",count));
empInfo.remove(bd);
}
}
package org.newyear.model;

public class Employee extends Page{
private int id;
private String name;
private int sex;
private int age;
private String sexView;

private int minAge;
private int maxAge;

private String brith;
private String minBrith;
private String maxBrith;

public String getMinBrith() {
return minBrith;
}
public void setMinBrith(String minBrith) {
this.minBrith = minBrith;
}
public String getMaxBrith() {
return maxBrith;
}
public void setMaxBrith(String maxBrith) {
this.maxBrith = maxBrith;
}
public String getBrith() {
return brith;
}
public void setBrith(String brith) {
this.brith = brith;
}
public int getMinAge() {
return minAge;
}
public void setMinAge(int minAge) {
this.minAge = minAge;
}
public int getMaxAge() {
return maxAge;
}
public void setMaxAge(int maxAge) {
this.maxAge = maxAge;
}
public String getSexView() {
return sexView;
}
public void setSexView(String sexView) {
this.sexView = sexView;
}


public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}