关于自定义分页标签的使用,我想大家都见过许多人写过,我今天也来凑个热闹写下我见到的自定义标签的使用步骤

既然是自定义标签那么肯定少不了类和tld文件这两大因素,因为这两个才能构成标签

首先奉献上最核心的自定义分页标签类的写法PagerTag.java,前提是要继承自TagSupport类

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.web.tag;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Enumeration;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.jsp.JspException;  
  8. import javax.servlet.jsp.tagext.TagSupport;  
  9.   
  10.   
  11. /** 
  12.  * 分页标签处理类 
  13.  */  
  14. public class PagerTag extends TagSupport {  
  15.     private static final long serialVersionUID = 5729832874890369508L;  
  16.     private String url;         //请求URI  
  17.     private int pageSize = 10;  //每页要显示的记录数  
  18.     private int pageNo = 1;     //当前页号  
  19.     private int recordCount;    //总记录数  
  20.   
  21.     @SuppressWarnings("unchecked")  
  22.     public int doStartTag() throws JspException {  
  23.         int pageCount = (recordCount + pageSize - 1) / pageSize;  //计算总页数  
  24.           
  25.         //拼写要输出到页面的HTML文本  
  26.         StringBuilder sb = new StringBuilder();  
  27.           
  28.           
  29.         sb.append("<style type=\"text/css\">");  
  30.         sb.append(".pagination {padding: 5px;float:right;font-size:12px;}");  
  31.         sb.append(".pagination a, .pagination a:link, .pagination a:visited {padding:2px 5px;margin:2px;border:1px solid #aaaadd;text-decoration:none;color:#006699;}");  
  32.         sb.append(".pagination a:hover, .pagination a:active {border: 1px solid #ff0000;color: #000;text-decoration: none;}");  
  33.         sb.append(".pagination span.current {padding: 2px 5px;margin: 2px;border: 1px solid #ff0000;font-weight: bold;background-color: #ff0000;color: #FFF;}");  
  34.         sb.append(".pagination span.disabled {padding: 2px 5px;margin: 2px;border: 1px solid #eee; color: #ddd;}");  
  35.         sb.append("</style>\r\n");  
  36.         sb.append("<div class=\"pagination\">\r\n");  
  37.         if(recordCount == 0){  
  38.             sb.append("<strong>没有可显示的项目</strong>\r\n");  
  39.         }else{  
  40.             //页号越界处理  
  41.             if(pageNo > pageCount){      pageNo = pageCount; }  
  42.             if(pageNo < 1){      pageNo = 1; }  
  43.               
  44.             sb.append("<form method=\"post\" action=\"").append(this.url)  
  45.                 .append("\" name=\"qPagerForm\">\r\n");  
  46.               
  47.             //获取请求中的所有参数  
  48.             HttpServletRequest request = (HttpServletRequest) pageContext  
  49.                     .getRequest();  
  50.             Enumeration<String> enumeration = request.getParameterNames();  
  51.             String name = null;  //参数名  
  52.             String value = null//参数值  
  53.             //把请求中的所有参数当作隐藏表单域  
  54.             while (enumeration.hasMoreElements()) {  
  55.                 name =  enumeration.nextElement();  
  56.                 value = request.getParameter(name);  
  57.                 // 去除页号  
  58.                 if (name.equals("pageNo")) {  
  59.                     if (null != value && !"".equals(value)) {  
  60.                         pageNo = Integer.parseInt(value);  
  61.                     }  
  62.                     continue;  
  63.                 }  
  64.                 sb.append("<input type=\"hidden\" name=\"")  
  65.                   .append(name)  
  66.                   .append("\" value=\"")  
  67.                   .append(value)  
  68.                   .append("\"/>\r\n");  
  69.             }  
  70.       
  71.             // 把当前页号设置成请求参数  
  72.             sb.append("<input type=\"hidden\" name=\"").append("pageNo")  
  73.                 .append("\" value=\"").append(pageNo).append("\"/>\r\n");  
  74.               
  75.             // 输出统计数据  
  76.             sb.append("&nbsp;共<strong>").append(recordCount)  
  77.                 .append("</strong>项")  
  78.                 .append(",<strong>")  
  79.                 .append(pageCount)  
  80.                 .append("</strong>页:&nbsp;\r\n");  
  81.               
  82.             //上一页处理  
  83.             if (pageNo == 1) {  
  84.                 sb.append("<span class=\"disabled\">&laquo;&nbsp;上一页")  
  85.                     .append("</span>\r\n");  
  86.             } else {  
  87.                 sb.append("<a href=\"javascript:turnOverPage(")  
  88.                   .append((pageNo - 1))  
  89.                   .append(")\">&laquo;&nbsp;上一页</a>\r\n");  
  90.             }  
  91.               
  92.             //如果前面页数过多,显示"..."  
  93.             int start = 1;   
  94.             if(this.pageNo > 4){  
  95.                 start = this.pageNo - 1;  
  96.                 sb.append("<a href=\"javascript:turnOverPage(1)\">1</a>\r\n");  
  97.                 sb.append("<a href=\"javascript:turnOverPage(2)\">2</a>\r\n");  
  98.                 sb.append("&hellip;\r\n");  
  99.             }  
  100.             //显示当前页附近的页  
  101.             int end = this.pageNo + 1;  
  102.             if(end > pageCount){  
  103.                 end = pageCount;  
  104.             }  
  105.             for(int i = start; i <= end; i++){  
  106.                 if(pageNo == i){   //当前页号不需要超链接  
  107.                     sb.append("<span class=\"current\">")  
  108.                         .append(i)  
  109.                         .append("</span>\r\n");  
  110.                 }else{  
  111.                     sb.append("<a href=\"javascript:turnOverPage(")  
  112.                         .append(i)  
  113.                         .append(")\">")  
  114.                         .append(i)  
  115.                         .append("</a>\r\n");  
  116.                 }  
  117.             }  
  118.             //如果后面页数过多,显示"..."  
  119.             if(end < pageCount - 2){  
  120.                 sb.append("&hellip;\r\n");  
  121.             }  
  122.             if(end < pageCount - 1){  
  123.                 sb.append("<a href=\"javascript:turnOverPage(")  
  124.                 .append(pageCount - 1)  
  125.                 .append(")\">")  
  126.                 .append(pageCount - 1)  
  127.                 .append("</a>\r\n");  
  128.             }  
  129.             if(end < pageCount){  
  130.                 sb.append("<a href=\"javascript:turnOverPage(")  
  131.                 .append(pageCount)  
  132.                 .append(")\">")  
  133.                 .append(pageCount)  
  134.                 .append("</a>\r\n");   
  135.             }  
  136.               
  137.             //下一页处理  
  138.             if (pageNo == pageCount) {  
  139.                 sb.append("<span class=\"disabled\">下一页&nbsp;&raquo;")  
  140.                     .append("</span>\r\n");  
  141.             } else {  
  142.                 sb.append("<a href=\"javascript:turnOverPage(")  
  143.                     .append((pageNo + 1))  
  144.                     .append(")\">下一页&nbsp;&raquo;</a>\r\n");  
  145.             }  
  146.             sb.append("</form>\r\n");  
  147.       
  148.             // 生成提交表单的JS  
  149.             sb.append("<script language=\"javascript\">\r\n");  
  150.             sb.append("  function turnOverPage(no){\r\n");  
  151.             sb.append("    if(no>").append(pageCount).append("){");  
  152.             sb.append("      no=").append(pageCount).append(";}\r\n");  
  153.             sb.append("    if(no<1){no=1;}\r\n");  
  154.             sb.append("    document.qPagerForm.pageNo.value=no;\r\n");  
  155.             sb.append("    document.qPagerForm.submit();\r\n");  
  156.             sb.append("  }\r\n");  
  157.             sb.append("</script>\r\n");  
  158.         }  
  159.         sb.append("</div>\r\n");  
  160.           
  161.         //把生成的HTML输出到响应中  
  162.         try {  
  163.             pageContext.getOut().println(sb.toString());  
  164.         } catch (IOException e) {  
  165.             throw new JspException(e);  
  166.         }  
  167.         return SKIP_BODY;  //本标签主体为空,所以直接跳过主体  
  168.     }  
  169.   
  170.     public void setUrl(String url) {  
  171.         this.url = url;  
  172.     }  
  173.     public void setPageSize(int pageSize) {  
  174.         this.pageSize = pageSize;  
  175.     }  
  176.     public void setPageNo(int pageNo) {  
  177.         this.pageNo = pageNo;  
  178.     }  
  179.     public void setRecordCount(int recordCount) {  
  180.         this.recordCount = recordCount;  
  181.     }  
  182. }</span>  

 WEB-INF/pager.tld的写法

