当前位置: 首页 > news >正文

怎么在别人网站上做锚文本链接wordpress 多条件查询数据库

怎么在别人网站上做锚文本链接,wordpress 多条件查询数据库,德阳网站开发熊掌号,界面十分好看的网站目录 1.生成Excel表格 1.依赖设置 2.代码#xff1a; 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章#xff1a; 需求描述#xff1a;项目审批完毕后#xff0c;需要发送邮件通知相关人员#xff0c;并且要附带数据库表生成的…目录 1.生成Excel表格 1.依赖设置 2.代码 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章 需求描述项目审批完毕后需要发送邮件通知相关人员并且要附带数据库表生成的Excel表格这就要求不光是邮件发送功能还要临时生成Excel表格做为附件 1.生成Excel表格 使用huTool工具包的Excel表格生成功能 1.依赖设置 dependency     groupIdcn.hutool/groupId     artifactIdhutool-all/artifactId     version5.7.22/version /dependency dependency     groupIdorg.apache.poi/groupId     artifactIdpoi-ooxml/artifactId     version5.2.2/version /dependency Hutool-all中包含了Hutool的所有工具类由于需要生成Excel文件需要依赖poi 2.代码 Overridepublic void publish(xxxxxxPublishVo publishVo) {..................................................../*** 生成Excel表格*///在内存操作写到输出流中ExcelWriter writer ExcelUtil.getWriter(true);//自定义标题别名writer.addHeaderAlias(projectCode, xx编号);writer.addHeaderAlias(projectName, xx名称);writer.addHeaderAlias(targetType, xx类型);writer.addHeaderAlias(targetName, xx名称);writer.addHeaderAlias(targetForMp, xxxx目标);writer.addHeaderAlias(symbols, xx限制符);//获取数据QpmxxxxTargetMg query new QpmxxxxTargetMg();query.setProjectCode(publishVo.getProjectCode());ListxxxxxxListDTO data selectxxxxxxByCondition(query);//整理数据以便于生成Excel表格ListObject dataNew new ArrayList();SetString stageCollectSet new HashSet();for (xxxxxxListDTO target: data){ListxxxxxxTargetMgStage stageList target.getxxxxxxStageList();MapString, Object addProperties new HashMap();for (xxxxxxMgStage stage: stageList){if (!stageCollectSet.contains(stage)){stageCollectSet.add(stage.getStage());//给Excel增加列writer.addHeaderAlias(stage.getStage(), stage.getStage() 目标);}//为对象动态增加属性addProperties.put(stage.getStage(), stage.getStageTarget());}//生成新的包含了新增字段的对象Object targetNew ReflectUtil.getTarget(target, addProperties);dataNew.add(targetNew);}//只保留别名的数据writer.setOnlyAlias(true);writer.write(dataNew,true);ByteArrayOutputStream outputStream new ByteArrayOutputStream();// excel写入到输出流writer.flush(outputStream,true);........................................................................... 上述代码中调用了工具类ReflectUtil给对象动态增加属性。由于数据中有子类需要获取到子类中的某个字段并生成Excel表格所以Excel表格构造就需要对数据对象进行改造简单来说就是需要给对象动态增加新的属性(成员对象的属性)如下所示示例 把studentList里面的关键属性数据新增给Test类 示例不是很合适凑合着用吧 class Test {     private String class;     .............................................     private ListStudent studentList; } 工具类ReflectUtil用于给对象动态增加新的属性 import com.google.common.collect.Maps; import net.sf.cglib.beans.BeanGenerator; import net.sf.cglib.beans.BeanMap; import org.apache.commons.beanutils.PropertyUtilsBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map;/*** 为实体类动态增加属性用于生成Excel表格时的特殊情况例如表格中的列需要动态增加*/ public class ReflectUtil {static Logger logger LoggerFactory.getLogger(ReflectUtil.class);public static Object getTarget(Object dest, MapString, Object addProperties) {// get property mapPropertyUtilsBean propertyUtilsBean new PropertyUtilsBean();PropertyDescriptor[] descriptors propertyUtilsBean.getPropertyDescriptors(dest);MapString, Class propertyMap Maps.newHashMap();for (PropertyDescriptor d : descriptors) {if (!class.equalsIgnoreCase(d.getName())) {propertyMap.put(d.getName(), d.getPropertyType());}}// add extra propertiesfor (Map.EntryString, Object entry : addProperties.entrySet()) {propertyMap.put(entry.getKey(), entry.getValue().getClass());} // addProperties.forEach((k, v) - propertyMap.put(k, v.getClass()));// new dynamic beanDynamicBean dynamicBean new DynamicBean(dest.getClass(), propertyMap);// add old valuefor (Map.EntryString, Class entry : propertyMap.entrySet()) {try {// filter extra propertiesif (!addProperties.containsKey(entry.getKey())) {dynamicBean.setValue(entry.getKey(), propertyUtilsBean.getNestedProperty(dest, entry.getKey()));}} catch (Exception e) {logger.error(e.getMessage(), e);}};// add extra valuefor (Map.EntryString, Object entry : addProperties.entrySet()) {try {dynamicBean.setValue(entry.getKey(), entry.getValue());} catch (Exception e) {logger.error(e.getMessage(), e);}};Object target dynamicBean.beanMap;return target;}public static class DynamicBean {/*** 目标对象*/private Object target;/*** 属性集合*/private BeanMap beanMap;public DynamicBean(Class superclass, MapString, Class propertyMap) {this.target generateBean(superclass, propertyMap);this.beanMap BeanMap.create(this.target);}/*** bean 添加属性和值** param property* param value*/public void setValue(String property, Object value) {beanMap.put(property, value);}/*** 获取属性值** param property* return*/public Object getValue(String property) {return beanMap.get(property);}/*** 获取对象** return*/public Object getTarget() {return this.target;}/*** 根据属性生成对象** param superclass* param propertyMap* return*/private Object generateBean(Class superclass, MapString, Class propertyMap) {BeanGenerator generator new BeanGenerator();if (null ! superclass) {generator.setSuperclass(superclass);}BeanGenerator.addProperties(generator, propertyMap);return generator.create();}} } 至此我们就生成了Excel表格并且把数据写入到了输出流中。 下面我们需要从输出流中拿到Excel表格数据并做为邮件的附件发送出去。 2.邮件发送 1.邮件发送功能实现-带附件 Spring Email 抽象的核心是 JavaMailSender接口通过实现JavaMailSender接口把 Email 发送给邮件服务器由邮件服务器实现邮件发送的功能。 Spring 自带了一个 JavaMailSender的实现 JavaMailSenderImpl。SpringBoot 应用在发送 Email 之前我们需要在配置文件中对JavaMailSender进行属性配置这样就可以利用Springboot的自动装配机制将 JavaMailSenderImpl 装配为 Spring容器的一个 bean。 spring.mail.host: xxxxxxx.com # 设置端口 spring.mail.port: 25 # 设置用户名 spring.mail.username: xxxxxxxxxx # 设置密码该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码 spring.mail.password: xxxxxxxxx # 设置是否需要认证如果为true,那么用户名和密码就必须的 # 如果设置false可以不设置用户名和密码当然也得看你的对接的平台是否支持无密码进行访问的。 spring.mail.properties.mail.smtp.auth: false # STARTTLS[1]  是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接TLS或SSL而不是另外使用一个端口作加密通信。 spring.mail.properties.mail.smtp.starttls.enable: true spring.mail.properties.mail.smtp.starttls.required: fasle spring.mail.properties.mail.imap.starttls.socketFactory.fallback: false spring.mail.properties.mail.smtp.starttls.socketFactory.class: com.ey.model.MailCommand 继上面完整的Excel生成代码现在继续写邮件发送代码 Autowiredprivate JavaMailSender springMailSender; Overridepublic void publish(xxxxxxPublishVo publishVo) {//........这里不再复制上面的代码只从Excel表格写入输出流开始.........// excel写入输出流writer.flush(outputStream,true);//邮件附件名称String fileName String.format(制定xx目标-%s.xlsx,UUID.randomUUID());//这个地方无需再配置springboot自动装配配置信息在nacos配置中心 // springMailSender.setDefaultEncoding(UTF-8); // springMailSender.setHost(mx.goertek.com); // springMailSender.setPort(25); // springMailSender.setProtocol(JavaMailSenderImpl.DEFAULT_PROTOCOL); // springMailSender.setUsername(tims.sysgoertek.com); // springMailSender.setPassword(Khkd0804); // Properties p new Properties(); // p.setProperty(mail.smtp.timeout, 25000); // p.setProperty(mail.smtp.auth, true); // p.setProperty(mail.smtp.socketFactory.class, javax.net.ssl.SSLSocketFactory); // springMailSender.setJavaMailProperties(p);MimeMessage mimeMessage springMailSender.createMimeMessage();System.getProperties().setProperty(mail.mime.splitlongparameters, false);MimeMessageHelper messageHelper null;try {messageHelper new MimeMessageHelper(mimeMessage, true, UTF-8);} catch (MessagingException e) {throw new RuntimeException(e);}try {LoginUser userInfo UserUtil.getCurrentUser(); // String currentUserEmail userInfo.getEmaila(); // messageHelper.setFrom(currentUserEmail);messageHelper.setFrom(mailUserName);//设置收件人String[] emailArr publishVo.getEmails().replaceAll(\\s, ).split(,);messageHelper.setTo(emailArr);//设置抄送人if (!StringUtils.isBlank(publishVo.getCcEmails())){String[] ccEmailArr publishVo.getCcEmails().replaceAll(\\s, ).split(,);messageHelper.setCc(ccEmailArr);}messageHelper.setSubject(项目- publishVo.getProjectName().concat(: 制定品质目标完毕));messageHelper.setText(项目- publishVo.getProjectName().concat(: 制定品质目标完毕));try {//messageHelper.addInline(doge.gif, new File(xx/xx/doge.gif));messageHelper.addAttachment(MimeUtility.encodeWord(fileName,utf-8,B), new ByteArrayResource(outputStream.toByteArray()));} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}springMailSender.send(mimeMessage);} catch (MessagingException e) {throw new RuntimeException(e);} 2.踩过的坑 上述邮件发送功能实现过程中踩过的坑 1.附件名中文乱码问题 附件的名字是中文发送成功后在邮件中的附件名字中文乱码怎样解决这个问题 1. 设置系统值 System.setProperty(mail.mime.splitlongparameters, false); 2. 这里在创建对象的时候定义编码格式(utf-8) MimeMessageHelper messageHelper new MimeMessageHelper(mes, true, utf-8); 3. 其次在添加附件的时候附件名是需要定义编码 messageHelper.addAttachment(MimeUtility.encodeWord(附件名,utf-8,B), 附件输入流)); 3.参考文章 使用hutool工具进行导入导出excel表格_hutool excel-CSDN博客 springboot实现excel生成并且通过邮件发送 - 哔哩哔哩
http://www.pierceye.com/news/328810/

