当前位置:   article > 正文

JavaWeb 基于jsp+javabean+servlet+mongodb 增删改查_jsp+javabean+servlet+db

jsp+javabean+servlet+db
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <display-name>MongoDB</display-name>
  4. <welcome-file-list>
  5. <welcome-file>index.html</welcome-file>
  6. <welcome-file>index.htm</welcome-file>
  7. <welcome-file>index.jsp</welcome-file>
  8. <welcome-file>default.html</welcome-file>
  9. <welcome-file>default.htm</welcome-file>
  10. <welcome-file>default.jsp</welcome-file>
  11. </welcome-file-list>
  12. <servlet>
  13. <description></description>
  14. <display-name>MongoDB</display-name>
  15. <servlet-name>MongoDB</servlet-name>
  16. <servlet-class>org.newyear.servlet.MongoDBServlet</servlet-class>
  17. </servlet>
  18. <servlet-mapping>
  19. <servlet-name>MongoDB</servlet-name>
  20. <url-pattern>/MongoDB</url-pattern>
  21. </servlet-mapping>
  22. </web-app>
  1. /**
  2. *修改页面
  3. */
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"
  5. pageEncoding="UTF-8"%>
  6. <%@ include file="/common/common.jsp" %>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11. <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.4.min.js"></script>
  12. <script src="<%=request.getContextPath() %>/js/myJs/commonJs/commonJs.js"></script>
  13. <script src="<%=request.getContextPath()%>/js/myJs/emp/emp.js"></script>
  14. <title>修改页面</title>
  15. </head>
  16. <body onload="getContextPath('<%=request.getContextPath()%>');selectMenu(${emp.sex})">
  17. <form action="<%=request.getContextPath() %>/MongoDB?action=updateEmp" method="post" >
  18. <table>
  19. <tr>
  20. <td>员工名称:</td>
  21. <td>
  22. <input type="hidden" name="id" value="${emp.id}">
  23. <input type="text" name="name" value="${emp.name}">
  24. </td>
  25. </tr>
  26. <tr>
  27. <td>员工性别:</td>
  28. <td>
  29. <input type="radio" name="sex" value="1"/>
  30. <input type="radio" name="sex" value="2"/>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td>员工年龄:</td>
  35. <td><input type="text" name="age" value="${emp.age}"></td>
  36. </tr>
  37. <tr>
  38. <td>入职日期:</td>
  39. <td>
  40. <input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" value="${emp.brith}" name="brith">
  41. </td>
  42. </tr>
  43. <tr>
  44. <td><input type="submit" value="修改员工"></td>
  45. </tr>
  46. </table>
  47. </form>
  48. </body>
  49. </html>

  1. package org.newyear.servlet;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.newyear.dao.MongodbDao;
  10. import org.newyear.dao.MongodbDaoImpl;
  11. import org.newyear.model.Employee;
  12. import org.newyear.model.Page;
  13. /**
  14. * Servlet implementation class MongoDB
  15. */
  16. public class MongoDBServlet extends HttpServlet {
  17. private static final long serialVersionUID = 1L;
  18. /**
  19. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  20. */
  21. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  22. doPost(request, response);
  23. }
  24. /**
  25. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  26. */
  27. @SuppressWarnings("unused")
  28. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  29. request.setCharacterEncoding("utf-8");
  30. response.setContentType("text/html;charset=UTF-8");
  31. MongodbDao mongdbDao=new MongodbDaoImpl();
  32. String action = request.getParameter("action");
  33. Employee emp=new Employee();
  34. //跳转到添加页面
  35. if(action!=null && action.equals("toAddEmp")){
  36. request.getRequestDispatcher("/WEB-INF/view/mongodb/addEmp.jsp").forward(request, response);
  37. //添加员工
  38. }else if(action!=null && action.equals("addEmp")){
  39. setEmp(request, emp);
  40. mongdbDao.addEmp(emp);
  41. response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
  42. //获取员工并且分页 和 根据条件搜索
  43. }else if(action!=null && action.equals("getEmpList")){
  44. String name = request.getParameter("name");
  45. if(name!=null && !name.equals("")){
  46. emp.setName(name);
  47. }
  48. String sex = request.getParameter("sex");
  49. if(sex!=null && !sex.equals("")){
  50. emp.setSex(Integer.parseInt(sex));
  51. }
  52. String minAge = request.getParameter("minAge");
  53. if(minAge!=null && !minAge.equals("")){
  54. emp.setMinAge(Integer.parseInt(minAge));
  55. }
  56. String maxAge = request.getParameter("maxAge");
  57. if(maxAge!=null && !maxAge.equals("")){
  58. emp.setMaxAge(Integer.parseInt(maxAge));
  59. }
  60. String minBrith = request.getParameter("minBrith");
  61. if(minBrith!=null && !minBrith.equals("")){
  62. emp.setMinBrith(minBrith);
  63. }
  64. String maxBrith = request.getParameter("maxBrith");
  65. if(maxBrith!=null && !maxBrith.equals("")){
  66. emp.setMaxBrith(maxBrith);
  67. }
  68. int count=mongdbDao.getCountEmp(emp);
  69. String pageIndex = request.getParameter("emp.pageIndex");
  70. if(pageIndex!=null && !pageIndex.equals("")){
  71. emp.setPageIndex(Integer.parseInt(pageIndex));
  72. }
  73. emp.setTotalCount(count);
  74. emp.calculatePage();
  75. Page page=emp;
  76. List<Employee> listEmp=mongdbDao.getEmpList(emp);
  77. request.setAttribute("page", page);
  78. request.setAttribute("listEmp", listEmp);
  79. String parameter = request.getParameter("flag");
  80. int flag = 0;
  81. if(parameter!=null && ! parameter.equals("")){
  82. flag=Integer.parseInt(parameter);
  83. }
  84. if(flag==1){
  85. request.getRequestDispatcher("/WEB-INF/view/mongodb/PageListEmp.jsp").forward(request, response);
  86. }else{
  87. request.getRequestDispatcher("/WEB-INF/view/mongodb/getListInfoEmp.jsp").forward(request, response);
  88. }
  89. //跳转到修改页面
  90. }else if(action!=null && action.equals("toUpdateEmp")){
  91. String eid = request.getParameter("eid");
  92. if(eid!=null){
  93. emp.setId(Integer.parseInt(eid));
  94. }
  95. emp=mongdbDao.findEmp(emp);
  96. request.setAttribute("emp", emp);
  97. request.getRequestDispatcher("/WEB-INF/view/mongodb/updateEmp.jsp").forward(request, response);
  98. //修改员工
  99. }else if(action!=null && action.equals("updateEmp")){
  100. setEmp(request, emp);
  101. String id = request.getParameter("id");
  102. emp.setId(Integer.parseInt(id));
  103. mongdbDao.updateEmp(emp);
  104. response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
  105. //修改员工
  106. }else if(action!=null && action.equals("delEmp")){
  107. String ids = request.getParameter("ids");
  108. mongdbDao.delEmp(ids);
  109. response.sendRedirect(request.getContextPath()+"/MongoDB?action=getEmpList");
  110. }
  111. }
  112. private void setEmp(HttpServletRequest request, Employee emp) {
  113. String brith = request.getParameter("brith");
  114. String name = request.getParameter("name");
  115. String sex = request.getParameter("sex");
  116. String age = request.getParameter("age");
  117. if(brith!=null){
  118. emp.setBrith(brith);
  119. }
  120. if(age!=null){
  121. emp.setAge(Integer.parseInt(age));
  122. }
  123. if(name!=null){
  124. emp.setName(name);
  125. }
  126. if(sex!=null){
  127. emp.setSex(Integer.parseInt(sex));
  128. }
  129. }
  130. }

  1. /**
  2. * 添加页面
  3. * @param
  4. */
  5. <%@ page language="java" contentType="text/html; charset=UTF-8"
  6. pageEncoding="UTF-8"%>
  7. <%@ include file="/common/common.jsp" %>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  12. <title>添加员工</title>
  13. </head>
  14. <body>
  15. <form action="<%=request.getContextPath() %>/MongoDB?action=addEmp" method="post" >
  16. <table>
  17. <tr>
  18. <td>员工名称:</td>
  19. <td><input type="text" name="name"></td>
  20. </tr>
  21. <tr>
  22. <td>员工性别:</td>
  23. <td>
  24. <input type="radio" name="sex" value="1">
  25. <input type="radio" name="sex" value="2"/>
  26. </td>
  27. </tr>
  28. <tr>
  29. <td>员工年龄:</td>
  30. <td><input type="text" name="age"></td>
  31. </tr>
  32. <tr>
  33. <td>入职日期:</td>
  34. <td>
  35. <input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" name="brith">
  36. </td>
  37. </tr>
  38. <tr>
  39. <td><input type="submit" value="添加员工"></td>
  40. </tr>
  41. </table>
  42. </form>
  43. </body>
  44. </html>

  1. /**
  2. * 展示页面
  3. * @param
  4. * @return
  5. */
  6. <%@ page language="java" contentType="text/html; charset=UTF-8"
  7. pageEncoding="UTF-8"%>
  8. <%@ include file="/common/common.jsp" %>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  13. <link href="<%=request.getContextPath() %>/css/showLoading.css" rel="stylesheet" media="screen" />
  14. <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.4.min.js"></script>
  15. <script type="text/javascript" src="<%=request.getContextPath() %>/js/jsframework/showLoading/jquery.showLoading.min.js"></script>
  16. <script src="<%=request.getContextPath() %>/js/myJs/commonJs/commonJs.js"></script>
  17. <script src="<%=request.getContextPath()%>/js/myJs/emp/emp.js"></script>
  18. <title>展示页面</title>
  19. </head>
  20. <body onload="getContextPath('<%=request.getContextPath()%>')">
  21. <form>
  22. <table onkeypress="EnterPress()">
  23. <tr>
  24. <td>姓名:</td>
  25. <td><input type="text" id="name" size="5"></td>
  26. </tr>
  27. <tr>
  28. <td>性别:</td>
  29. <td>
  30. <input type="radio" name="sex" value="1">
  31. <input type="radio" name="sex" value="2"/>
  32. </td>
  33. </tr>
  34. <tr>
  35. <td>年龄:</td>
  36. <td>
  37. <input type="text" id="minAge" size="5">
  38. <input type="text" id="maxAge" size="5">
  39. </td>
  40. </tr>
  41. <tr>
  42. <td>入职日期:</td>
  43. <td>
  44. <input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" id="minBrith">
  45. <input type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy年MM月dd日'})" id="maxBrith">
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>
  50. <input type="button" value="搜索" onclick="search(1)"/>
  51. </td>
  52. <td>
  53. <input type="reset" value="重置"/>
  54. <input type="button" value="添加员工" onclick="addEmp()"/>
  55. <input type="button" value="删除员工" onclick="delEmp()"/>
  56. </td>
  57. </tr>
  58. </table>
  59. </form>
  60. <div id="empId">
  61. <jsp:include page="/WEB-INF/view/mongodb/PageListEmp.jsp"></jsp:include>
  62. </div>
  63. </body>
  64. </html>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ include file="/common/common.jsp" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>展示页面</title>
  9. <style>
  10. #emp {
  11. text-align:center;
  12. width: 500px;
  13. border-collapse: collapse;
  14. }
  15. #emp th, #emp td {
  16. border: 1px solid #666;
  17. border-collapse: collapse;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <table id="emp">
  23. <tr>
  24. <td>姓名</td>
  25. <td>年龄</td>
  26. <td>性别</td>
  27. <td>入职日期</td>
  28. <td>操作 <input type="button" value="反选" onclick="fanxuan()"/></td>
  29. </tr>
  30. <c:forEach items="${listEmp}" var="emp">
  31. <tr>
  32. <td>${emp.name}</td>
  33. <td>${emp.age}</td>
  34. <td>${emp.sexView}</td>
  35. <td>${emp.brith}</td>
  36. <td>
  37. <input type="checkbox" name="cb" value='${emp.id}'/>
  38. <input type="button" value="修改信息" onclick="updateEmp('${emp.id}')" />
  39. </td>
  40. </tr>
  41. </c:forEach>
  42. </table>
  43. <jsp:include page="/common/ajaxpage.jsp"></jsp:include>
  44. </body>
  45. </html>

  1. package org.newyear.dao;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.regex.Pattern;
  6. import org.bson.BasicBSONObject;
  7. import org.newyear.model.Employee;
  8. import com.mongodb.BasicDBList;
  9. import com.mongodb.BasicDBObject;
  10. import com.mongodb.DB;
  11. import com.mongodb.DBCollection;
  12. import com.mongodb.DBCursor;
  13. import com.mongodb.DBObject;
  14. import com.mongodb.Mongo;
  15. public class MongodbDaoImpl implements MongodbDao {
  16. static Mongo mongo;
  17. static DB db;
  18. static DBCollection empInfo;
  19. static{
  20. try {
  21. mongo = new Mongo("localhost", 27017);
  22. // 得到数据库java1211b
  23. db = mongo.getDB("dudu");
  24. empInfo = db.getCollection("emp");
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. /**
  30. * 添加员工
  31. * @param emp
  32. */
  33. @Override
  34. public void addEmp(Employee emp) {
  35. BasicDBObject bd = new BasicDBObject();
  36. if(empInfo.getCount()==0){
  37. bd.put("_id", 1);
  38. }else{
  39. DBObject orderBy=new BasicDBObject();
  40. orderBy.put("_id", -1);
  41. DBCursor cursor = empInfo.find().sort(orderBy).limit(1);
  42. DBObject next = cursor.next();
  43. bd.put("_id", Integer.parseInt(((BasicBSONObject) next).getString("_id"))+1);
  44. }
  45. bd.put("name", emp.getName());
  46. bd.put("sex", emp.getSex());
  47. bd.put("age", emp.getAge());
  48. bd.put("brith", emp.getBrith());
  49. empInfo.save(bd);
  50. }
  51. /**
  52. * 获取员工列表
  53. * @param emp
  54. * @return
  55. */
  56. @Override
  57. public List<Employee> getEmpList(Employee emp) {
  58. List<Employee> listInfo=new ArrayList<Employee>();
  59. DBObject orderBy=new BasicDBObject();
  60. orderBy.put("_id", -1);
  61. DBObject dbo = extracted(emp);
  62. DBCursor cursor = empInfo.find(dbo).sort(orderBy).skip(emp.getStartPos()).limit(emp.getPageSize());
  63. while(cursor.hasNext()){
  64. Employee employee=new Employee();
  65. BasicDBObject bdbObj = (BasicDBObject) cursor.next();
  66. if(bdbObj != null){
  67. employee.setId(Integer.parseInt(bdbObj.getString("_id")));
  68. employee.setAge(bdbObj.getInt("age"));
  69. employee.setName(bdbObj.getString("name"));
  70. employee.setBrith(bdbObj.getString("brith"));
  71. employee.setSex(bdbObj.getInt("sex"));
  72. }
  73. listInfo.add(employee);
  74. }
  75. for (Employee employeeInfo : listInfo) {
  76. if(employeeInfo.getSex()==1){
  77. employeeInfo.setSexView("男");
  78. }else if(employeeInfo.getSex()==2){
  79. employeeInfo.setSexView("女");
  80. }
  81. }
  82. return listInfo;
  83. }
  84. /**
  85. * 获取员工总条数
  86. * @param emp
  87. * @return
  88. */
  89. @Override
  90. public int getCountEmp(Employee emp) {
  91. DBObject dbo = extracted(emp);
  92. return (int) empInfo.getCount(dbo);
  93. }
  94. private DBObject extracted(Employee emp) {
  95. //>=和<=操作
  96. DBObject dbo=new BasicDBObject();
  97. //根据年龄进行搜索
  98. DBObject greateAndLess=null;
  99. if(emp.getMinAge()!=0){
  100. if(greateAndLess==null){
  101. greateAndLess=new BasicDBObject();
  102. greateAndLess.put("$gte", emp.getMinAge());
  103. }
  104. }
  105. if(emp.getMaxAge()!=0){
  106. if(greateAndLess==null){
  107. greateAndLess=new BasicDBObject();
  108. greateAndLess.put("$lte", emp.getMaxAge());
  109. }else{
  110. greateAndLess.put("$lte", emp.getMaxAge());
  111. }
  112. }
  113. if(greateAndLess!=null){
  114. dbo.put("age", greateAndLess);
  115. }
  116. //根据入职日期进行搜索
  117. DBObject brithGL=null;
  118. if(emp.getMinBrith()!=null && emp.getMinBrith().length()>0){
  119. if(brithGL==null){
  120. brithGL=new BasicDBObject();
  121. brithGL.put("$gte", emp.getMinBrith());
  122. }
  123. }
  124. if(emp.getMaxBrith()!=null && emp.getMaxBrith().length()>0){
  125. if(brithGL==null){
  126. brithGL=new BasicDBObject();
  127. brithGL.put("$lte", emp.getMaxBrith());
  128. }else{
  129. brithGL.put("$lte", emp.getMaxBrith());
  130. }
  131. }
  132. if(brithGL!=null){
  133. dbo.put("brith", brithGL);
  134. }
  135. //根据性别进行搜素
  136. BasicDBList count=null;
  137. if(emp.getSex()!=0){
  138. count=new BasicDBList();
  139. count.add(emp.getSex());
  140. }
  141. if(count!=null){
  142. dbo.put("sex", new BasicDBObject("$in",count));
  143. }
  144. //根据名字进行模糊搜索
  145. if(emp.getName()!=null && emp.getName().length()>0){
  146. Pattern pattern=Pattern.compile("^.*"+emp.getName()+".*$", Pattern.CASE_INSENSITIVE);
  147. dbo.put("name", pattern);
  148. }
  149. return dbo;
  150. }
  151. /**
  152. *修改回填 根据id中啊到对应的对象
  153. * @param emp
  154. * @return
  155. */
  156. @Override
  157. public Employee findEmp(Employee emp) {
  158. Employee employeeInfo=new Employee();
  159. DBObject findEmp=new BasicDBObject();
  160. findEmp.put("_id", emp.getId());
  161. DBCursor find = empInfo.find(findEmp);
  162. while(find.hasNext()){
  163. BasicDBObject next = (BasicDBObject) find.next();
  164. employeeInfo.setId(Integer.parseInt(next.getString("_id")));
  165. employeeInfo.setAge(next.getInt("age"));
  166. employeeInfo.setName(next.getString("name"));
  167. employeeInfo.setSex(next.getInt("sex"));
  168. employeeInfo.setBrith(next.getString("brith"));
  169. }
  170. return employeeInfo;
  171. }
  172. /**
  173. * 修改员工
  174. * @param emp
  175. */
  176. @Override
  177. public void updateEmp(Employee emp) {
  178. BasicDBObject bd = new BasicDBObject();
  179. BasicDBObject bdInfo = new BasicDBObject();
  180. bd.put("name", emp.getName());
  181. bd.put("sex", emp.getSex());
  182. bd.put("age", emp.getAge());
  183. bd.put("brith", emp.getBrith());
  184. bdInfo.put("_id", emp.getId());
  185. empInfo.update(bdInfo, bd);
  186. }
  187. /**
  188. * 批量删除
  189. * @param ids
  190. */
  191. @Override
  192. public void delEmp(String ids) {
  193. String[] split = ids.split(",");
  194. BasicDBObject bd = new BasicDBObject();
  195. BasicDBList count=new BasicDBList();
  196. for (int i = 0; i < split.length; i++) {
  197. count.add(Integer.parseInt(split[i]));
  198. }
  199. bd.put("_id", new BasicDBObject("$in",count));
  200. empInfo.remove(bd);
  201. }
  202. }

  1. package org.newyear.model;
  2. public class Employee extends Page{
  3. private int id;
  4. private String name;
  5. private int sex;
  6. private int age;
  7. private String sexView;
  8. private int minAge;
  9. private int maxAge;
  10. private String brith;
  11. private String minBrith;
  12. private String maxBrith;
  13. public String getMinBrith() {
  14. return minBrith;
  15. }
  16. public void setMinBrith(String minBrith) {
  17. this.minBrith = minBrith;
  18. }
  19. public String getMaxBrith() {
  20. return maxBrith;
  21. }
  22. public void setMaxBrith(String maxBrith) {
  23. this.maxBrith = maxBrith;
  24. }
  25. public String getBrith() {
  26. return brith;
  27. }
  28. public void setBrith(String brith) {
  29. this.brith = brith;
  30. }
  31. public int getMinAge() {
  32. return minAge;
  33. }
  34. public void setMinAge(int minAge) {
  35. this.minAge = minAge;
  36. }
  37. public int getMaxAge() {
  38. return maxAge;
  39. }
  40. public void setMaxAge(int maxAge) {
  41. this.maxAge = maxAge;
  42. }
  43. public String getSexView() {
  44. return sexView;
  45. }
  46. public void setSexView(String sexView) {
  47. this.sexView = sexView;
  48. }
  49. public int getId() {
  50. return id;
  51. }
  52. public void setId(int id) {
  53. this.id = id;
  54. }
  55. public String getName() {
  56. return name;
  57. }
  58. public void setName(String name) {
  59. this.name = name;
  60. }
  61. public int getSex() {
  62. return sex;
  63. }
  64. public void setSex(int sex) {
  65. this.sex = sex;
  66. }
  67. public int getAge() {
  68. return age;
  69. }
  70. public void setAge(int age) {
  71. this.age = age;
  72. }
  73. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/486561
推荐阅读
相关标签
  

闽ICP备14008679号