Xml代码  收藏代码
  1. <span style="font-size: medium;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">  
  5.     <tlib-version>0.9</tlib-version>  
  6.    <!--标签头-->  
  7.     <short-name>w</short-name>  
  8.     <!--将来在页面用taglib引用时的uri属性,这部分的名字可以随便写,只要是符合HTTP网址形式的 -->  
  9.     <uri>http://javacrazyer.iteye.com/tags/pager</uri>  
  10.       
  11.     <!-- 自定义标签的描述信息 -->  
  12.     <tag>  
  13.         <!-- 标签名 -->  
  14.         <name>pager</name>  
  15.         <!-- 对应的标签处理类全限定名 -->  
  16.         <tag-class>com.javacrazyer.web.tag.PagerTag</tag-class>  
  17.         <!-- 标签主体的类型 -->  
  18.         <body-content>empty</body-content>  
  19.         <!-- 当前页号属性的描述信息 -->  
  20.         <attribute>  
  21.             <!-- 属性名 -->  
  22.             <name>pageNo</name>  
  23.             <!-- 该属性是否为必要的 -->  
  24.             <required>true</required>  
  25.             <!-- 属性值是否可以在JSP运行时期动态产生 -->  
  26.             <rtexprvalue>true</rtexprvalue>  
  27.             <!-- 属性的数据类型 -->  
  28.             <type>int</type>  
  29.         </attribute>  
  30.         <!-- 总记录数属性的描述信息 -->  
  31.         <attribute>  
  32.             <name>recordCount</name>  
  33.             <required>true</required>  
  34.             <rtexprvalue>true</rtexprvalue>  
  35.             <type>int</type>  
  36.         </attribute>  
  37.         <!-- 总页数属性的描述信息 -->  
  38.         <attribute>  
  39.             <name>pageSize</name>  
  40.             <required>true</required>  
  41.             <rtexprvalue>true</rtexprvalue>  
  42.             <type>int</type>  
  43.         </attribute>  
  44.         <!-- 分页标签要跳转的URI属性的描述信息 -->  
  45.         <attribute>  
  46.             <name>url</name>  
  47.             <required>true</required>  
  48.             <rtexprvalue>true</rtexprvalue>  
  49.             <type>java.lang.String</type>  
  50.         </attribute>  
  51.     </tag>  
  52. </taglib></span>  

 

