案例49-crm练习获取客户列表带有分页和筛选功能
1 案例分析
2 书写步骤
1.封装PageBean
2.书写Action
3.书写Service
4.书写Dao 注意清空之前设置的聚合函数 dc.setProjection(null);
5.完成strutx以及spring的配置
6.书写前台list.jsp页面
3 代码实现
1 封装PageBean
package www.test.utils;import java.util.List;public class PageBean {//当前页private Integer currentPage;//当前页显示的条数private Integer pageSize;//总页数private Integer totalPage;//总记录数private Integer totalCount;//分页列表的数据private List list;public PageBean(Integer currentPage, Integer pageSize, Integer totalCount) {this.currentPage = currentPage;this.pageSize = pageSize;this.totalCount = totalCount;//如果没有指定显示那一页,就显示第一页。if (this.currentPage == null) {this.currentPage = 1;}//如果没有指定每页显示几条数据,就默认显示3条。if (this.pageSize == null) {this.pageSize = 3;}//计算总页数this.totalPage = (this.totalCount + this.pageSize - 1) / this.pageSize;//this.totalPage = (int) Math.ceil((this.totalCount*1.0)/this.pageSize);//判断当前页数是否超出范围//不能小于1if (this.currentPage < 1) {this.currentPage = 1;}//不能大于总页数if (this.currentPage > this.totalPage) {this.currentPage = this.totalPage;}}//计算起始索引public Integer getStart() {return (this.currentPage - 1) * this.pageSize;}public Integer getCurrentPage() {return currentPage;}public void setCurrentPage(Integer currentPage) {this.currentPage = currentPage;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public Integer getTotalPage() {return totalPage;}public void setTotalPage(Integer totalPage) {this.totalPage = totalPage;}public Integer getTotalCount() {return totalCount;}public void setTotalCount(Integer totalCount) {this.totalCount = totalCount;}public List getList() {return list;}public void setList(List list) {this.list = list;}}
2.书写Action
package www.test.web.action;import org.apache.commons.lang3.StringUtils; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Restrictions;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;import www.test.domain.Customer; import www.test.service.CustomerService; import www.test.utils.PageBean;public class CustomerAction extends ActionSupport implements ModelDriven<Customer>{private Customer customer = new Customer();private CustomerService cs;private Integer currentPage;private Integer pageSize;//获取客户列表public String list() throws Exception {//封装离线查询对象DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);//判断并封装参数if(StringUtils.isNotBlank(customer.getCust_name())){dc.add(Restrictions.like("cust_name", "%"+customer.getCust_name()+"%"));}//1 调用Service查询分页数据(PageBean)PageBean pb = cs.getPageBean(dc,currentPage,pageSize);//2 将PageBean放入request域,转发到列表页面显示ActionContext.getContext().put("pageBean", pb);return "list";}@Overridepublic Customer getModel() {return customer;}public CustomerService getCs() {return cs;}public void setCs(CustomerService cs) {this.cs = cs;}public Integer getCurrentPage() {return currentPage;}public void setCurrentPage(Integer currentPage) {this.currentPage = currentPage;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}}
3.书写Service
package www.test.service;import org.hibernate.criterion.DetachedCriteria;import www.test.utils.PageBean;public interface CustomerService {PageBean getPageBean(DetachedCriteria dc, Integer currentPage, Integer pageSize);}
package www.test.service.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import www.test.dao.CustomerDao; import www.test.domain.Customer; import www.test.service.CustomerService; import www.test.utils.PageBean;public class CustomerServiceImpl implements CustomerService {private CustomerDao cd;@Overridepublic PageBean getPageBean(DetachedCriteria dc, Integer currentPage, Integer pageSize) {// 1 调用dao层查询总记录数Integer totalCount = cd.getTotalCount(dc);// 2创建pageBean对象PageBean pb = new PageBean(currentPage, pageSize, totalCount);// 3查询客户列表List<Customer> list = cd.getPageList(dc,pb.getStart(),pb.getPageSize());// 4返回pageBean pb.setList(list);return pb;}public CustomerDao getCd() {return cd;}public void setCd(CustomerDao cd) {this.cd = cd;}}
4.书写Dao
package www.test.dao;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import www.test.domain.Customer;public interface CustomerDao {//查询总记录数 Integer getTotalCount(DetachedCriteria dc);//根据条件查询客户列表List<Customer> getPageList(DetachedCriteria dc, Integer start, Integer pageSize);}
package www.test.dao.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Projection; import org.hibernate.criterion.Projections; import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import www.test.dao.CustomerDao; import www.test.domain.Customer;public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao{@Overridepublic Integer getTotalCount(DetachedCriteria dc) {//设置查询聚合函数,总记录数 dc.setProjection(Projections.rowCount());List<Long> list = (List<Long>) super.getHibernateTemplate().findByCriteria(dc);//清空之前设置的聚合函数dc.setProjection(null);if(list!=null&&list.size()>0){Long count = list.get(0);return count.intValue();}else{return null;}}@Overridepublic List<Customer> getPageList(DetachedCriteria dc, Integer start, Integer pageSize) {List<Customer> list = (List<Customer>) super.getHibernateTemplate().findByCriteria(dc, start, pageSize);return list;}}
5.完成strutx以及spring的配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"> <struts><!-- <constant name="struts.devMode" value="true"></constant> --><!-- #struts.objectFactory = spring 将action的创建交给spring容器 struts.objectFactory.spring.autoWire = name spring负责装配Action依赖属性--><constant name="struts.objectFactory" value="spring"></constant><package name="crm" namespace="/" extends="struts-default"> <global-exception-mappings><exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping></global-exception-mappings><action name="UserAction_*" class="userAction" method="{1}"><result name="toHome" type="redirect">/index.htm</result><result name="error" type="dispatcher">/login.jsp</result></action><action name="CustomerAction_*" class="customerAction" method="{1}"><result name="list" type="dispatcher">/jsp/customer/list.jsp</result></action></package> </struts>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd "><!--5 读取database.properties文件 --><context:property-placeholder location="classpath:database.properties"/><!--6 准备druid连接池 --><bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driverClass}"></property><property name="url" value="${jdbc.jdbcUrl}"></property><property name="username" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property></bean><!--7 核心事务管理器 依赖于SessionFactory--><bean name="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!--8 配置通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="save*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="persist*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="update*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="modify*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="delete*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="remove*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/><tx:method name="find*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/><tx:method name="get*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/></tx:attributes></tx:advice><!--9 配置将通知织入目标对象 配置切点+配置切面 --><aop:config><aop:pointcut expression="execution(* www.test.service.impl.*ServiceImpl.*(..))" id="txPc"/><aop:advisor advice-ref="txAdvice" pointcut-ref="txPc"/></aop:config><!--1 action --><bean name="userAction" class="www.test.web.action.UserAction" scope="prototype"><property name="us" ref="userService"></property></bean><bean name="customerAction" class="www.test.web.action.CustomerAction" scope="prototype"><property name="cs" ref="customerService"></property></bean><!--2 service --><bean name="userService" class="www.test.service.impl.UserServiceImpl"><property name="ud" ref="userDao"></property></bean><bean name="customerService" class="www.test.service.impl.CustomerServiceImpl"><property name="cd" ref="customerDao"></property></bean><!--3 dao --><bean name="userDao" class="www.test.dao.impl.UserDaoImpl"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean name="customerDao" class="www.test.dao.impl.CustomerDaoImpl"><property name="sessionFactory" ref="sessionFactory"></property></bean><!--4 将SessionFactory配置到spring容器中 --><!-- 加载配置方案1:仍然使用外部的hibernate.cfg.xml配置信息 --><!-- <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"></property></bean> --><!-- 加载配置方案2:在spring配置中放置hibernate配置信息 --><bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 将连接池注入到sessionFactory, hibernate会通过连接池获得连接 --><property name="dataSource" ref="dataSource"></property><!-- 配置hibernate基本信息 --><property name="hibernateProperties"><props><!-- 必选配置 --><!-- <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop><prop key="hibernate.connection.url">jdbc:mysql:///hibernate</prop><prop key="hibernate.connection.username">root</prop><prop key="hibernate.connection.password">root</prop> --><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><!-- 可选配置 --><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 --><property name="mappingDirectoryLocations" value="classpath:www/test/domain"></property></bean></beans>
6.书写前台list.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <TITLE>客户列表</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK href="${pageContext.request.contextPath }/css/Style.css"type=text/css rel=stylesheet> <LINK href="${pageContext.request.contextPath }/css/Manage.css"type=text/css rel=stylesheet> <script type="text/javascript"src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <SCRIPT language=javascript>function changePage(pageNum){//alert(pageNum);//1 将页码的值放入对应表单隐藏域中 $("#currentPageInput").val(pageNum);//2提交表达 $("#pageForm").submit();}function changePageSize(pageSize){//alert(pageSize); //1 将页码的值放入对应表单隐藏域中 $("#pageSizeInput").val(pageSize);//2提交表达 $("#pageForm").submit();} </SCRIPT><META content="MSHTML 6.00.2900.3492" name=GENERATOR> </HEAD> <BODY><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMGsrc="${pageContext.request.contextPath }/images/new_019.jpg"border=0></TD><TD width="100%"background="${pageContext.request.contextPath }/images/new_020.jpg"height=20></TD><TD width=15><IMGsrc="${pageContext.request.contextPath }/images/new_021.jpg"border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15 background=${pageContext.request.contextPath }/images/new_022.jpg><IMGsrc="${pageContext.request.contextPath }/images/new_022.jpg"border=0></TD><TD vAlign=top width="100%" bgColor=#ffffff><TABLE cellSpacing=0 cellPadding=5 width="100%" border=0><TR><TD class=manageHead>当前位置:客户管理 > 客户列表</TD></TR><TR><TD height=2></TD></TR></TABLE><TABLE borderColor=#cccccc cellSpacing=0 cellPadding=0 width="100%"align=center border=0><TBODY><TR><TD height=25><FORM id="pageForm" name="customerForm"action="${pageContext.request.contextPath }/CustomerAction_list"method=post><!-- 隐藏域 用于传递当前页面 --><input type="hidden" name="currentPage" id="currentPageInput"value="<s:property value="#pageBean.currentPage"/>"><!-- 隐藏域 用于传递每页显示的条数 --><input type="hidden" name="pageSize" id="pageSizeInput"value="<s:property value="#pageBean.pageSize"/>"><TABLE cellSpacing=0 cellPadding=2 border=0><TBODY><TR><TD>客户名称:</TD><TD><INPUT class=textbox id=sChannel2style="WIDTH: 80px" maxLength=50 name="cust_name"value="${param.cust_name}"></TD><TD><INPUT class=button id=sButton2 type=submitvalue=" 筛选 " name=sButton2></TD></TR></TBODY></TABLE></FORM></TD></TR><TR><TD><TABLE id=gridstyle="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-LEFT-COLOR: #cccccc; BORDER-BOTTOM-WIDTH: 0px; BORDER-BOTTOM-COLOR: #cccccc; WIDTH: 100%; BORDER-TOP-COLOR: #cccccc; FONT-STYLE: normal; BACKGROUND-COLOR: #cccccc; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: #cccccc"cellSpacing=1 cellPadding=2 rules=all border=0><TBODY><TRstyle="FONT-WEIGHT: bold; FONT-STYLE: normal; BACKGROUND-COLOR: #eeeeee; TEXT-DECORATION: none"><TD>客户名称</TD><TD>客户级别</TD><TD>客户来源</TD><TD>联系人</TD><TD>电话</TD><TD>手机</TD><TD>操作</TD></TR><s:iterator value="#pageBean.list" var="cust"><TRstyle="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none"><TD><s:property value="#cust.cust_name" /></TD><TD><s:property value="#cust.cust_level" /></TD><TD><s:property value="#cust.cust_source" /></TD><TD><s:property value="#cust.cust_linkman" /></TD><TD><s:property value="#cust.cust_phone" /></TD><TD><s:property value="#cust.cust_mobile" /></TD><TD><ahref="${pageContext.request.contextPath }/customerServlet?method=edit&custId=${customer.cust_id}">修改</a> <ahref="${pageContext.request.contextPath }/customerServlet?method=delete&custId=${customer.cust_id}">删除</a></TD></TR></s:iterator><%-- <s:iterator value="#list" ><TR style="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none"><TD><s:property value="cust_name" /></TD><TD><s:property value="cust_level" /></TD><TD><s:property value="cust_source" /></TD><TD><s:property value="cust_linkman" /></TD><TD><s:property value="cust_phone" /></TD><TD><s:property value="cust_mobile" /></TD><TD><a href="${pageContext.request.contextPath }/customerServlet?method=edit&custId=${customer.cust_id}">修改</a> <a href="${pageContext.request.contextPath }/customerServlet?method=delete&custId=${customer.cust_id}">删除</a></TD></TR></s:iterator> --%><%-- <c:forEach items="${list }" var="customer"><TR style="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none"><TD>${customer.cust_name }</TD><TD>${customer.cust_level }</TD><TD>${customer.cust_source }</TD><TD>${customer.cust_linkman }</TD><TD>${customer.cust_phone }</TD><TD>${customer.cust_mobile }</TD><TD><a href="${pageContext.request.contextPath }/customerServlet?method=edit&custId=${customer.cust_id}">修改</a> <a href="${pageContext.request.contextPath }/customerServlet?method=delete&custId=${customer.cust_id}">删除</a></TD></TR></c:forEach> --%></TBODY></TABLE></TD></TR><TR><TD><SPAN id=pagelink><DIVstyle="LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right">共[<B><s:property value="#pageBean.totalCount" /></B>]条记 录,[<B><s:property value="#pageBean.currentPage" /></B>]页 ,每页显示 <select name="pageSize" id="selectPageSize" onchange="changePageSize($('#selectPageSize option:selected').val())" ><option value="1" <s:property value="#pageBean.pageSize==1?'selected':''"/>>1</option><option value="2" <s:property value="#pageBean.pageSize==2?'selected':''"/>>2</option><option value="3" <s:property value="#pageBean.pageSize==3?'selected':''"/>>3</option><option value="4" <s:property value="#pageBean.pageSize==4?'selected':''"/>>4</option><option value="5" <s:property value="#pageBean.pageSize==5?'selected':''"/>>5</option></select> 条 [<A href="javaScript:void(0)"onclick="changePage(<s:property value='#pageBean.currentPage-1' />)">前一页</A>]<%-- <B>${page}</B> --%>[<A href="javaScript:void(0)"onclick="changePage(<s:property value='#pageBean.currentPage+1' />)">后一页</A>]到 <input type="text" size="3" id="page" name="page"value="<s:property value='#pageBean.currentPage'/>" /> 页 <inputtype="button" value="Go"onclick="changePage($('#page').val())" /></DIV></SPAN></TD></TR></TBODY></TABLE></TD><TD width=15background="${pageContext.request.contextPath }/images/new_023.jpg"><IMGsrc="${pageContext.request.contextPath }/images/new_023.jpg"border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMGsrc="${pageContext.request.contextPath }/images/new_024.jpg"border=0></TD><TD align=middle width="100%"background="${pageContext.request.contextPath }/images/new_025.jpg"height=15></TD><TD width=15><IMGsrc="${pageContext.request.contextPath }/images/new_026.jpg"border=0></TD></TR></TBODY></TABLE> </BODY> </HTML>
转载于:https://www.cnblogs.com/jepson6669/p/8592835.html
案例49-crm练习获取客户列表带有分页和筛选功能相关推荐
- 用沃创云CRM系统获取客户的方式是什么?
如今大数据的发展,获客成为不少企业关注的话题,而获客的渠道层出不穷,尤其是电销企业,更是如此.那么如何高效获客呢?沃创云基于获客难,推出CRM系统的获客方式有优选商机.沃视获客和沃名片平台,下面一起来 ...
- android 分页列表,android获取相册列表并分页获取
有时候需要获取到系统所有图片,但一次性获取太多了,需要分批分页获取,网上很多资料都没有说到分页,作为一个数据库达人,怎么能受此折磨,因此尝试出来了以下方案: /** * 从本地获取相册列表 * @pa ...
- 微信小程序列表页分页加载功能
微信小程序做分页加载数据,会做一些下拉加载更多.然后上拉刷新的操作.数据放在一个for循环里去加载,数据源是一个数组对象.在加载下一页数据时,将下一页的数据拼到当前数组后面. 代码如下: wxml代码 ...
- 企业微信_客户联系,获取客户及客户群列表及详情
文章目录 一.调试接口 1. 阅读文档 2. 权限配置 3. 指定应用 二.POSTMAN调试接口 2.1. 获取配置了客户联系功能的成员列表 2.2. 获取客户列表 2.3. 获取客户详情 2.4. ...
- 制作CRM管理系统05(客户管理)
目录 一.后台servlet开发 1.1.在CustomDAO中添加查询所有客户的方法 1.2.添加CustomAddServlet 二.前端html开发 2.1.在created方法中通过axios ...
- 企业微信获取客户群里用户的unionid;企业微信获取客户详情
企业微信获取客户群里用户的unionid:企业微信获取客户详情 提示:企业微信获取客户群里用户的unionid其实是通过获取客户详情的接口 文章目录 企业微信获取客户群里用户的unionid:企业微信 ...
- 使用Excel制作带有选项、筛选、提示的日报表
使用Excel制作带有选项.筛选.提示的日报表 1. 效果截图: 2. 前言 在日常工作中几乎避免不了与Excel.Word等文档打交道,如果你的工作性质恰恰又常常与文档打交道那么你必须要掌握相关技巧 ...
- 商品列表分页和排序功能实现
本节我们实现商品列表的升降序.价格的过滤.商品列表的分页和loading功能 实现排序 既然要实现排序,必然要获取一个排序的参数,通过req.param()来获取前端传过来的参数 let sort = ...
- Python-装饰器-案例-获取文件列表
1 import os 2 3 4 def get_all_path(fun): 5 '''装饰器.功能:获取全路径文件名.如:D:/tmp/12.txt 6 :param fun: 7 :retur ...
最新文章
- TI IPNC Web网页之网页修改教程
- 经验总结!我们是如何在编程面试中挂掉的
- sql server 2005中新增加的try catch学习
- HDU2093 考试排名
- 新应用上线 Snippet
- Zabbix监控agent
- 电脑软件:微软Windows官方电脑管家,仅针对国内用户?看看怎么说
- 【测绘程序设计】视距测量神器V1.0(附源程序)
- java打开别人的代码报错_同样的代码,别人的可以运行我的报错,求解答
- properties配置文件的加密
- 我38岁,从外企技术高管到失业在家,只因为做错了这件事
- OpenLayers图层
- iphone计算机快捷键,苹果电脑ps快捷键大全
- python 淘宝滑块验证_2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题...
- java 调查问卷_java学习调查问卷
- 北航MOOC系统Android客户端NABC
- 域控服务器共享盘搭建,搭建域控服务器
- 19 《黑石头的爱与恨:煤的故事》 -豆瓣评分7.4
- 第16课:转型的难处
- 【思科模拟器实验】交换机端口聚合
热门文章
- 第67课 选择排序 改进例67.1 《小学生C++编程入门》
- JQuery和php方面的填空题,PHP复习题(问答题)
- 多元线性回归matlab代码_医学统计|多元线性回归分析
- centos7配置python3_Centos7安装并配置Python3环境
- 智能电视直播软件_速度快,节目多,高清网络电视直播
- Java笔记-使用Kaptcha验证码框架
- Qt文档阅读笔记-构造WebSocket服务端
- 中考英语听说计算机考试满分,北京2018中考英语听说计算机考试注意事项
- 参数 中_理解JavaScript中函数的参数
- c语言运行给拦截了怎么办,[蓝桥杯][算法训练VIP]拦截导弹 (C语言代码)