相关文章:

  • 美团先做网站还是app学生网站建设的总结与评价
  • 网站建设代理网站wordpress微博
  • dw建设网站视频宁波seo优化项目
  • 网站里添加百度地图浙江网站建设公司
  • php网站开发最新需求排名优化百度
  • 网站制作的电话智慧校园信息门户网站建设
  • 网站备案申请福田企业网站优化方案
  • 企业网站seo怎么做有空间站的国家
  • Linux网站建设总结网站建设目的确定
  • 怎么做网站的内部链接wordpress 写php页面跳转
  • 推广自己的网站网页设计代码html文件怎么查
  • 网站在线制作软件邯郸公众号小程序制作
  • 网站后台生成静态页面天津百度推广电话号码
  • 网站单个页面301跳转湖南省建设局网站
  • 潮州网站建设十堰seo招聘
  • 企业网站建设公司公司系统优化的方法
  • 网站开发与sparkwordpress default
  • 品牌网站建设帮你大蝌蚪北京做网站建设的公司排名
  • 中国建设第一平台网站网络网站建设10大指标
  • 书画院网站源码网站主题模板下载不了
  • 邢台制作网站网上申报流程
  • 做网站的困难做的网站有营销效果吗
  • 高端集团网站建设公司做网站开发的有外快嘛
  • 网站服务器防火墙设置惠州网络推广公司哪家好
  • 做网站根据内容生成pdfwordpress自媒体二号
  • 临沂网站开发不会写代码怎么做网站
  • 怎么做加密货币网站wordpress 多域名登陆
  • 做网站的过程做网站公司广州
  • 女人动漫做受网站wordpress如何作页面
  • 做网站导航栏素材图建筑设计网站制作