好了,就上面的两个基本要素就已经构成了完整的分页标签,下面就差在页面的使用方式了

一般的使用步骤为在JSP页面中:

先倒入标签库:<%@taglib uri="http://javacrazyer.iteye.com/tags/pager" prefix="w"%>

然后使用: <w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp" recordCount="${pm.recordCount}"/>

 

具体使用示例,上面两个类保持不变

这个例子可以说非常好的纯servlet项目的例子,大家今后编程如果没有用到任何框架的话,我希望这个例子能给你带来点启示

前提是导入所有需要的jar包:包括common-dbcp.jar(数据源需要用到),common-dbutils-1.2.jar(数据库CURD操作需要用到,可取代最原始的JDBC操作),junit.jar(测试用到)以及数据库驱动包

关于上面的common-dbutils非常有用,尤其是在非框架项目中,后面我提供下载



 

 

首先数据库,这个数据库脚本是我用navicat导出来的

Sql代码  收藏代码
  1. <span style="font-size: medium;">/*  
  2. Navicat MySQL Data Transfer  
  3. Source Host     : localhost:3306  
  4. Source Database : jstl  
  5. Target Host     : localhost:3306  
  6. Target Database : jstl  
  7. Date: 2010-11-18 14:30:30  
  8. */  
  9.   
  10. SET FOREIGN_KEY_CHECKS=0;  
  11. -- ----------------------------  
  12. -- Table structure for news  
  13. -- ----------------------------  
  14. DROP TABLE IF EXISTS `news`;  
  15. CREATE TABLE `news` (  
  16.   `detail` varchar(255) DEFAULT NULL,  
  17.   `namevarchar(255) DEFAULT NULL,  
  18.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  19.   PRIMARY KEY (`id`)  
  20. ) ENGINE=InnoDB AUTO_INCREMENT=1253 DEFAULT CHARSET=utf8;  
  21. </span>  

 

实体类News.java

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.domain;  
  2.   
  3. public class News {  
  4.     private int id;  
  5.     private String name;  
  6.     private String detail;  
  7.   
  8.     public int getId() {  
  9.         return id;  
  10.     }  
  11.   
  12.     public void setId(int id) {  
  13.         this.id = id;  
  14.     }  
  15.   
  16.     public String getName() {  
  17.         return name;  
  18.     }  
  19.   
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.   
  24.     public String getDetail() {  
  25.         return detail;  
  26.     }  
  27.   
  28.     public void setDetail(String detail) {  
  29.         this.detail = detail;  
  30.     }  
  31.   
  32.     @Override  
  33.     public String toString() {  
  34.         return "News [detail=" + detail + ", id=" + id + ", name=" + name + "]";  
  35.     }  
  36.       
  37.   
  38. }</span>  

 NewsDao.java

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.dao;  
  2.   
  3. import com.javacrazyer.common.PageModel;  
  4. import com.javacrazyer.domain.News;  
  5.   
  6. public interface NewsDao {  
  7.     PageModel<News> findByPager(int pageNo, int pageSize);  
  8.   
  9.     void createNews(News news);  
  10.       
  11.     void update(News news);  
  12.       
  13.     void delete(int id);  
  14.       
  15.     News findbyId(int id);  
  16.       
  17.     int findTotalSize();  
  18.       
  19.   
  20. }</span>  

NewsImplDao.java

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.daoimpl;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.SQLException;  
  5. import java.util.List;  
  6.   
  7. import org.apache.commons.dbutils.DbUtils;  
  8. import org.apache.commons.dbutils.QueryRunner;  
  9. import org.apache.commons.dbutils.handlers.BeanHandler;  
  10. import org.apache.commons.dbutils.handlers.BeanListHandler;  
  11. import org.apache.commons.dbutils.handlers.ScalarHandler;  
  12.   
  13. import com.javacrazyer.common.ConnectionFactory;  
  14. import com.javacrazyer.common.DAOException;  
  15. import com.javacrazyer.common.PageModel;  
  16. import com.javacrazyer.dao.NewsDao;  
  17. import com.javacrazyer.domain.News;  
  18.   
  19. public class NewsDaoImpl implements NewsDao {  
  20.     private QueryRunner qr = new QueryRunner();  
  21.     public void createNews(News news) {  
  22.           
  23.         Connection conn = null;  
  24.         String sql = "insert into news(name,detail) "  
  25.                 + " values(?,?)";  
  26.         Object[] param = { news.getName(),news.getDetail() };  
  27.         try {  
  28.             conn = ConnectionFactory.getConn();  
  29.             qr.update(conn, sql, param);  
  30.         } catch (SQLException e) {  
  31.             e.printStackTrace();  
  32.             throw new DAOException("新增新闻信息时出现异常", e);  
  33.         } finally {  
  34.             DbUtils.closeQuietly(conn);  
  35.         }  
  36.   
  37.     }  
  38.   
  39.     public PageModel<News> findByPager(int pageNo, int pageSize) {  
  40.         PageModel<News> pm=new PageModel<News>();  
  41.         Connection conn=null;  
  42.         String sql="select *from news limit ?,?";  
  43.         Object[] param={(pageNo-1)*pageSize,pageSize};  
  44.         List<News> cates=null;  
  45.         int count;  
  46.         try {  
  47.             conn=ConnectionFactory.getConn();  
  48.             cates=(List<News>)qr.query(conn, sql, new BeanListHandler(News.class), param);  
  49.             pm.setDatas(cates);  
  50.             pm.setRecordCount(findTotalSize());  
  51.         } catch (SQLException e) {            
  52.             e.printStackTrace();  
  53.             throw new DAOException("分页查询出错",e);  
  54.         }finally{  
  55.             DbUtils.closeQuietly(conn);  
  56.         }  
  57.         return pm;  
  58.     }  
  59.   
  60.     public void delete(int id) {  
  61.         Connection conn = null;  
  62.         String sql = "delete from news where id=?";  
  63.         Object[] param = { id };  
  64.         try {  
  65.             conn = ConnectionFactory.getConn();  
  66.             qr.update(conn, sql, param);  
  67.         } catch (SQLException e) {  
  68.             e.printStackTrace();  
  69.             throw new DAOException("删除新闻信息时出现异常", e);  
  70.         } finally {  
  71.             DbUtils.closeQuietly(conn);  
  72.         }  
  73.     }  
  74.   
  75.     public News findbyId(int id) {  
  76.         News news=null;  
  77.         Connection conn=null;  
  78.         String sql="select * from news where id=?";  
  79.         Object[] param={id};  
  80.         try {  
  81.             conn=ConnectionFactory.getConn();  
  82.             news=(News)qr.query(conn,sql, new BeanHandler(News.class), param);  
  83.         } catch (SQLException e) {  
  84.             e.printStackTrace();  
  85.             throw new DAOException("根据ID查询新闻信息时出现异常",e);  
  86.         }finally{  
  87.             DbUtils.closeQuietly(conn);  
  88.         }  
  89.         return news;  
  90.     }  
  91.   
  92.     public void update(News news) {  
  93.         Connection conn=null;  
  94.         String sql="update news set name=?,detail=? where id=?";  
  95.         Object[] param={news.getName(),news.getDetail(),news.getId()};  
  96.         try {  
  97.             conn=ConnectionFactory.getConn();  
  98.             qr.update(conn, sql, param);  
  99.               
  100.         } catch (SQLException e) {  
  101.             e.printStackTrace();  
  102.             throw new DAOException("更新新闻信息出错",e);  
  103.         }finally{  
  104.             DbUtils.closeQuietly(conn);  
  105.         }         
  106.     }  
  107.   
  108.     public int findTotalSize() {  
  109.         Connection conn=null;  
  110.         String sql="select count(id) from news";  
  111.         int count=0;  
  112.         try {  
  113.             conn=ConnectionFactory.getConn();  
  114.             count=((Long)qr.query(conn,sql,new ScalarHandler())).intValue();  
  115.               
  116.         } catch (SQLException e) {  
  117.             e.printStackTrace();  
  118.             throw new DAOException("查询记录总数出错",e);  
  119.         }finally{  
  120.             DbUtils.closeQuietly(conn);  
  121.         }  
  122.         return count;  
  123.     }  
  124.   
  125. }</span>  

 PageModel.java

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.common;  
  2.   
  3. import java.util.List;  
  4.   
  5. /**  
  6.  * 分页组件(包含当前页结果数据列表和总记录数)  
  7.  * 注意,它不是持久化实体类  
  8.  *   
  9.  */    
  10. public class PageModel<T> {    
  11.     private int recordCount;    
  12.     private List<T> datas;    
  13.         
  14.         
  15.     public int getRecordCount() {    
  16.         return recordCount;    
  17.     }    
  18.     public void setRecordCount(int recordCount) {    
  19.         this.recordCount = recordCount;    
  20.     }    
  21.     public List<T> getDatas() {    
  22.         return datas;    
  23.     }    
  24.     public void setDatas(List<T> datas) {    
  25.         this.datas = datas;    
  26.     }    
  27. }  </span>  

 

 数据库连接工具类

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.common;  
  2.   
  3. import java.io.IOException;  
  4. import java.sql.Connection;  
  5. import java.sql.SQLException;  
  6. import java.util.Properties;  
  7.   
  8. import javax.sql.DataSource;  
  9.   
  10. import org.apache.commons.dbcp.BasicDataSource;  
  11.   
  12. /** 
  13.  *  
  14.  * 数据库连接工厂类 
  15.  *  
  16.  */  
  17. public class ConnectionFactory {  
  18.     private static DataSource dss=null;  
  19.     static{  
  20.         Properties pr=new Properties();  
  21.         try {  
  22.             pr.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));  
  23.         } catch (IOException e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.         BasicDataSource ds=new BasicDataSource();  
  27.         ds.setDriverClassName(pr.getProperty("driver_name"));  
  28.         ds.setUrl(pr.getProperty("url"));  
  29.         ds.setUsername(pr.getProperty("username"));  
  30.         ds.setPassword(pr.getProperty("password"));  
  31.         dss=ds;  
  32.     }  
  33.     private ConnectionFactory(){}  
  34.     public static Connection getConn() throws SQLException{  
  35.         return dss.getConnection();  
  36.     }  
  37.   
  38. }</span>  

  上面代码用到的config.properties

Xml代码  收藏代码
  1. <span style="font-size: medium;">#mysql  
  2. driver_name=com.mysql.jdbc.Driver  
  3. url=jdbc:mysql:///jstl  
  4. username=root  
  5. password=root</span>  

DAO实例工具类,类似于Spring的BeanFactory

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.common;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Properties;  
  5.   
  6. /** 
  7.  *  
  8.  *  
  9.  *  自定义简单工厂 
  10.  */  
  11. public class DAOFactory {  
  12.     public static Properties pr = new Properties();  
  13.     static {  
  14.         try {  
  15.             pr.load(Thread.currentThread().getContextClassLoader()  
  16.                     .getResourceAsStream("daoname.properties"));  
  17.         } catch (IOException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.         }  
  21.     }  
  22.     public static Object newInstance(String name){  
  23.         Object obj=null;  
  24.         String daoImplName = pr.getProperty(name);  
  25.         if(null!=daoImplName){  
  26.             try {  
  27.                 obj=Class.forName(daoImplName).newInstance();  
  28.             } catch (InstantiationException e) {  
  29.                 // TODO Auto-generated catch block  
  30.                 e.printStackTrace();  
  31.             } catch (IllegalAccessException e) {  
  32.                 // TODO Auto-generated catch block  
  33.                 e.printStackTrace();  
  34.             } catch (ClassNotFoundException e) {  
  35.                 // TODO Auto-generated catch block  
  36.                 e.printStackTrace();  
  37.             }  
  38.         }else{  
  39.             throw new RuntimeException("指定名称的DAO类未找到");  
  40.         }  
  41.         return obj;  
  42.     }  
  43. }</span>  

  上面代码用到的配置daoname.properties

Xml代码  收藏代码
  1. <span style="font-size: medium;">newsdao=com.javacrazyer.daoimpl.NewsDaoImpl  
  2. coursedao=com.javacrazyer.web.tag.CourseDAOImpl  
  3. teacherdao=com.javacrazyer.web.tag.TeacherDAOImpl  
  4. catedao=com.javacrazyer.web.tag.CategoryDAOImpl  
  5. gradao=com.javacrazyer.web.tag.GraduateDAOImpl  
  6. accountdao=com.javacrazyer.web.tag.AccountDAOImpl</span>  

 平时开发中常用到的常量存放类

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.common;  
  2.   
  3. import java.util.LinkedHashMap;  
  4. import java.util.Map;  
  5.   
  6. /** 
  7.  * 系统常量类 
  8.  *  
  9.  * @author tjitcast.com 
  10.  */  
  11. public class Constant {  
  12.       
  13.       
  14.     /** 状态:可用 */  
  15.     public static final int STATUS_ACTIVE = 1;  
  16.     /** 状态:不可用 */  
  17.     public static final int STATUS_INACTIVE = 0;  
  18.   
  19.     /** 课程类型:全日制 */  
  20.     public static final int COURSE_FULL_TIME = 1;  
  21.     /** 课程类型:业务 */  
  22.     public static final int COURSE_SPARE_TIME = 2;  
  23.     /** 课程类型:免费 */  
  24.     public static final int COURSE_FREE_TIME = 3;  
  25.   
  26.     /** 账号类型:超级管理员 */  
  27.     public static final int ACCOUNT_SUPER = 100;  
  28.     /** 账号类型:普通管理员 */  
  29.     public static final int ACCOUNT_COMMON = 50;  
  30.   
  31.     /** 账号状态:激活 */  
  32.     public static final int ACCOUNT_STATUS_ACTIVE = 1;  
  33.     /** 账号状态:未激活 */  
  34.     public static final int ACCOUNT_STATUS_INACTIVE = 0;  
  35.     /** 账号状态:锁定 */  
  36.     public static final int ACCOUNT_STATUS_LOCK = -1;  
  37.   
  38.     /** 每页要显示的记录数:10 */  
  39.     public static final int PAGE_SIZE =10;  
  40.   
  41.     private static Map<Integer, String> statusMap = new LinkedHashMap<Integer, String>();  
  42.   
  43.     static {  
  44.         // 对状态Map进行初始化  
  45.         statusMap.put(Integer.valueOf(STATUS_ACTIVE), "可用");  
  46.         statusMap.put(Integer.valueOf(STATUS_INACTIVE), "不可用");  
  47.     }  
  48.   
  49.     public static Map<Integer, String> getStatusMap() {  
  50.         return statusMap;  
  51.     }  
  52.   
  53. }</span>  

 

开发中常用到的用来判断空值,类型转换,集合操作等等的自定义常用工具类

Java代码  收藏代码
  1. <span style="font-size: medium;">/** 
  2.  *  ClassName: DataValidateUtil.java 
  3.  *  created on Jul 10, 2009 
  4.  *  Copyrights 2009 www.tjicast.com All rights reserved. 
  5.  *  site: http://www.tjitcast.com 
  6.  *  email: tjhr@csdn.net 
  7.  *  phone: 022-83726777,89721888 
  8.  */  
  9. package com.javacrazyer.common;  
  10.   
  11. import java.text.ParseException;  
  12. import java.text.SimpleDateFormat;  
  13. import java.util.Collection;  
  14. import java.util.Date;  
  15. import java.util.Map;  
  16.   
  17. /** 
  18.  * 对一些常用数据进行操作的工具类 
  19.  *  
  20.  */  
  21. public class DataOptUtil {  
  22.       
  23.       
  24.     /** 日期长格式 */  
  25.     public static final String DATE_PATTERN_LONG = "yyyy-MM-dd HH:mm:ss";  
  26.     /** 日期格式 */  
  27.     public static final String DATE_PATTERN = "yyyy-MM-dd";  
  28.       
  29.     public static boolean isNotNull(String str){  
  30.         if(null != str && !"".equals(str)){  
  31.             return true;  
  32.         }else{  
  33.             return false;  
  34.         }  
  35.     }  
  36.       
  37.     public static int parseInt(String str){  
  38.         if(isNotNull(str)){  
  39.             return Integer.parseInt(str);  
  40.         }else{  
  41.             throw new RuntimeException("字符串为空,不能转换成数字");  
  42.         }  
  43.     }  
  44.       
  45.     public static Date parseDate(String str, String pattern){  
  46.         SimpleDateFormat sdf = new SimpleDateFormat(pattern);  
  47.         Date date = null;  
  48.         if(isNotNull(str)){  
  49.             try {  
  50.                 date = sdf.parse(str);  
  51.             } catch (ParseException e) {  
  52.                 e.printStackTrace();  
  53.             }  
  54.         }else{  
  55.             throw new RuntimeException("字符串为空,不能转换成日期");  
  56.         }  
  57.         return date;  
  58.     }  
  59.       
  60.     public static Date parseDate(String str){  
  61.         return parseDate(str, DataOptUtil.DATE_PATTERN);  
  62.     }  
  63.       
  64.     public static Date parseLongDate(String str){  
  65.         return parseDate(str, DataOptUtil.DATE_PATTERN_LONG);  
  66.     }  
  67.       
  68.     public static String date2String(Date date, String pattern){  
  69.         SimpleDateFormat sdf = new SimpleDateFormat(pattern);  
  70.         return sdf.format(date);  
  71.     }  
  72.       
  73.     public static String Date2String(Date date){  
  74.         return date2String(date, DataOptUtil.DATE_PATTERN);  
  75.     }  
  76.       
  77.     public static String Date2LongString(Date date){  
  78.         return date2String(date, DataOptUtil.DATE_PATTERN_LONG);  
  79.     }  
  80.       
  81.     public static int getSize(Collection<?> coll){  
  82.         int size = coll == null ? 0 : coll.size();  
  83.         return size;  
  84.     }  
  85.       
  86.     public static int getSize(Map<?,?> map){  
  87.         int size = map == null ? 0 : map.size();  
  88.         return size;  
  89.     }  
  90.       
  91.     public static int getLength(Object[] obj){  
  92.         int length = 0;  
  93.         length = obj == null ? 0 : obj.length;  
  94.         return length;  
  95.     }  
  96. }</span>  

 

还有一个自定义非受检异常类

Java代码  收藏代码
  1. <span style="font-size: medium;">package com.javacrazyer.common;  
  2.   
  3. /** 
  4.  * 
  5.  * 自定义的非受检异常 
  6.  *  
  7.  */  
  8. public class DAOException extends RuntimeException {  
  9.   
  10.     private static final long serialVersionUID = 1047748781772098415L;  
  11.   
  12.     public DAOException() {  
  13.         super();  
  14.     }  
  15.   
  16.     public DAOException(String message, Throwable cause) {  
  17.         super(message, cause);  
  18.     }  
  19.   
  20.     public DAOException(String message) {  
  21.         super(message);  
  22.     }  
  23.   
  24.     public DAOException(Throwable cause) {  
  25.         super(cause);  
  26.     }  
  27.       
  28. }  
  29. </span>  

 

页面方面

index.html

Java代码  收藏代码
  1. <span style="font-size: medium;"><html>  
  2.     <head>  
  3.          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
  4.         <meta http-equiv="refresh" content="0; url=do.jsp" />  
  5.     </head>  
  6. </html></span>  

 

do.jsp

Java代码  收藏代码
  1. <span style="font-size: medium;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@page import="com.javacrazyer.common.DAOFactory"%>  
  3. <%@page import="com.javacrazyer.dao.NewsDao"%>  
  4. <%@page import="com.javacrazyer.common.PageModel"%>  
  5. <%@page import="com.javacrazyer.common.DataOptUtil"%>  
  6. <%@page import="com.javacrazyer.common.Constant"%>  
  7. <%@page import="com.javacrazyer.domain.News"%>  
  8. <%  
  9. NewsDao dao=(NewsDao)DAOFactory.newInstance("newsdao");  
  10.   
  11. int pageNo = 1;  
  12. String temp = request.getParameter("pageNo");  
  13. if (DataOptUtil.isNotNull(temp)) {  
  14.     pageNo = Integer.parseInt(temp);  
  15. }  
  16. int categoryid = 1;  
  17. String temp1 = request.getParameter("category_id");  
  18. if (DataOptUtil.isNotNull(temp1)) {  
  19.     categoryid = Integer.parseInt(temp1);  
  20. }  
  21. PageModel<News> pm=dao.findByPager(pageNo,Constant.PAGE_SIZE);  
  22. request.setAttribute("pm",pm);  
  23. request.setAttribute("pageNo", Integer.valueOf(pageNo));  
  24. request.setAttribute("pageSize", Constant.PAGE_SIZE);  
  25. request.getRequestDispatcher("/index.jsp").forward(request,response);  
  26. %></span>  

 index.jsp

Java代码  收藏代码
  1. <span style="font-size: medium;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://javacrazyer.iteye.com/tags/pager" prefix="w"%>  
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  4. <%  
  5. String path = request.getContextPath();  
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11.   <head>  
  12.     <base href="<%=basePath%>">  
  13.       
  14.     <title>My JSP 'index.jsp' starting page</title>  
  15.     <meta http-equiv="pragma" content="no-cache">  
  16.     <meta http-equiv="cache-control" content="no-cache">  
  17.     <meta http-equiv="expires" content="0">      
  18.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.     <meta http-equiv="description" content="This is my page">  
  20.     <!--  
  21.     <link rel="stylesheet" type="text/css" href="styles.css">  
  22.     -->  
  23.   </head>  
  24.     
  25.   <body>  
  26.    <h3>新闻列表</h3><hr/>  
  27.    <table>  
  28.    <tr><td>新闻编号</td><td>新闻标题</td><td>新闻内容</td></tr>   
  29.    <c:forEach items="${pm.datas}" var="news">  
  30.    <tr><td>${news.id}</td><td>${news.name }</td><td>${news.detail}</td></tr>  
  31.    </c:forEach>  
  32.    </table>  
  33.    <w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp" recordCount="${pm.recordCount}"/>  
  34.   </body>  
  35. </html></span>  

 实际运行出来的效果



虽然自定义标签使用成功了,但总不可能每次开发项目都写下这个类和加上TLD文件吧,比较简洁的方式就是将编译类编译好的class文件和tld一起打成jar包,以后直接导入到项目lib中就可以使用了

 

具体步骤:将整个目录com/javacrazyer/web/tag/PagerTag.class放到一个目录中去,同时将META-INF拷贝到与com目录相同的目录下,最后将WEB-INF下的pager.tld拷贝到MET-INF下


META-INF中的文件
 

最后将com文件夹与META-INF文件选中右键添加到压缩文件,选中ZIP压缩格式



改名为jar后缀后确定,这样在同一目录就会多出一个jar来了


 

 

以后只要在需要的地方导入该分页JAR包,并且在网页上

<%@taglib uri="http://javacrazyer.iteye.com/tags/pager" prefix="w"%>

 <w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp" 

 

转载:http://javacrazyer.iteye.com/blog/815082    感谢JavaCrazyer的分享。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. windows环境下sqlmap安装

    由于SQLMap是利用Python语言写的,所以需要将Python这个语言环境给安装上,以下是详细安装过程:准备工作:(1) Windows7/8/10操作系统;(2) Python2.7.11;(3) SQLMapStep1. Python2.7.11下载: 下载地址:https://www.python.org/downloads/ Step2. Python2.7.…...

    2024/4/20 8:52:15
  2. 还不会Rxjava响应式编程框架设计,先从这篇文章入手

    一.Rxjava是什么 Rxjava在GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。通俗来说,Rxjava是一…...

    2024/4/19 16:22:17
  3. Andorid-的面试题

    转自:http://blog.csdn.net/cym492224103/article/details/38417927前言最近才开的博客,希望大家多多关注,andorid开发也做了3年有余了,也面试多家企业,借此机会分享一下,我们中遇到过的问题以及解决方案吧,希望能够对正在找工作的andoird程序员有一定的帮助。学完本人博…...

    2024/4/12 19:46:06
  4. 使用Python扩展lldb

    Xcode集成了LLDB,进一步简化了程序调试流程。虽然LLDB很强大,但是它的命令很有限。所幸的是,lldb包含了对python的支持,使得lldb的拓展成为可能。本人在开发过程中很喜欢使用image lookup 命令,但是苦于每次只能执行一条,相当耗时,因此一直想要找到一种批量执行的方法。…...

    2024/5/3 12:23:48
  5. Redis面试题(2020最新版)

    文章目录概述什么是RedisRedis有哪些优缺点为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快数据类型Redis有哪些数据类型Redis的应用场景持久化什么是Redis持久化?Redis 的持久化机制是什么?各自的优缺点?如何选择合适的持久…...

    2024/4/26 2:17:19
  6. 深入理解BodyTagSupport和TagSupport 包括SKIP_PAGE, EVAL_PAGE等

    博客分类: web 前端 标签库的接口和类的继承关系 答:表现形式一: a. 接口的继承关系: ☉ interface javax.servlet.jsp.tagext.JspTag ☉ interface javax.servlet.jsp.tagext.SimpleTag ☉ interface javax.servlet.jsp.tagext.Tag ☉ interface javax.servlet.jsp.tagex…...

    2024/4/26 13:18:01
  7. 「每天一个知识点」精讲设计模式面试专题

    前言: 设计模式的分类 设计模式分为三类 创建型设计模式与对象创建有关包括单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式 结构型设计模式结构性设计模式是从程序的结构上解决模块之间的耦合问题,包括适配器模式,代理模式,装饰模式,外观模式,桥接模式,组…...

    2024/4/12 19:45:46
  8. Sqlmap基础(二)之Mysql和Mssql的注入

    Mysql数据库的注入 测试注入点:http://bbb.com/view.asp?id=1 sqlmap.py –u “http://aaa.com/view.asp?id=1”测试后发现是mysql数据库。 常用指令:is-dba当前用户是否有权限 dbs 查询所有数据库 current-db 网站当前数据库 users 所有数据库用户 current-user当前数据…...

    2024/5/3 17:37:30
  9. MAC--PPTP教程

    第一步点击DocK-系统设置第二步点击网络,进入网络设置第三步点击+号-创建新服务,创建新的网络连接第四步接口-选-类型-选-PPTP服务名称-选-然后点击-创建第五步进入设置页面-服务器地址点击查看虚拟IP列表账户名称-输入试用帐号或是你已充值开通的帐号,输入完后点击“鉴定设…...

    2024/4/12 19:46:41
  10. (三)TagtSupport类简介

    TagtSupport类简介 TagSupport类主要属性介绍 A.parent属性:代表嵌套了当前标签的上层标签的处理类 B.pageContex属性:代表Web应用中javax.servlet.jsp.PageContext对象TagSupport添加自定义属性 在使用自定义标签时,通常会希望在标签中使用一些属性值来达到不同的显示效果…...

    2024/4/12 19:47:01
  11. DLNA开发

    最近在基于dlna开源库重新实现dlna服务,对于手机端来说主要提供ControlPoint+媒体文件HttpServer功能。调研了国内APP和友商的实现,以使用libupnp和Cling的居多,部分使用Platinum;Cling Java开发的,对于APP来说容易导入,缺陷就是github上现在不再维护了;Libupnp以C实现,…...

    2024/4/18 23:13:25
  12. 如何在Kali Linux下使用sqlmap攻击服务器数据库的内容 获取用户名和密码 登陆它的服务器

    题外话:这里添加一个通过域名获取IP的命令Sqlmap是一款开源的命令行自动SQL注入工具。它能够对多种主流数据库进行扫描支持,基于Python环境。它主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。SQLMAP配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得…...

    2024/4/12 19:46:31
  13. iOS音频采集过程中的音效实现

    1、背景 在移动直播中, 声音是主播和观众互动的重要途径之一, 为了丰富直播的内容,大家都会想要在声音上做一些文章, 在采集录音的基础上玩一些花样。 比如演唱类的直播间中, 主播伴随着背景音乐演唱. 这时有些主播就会希望能够给自己声音增加混响的效果, 营造出在舞台剧场等环…...

    2024/4/12 19:46:31
  14. ssm面试题总结 spring springmvc面试题 理解spring

    1.你如何理解Spring?具体来说Spring是一个轻量级的容器,用于管理业务相关对象的。核心功能主要为:IOC,AOP,MVC。IOC:控制反转,将对象的创建过程交给容器,让容器管理对象的生命周期如创建,初始化,销毁等。AOP:面向切面编程,对关注点进行模块化,通过对某一功能点进行编…...

    2024/4/20 23:36:49
  15. java自定义标签获得session等一些属性

    自定义标签的主要接口类 TagSupport 使用最为频繁的类,可设置属性。 BodyTagSupport 可以处理body体部分的内容,使用不是很多。 SimpleTagSupport 简单标签实现类,是JSP2.0以后添加的新类,可以快速开发自定义标签。JspTag接口: 所有的标…...

    2024/4/12 19:46:51
  16. Sqlmap 用户手册 使用教程

    sqlmap用户手册说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。===================================================================当给sqlmap这么一个url (http://192.168.136.131/sqlmap/mysql/get_int.php?id=1) 的时候,它会:1、判…...

    2024/4/20 1:10:52
  17. 微信开放平台应用签名获取教程

    在微信开放平台申请相关应用接口的时候,要求一个应用签名的东西!还有在一些平台申请相关服务也需要,比如在个推在推送配置!下面介绍获取方法1、首先下载安装安卓应用签名获取的APKhttps://share.weiyun.com/55MsELw2、找到需要获取的那个APP进去查看复制(需要获取应用签名…...

    2024/4/9 8:21:49
  18. Android面试题含答案

    面试的时候总会遇到一些各种各样的面试题,而且这些面试题很多都是关于平时容易疏忽的理论方面的,所以整理一份Android高级开发工程师面试集锦,对照这些问题进行复习,将会事半功倍。从基础到中级在高级,从Android到java,记录下来有需要的时候多复习复习,也希望能帮到有需要…...

    2024/4/12 19:46:41
  19. iOS蓝牙开发框架

    iOS支持了蓝牙4.0后,很多智能硬件开始通过蓝牙与手机进行通讯互交,比如蓝牙秤,各种蓝牙医疗设备等。每个设备有不同的型号,且不断迭代更新,软件如何支持多种设备,如何区分多个设备,并分别对不同的设备进行控制,我给大家分享一个我总结的蓝牙开发框架。 核心蓝牙控制采用…...

    2024/4/26 15:07:06
  20. 进阶的sqlmap用法(参数讲解)

    进阶的sqlmap用法参数讲解1>探测等级: --level 5--level 5 指的是需要执行的测试等级一共有5个等级(1-5) 不加 level 时,默认是15级包含的payload最多,会自动破解出cookie、XFF等头部注入,相对应他的速度也比较慢。level=2 http cookie会测试level=3 http user-agent/…...

    2024/4/9 8:21:45

最新文章

  1. [信息收集]-端口扫描--Nmap

    端口号 端口号的概念属于计算机网络的传输层&#xff0c;标识这些不同的应用程序和服务而存在的。通过使用不同的端口号&#xff0c;传输层可以将接收到的数据包准确地传递给目标应用程序。 80&#xff1a;HTTP&#xff08;超文本传输协议&#xff09;用于Web浏览器访问网页 …...

    2024/5/3 18:13:22
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 谷粒商城实战(008 缓存)

    Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第151p-第p157的内容 简介 数据库承担落盘&#xff08;持久化&#xff09;工作 拿map做缓存 这种是本地缓存&#xff0c;会有一些问题 分布…...

    2024/5/3 1:39:35
  4. 理解 Golang 变量在内存分配中的规则

    为什么有些变量在堆中分配、有些却在栈中分配&#xff1f; 我们先看来栈和堆的特点&#xff1a; 简单总结就是&#xff1a; 栈&#xff1a;函数局部变量&#xff0c;小数据 堆&#xff1a;大的局部变量&#xff0c;函数内部产生逃逸的变量&#xff0c;动态分配的数据&#x…...

    2024/5/1 13:25:19
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57