jsf和jsp_带有JSF,Servlet和CDI的DynamicReports和JasperReports

jsf和jsp

在此示例中,我将展示如何将DynamicReport和JasperReports与Servlet和CDI集成。

工具:

  • TIBCO Jaspersoft Studio-6.0.4。最终版
  • Eclipse Luna服务版本2(4.4.2)。
  • WildFly 8.x应用程序服务器。

这是Eclipse上项目层次结构的屏幕截图。

2-DynamicReportsWithJSFServletsAndCDI

  1. pom.xml文件包含Servlets + JSF + CDI + DynamicReports所需的依赖项。
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ithinkisink</groupId><artifactId>DynamicReportsWithJSFServletsAndCDI</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>DynamicReportsWithJSFServletsAndCDI Maven Webapp</name><dependencies><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version><scope>provided</scope></dependency><dependency><groupId>javax.faces</groupId><artifactId>jsf-api</artifactId><version>2.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.enterprise</groupId><artifactId>cdi-api</artifactId><version>1.0</version><scope>provided</scope></dependency><dependency><groupId>net.sourceforge.dynamicreports</groupId><artifactId>dynamicreports-core</artifactId><version>4.0.0</version></dependency></dependencies><build><finalName>DynamicReportsWithJSFServletsAndCDI</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build>
    </project>
  2. 使用TIBCO Jaspersoft Studio创建一个简单的JRXML模板,其中包含一个图像,该图像随后将作为参数从DynamicReportsManagedBean动态传递到DynamicReports。
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Created with Jaspersoft Studio version 6.0.4.final using JasperReports Library version 6.0.4  -->
    <!-- 2015-12-04T17:15:43 -->
    <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Invoice" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4eedbb89-b4f6-4469-9ab6-f642a1688cf7"><property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/><style name="Title" forecolor="#FFFFFF" fontName="Times New Roman" fontSize="50" isBold="false" pdfFontName="Times-Bold"/><style name="SubTitle" forecolor="#CCCCCC" fontName="Times New Roman" fontSize="18" isBold="false" pdfFontName="Times-Roman"/><style name="Column header" forecolor="#666666" fontName="Times New Roman" fontSize="14" isBold="true"/><style name="Detail" mode="Transparent" fontName="Times New Roman"/><style name="Row" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman"><conditionalStyle><conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression><style mode="Opaque" backcolor="#EEEFF0"/></conditionalStyle></style><style name="Table"><box><pen lineWidth="1.0" lineColor="#000000"/><topPen lineWidth="1.0" lineColor="#000000"/><leftPen lineWidth="1.0" lineColor="#000000"/><bottomPen lineWidth="1.0" lineColor="#000000"/><rightPen lineWidth="1.0" lineColor="#000000"/></box></style><style name="Table_TH" mode="Opaque" backcolor="#FFFFFF"><box><pen lineWidth="0.5" lineColor="#000000"/><topPen lineWidth="0.5" lineColor="#000000"/><leftPen lineWidth="0.5" lineColor="#000000"/><bottomPen lineWidth="0.5" lineColor="#000000"/><rightPen lineWidth="0.5" lineColor="#000000"/></box></style><style name="Table_CH" mode="Opaque" backcolor="#CACED0"><box><pen lineWidth="0.5" lineColor="#000000"/><topPen lineWidth="0.5" lineColor="#000000"/><leftPen lineWidth="0.5" lineColor="#000000"/><bottomPen lineWidth="0.5" lineColor="#000000"/><rightPen lineWidth="0.5" lineColor="#000000"/></box></style><style name="Table_TD" mode="Opaque" backcolor="#FFFFFF"><box><pen lineWidth="0.5" lineColor="#000000"/><topPen lineWidth="0.5" lineColor="#000000"/><leftPen lineWidth="0.5" lineColor="#000000"/><bottomPen lineWidth="0.5" lineColor="#000000"/><rightPen lineWidth="0.5" lineColor="#000000"/></box><conditionalStyle><conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression><style backcolor="#D8D8D8"/></conditionalStyle></style><subDataset name="tableDataset" uuid="f13e6d36-5148-4ecc-bbe3-3035def80980"><queryString><![CDATA[]]></queryString></subDataset><parameter name="invoiceNo" class="java.lang.String"/><parameter name="billingCompanyName" class="java.lang.String"/><parameter name="billingCompanyAddress" class="java.lang.String"/><parameter name="billingCompanyFirstState" class="java.lang.String"/><parameter name="billingCompanySecondState" class="java.lang.String"/><parameter name="shippingName" class="java.lang.String"/><parameter name="shippingAddress" class="java.lang.String"/><parameter name="shippingFirstState" class="java.lang.String"/><parameter name="shippingSecondState" class="java.lang.String"/><parameter name="IMAGE_PATH" class="java.lang.String"/><queryString language="SQL"><![CDATA[]]></queryString><field name="itemNo" class="java.lang.String"/><field name="description" class="java.lang.String"/><field name="unitCost" class="java.lang.Double"/><field name="quantity" class="java.lang.Integer"/><group name="Gruppo1"><groupExpression><![CDATA[(int)($V{REPORT_COUNT}/15)]]></groupExpression><groupHeader><band/></groupHeader><groupFooter><band><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></band></groupFooter></group><title><band height="196" splitType="Stretch"><staticText><reportElement x="0" y="90" width="84" height="25" uuid="57aed2b1-4f4e-40a3-a6ad-54dae8dd4c5a"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textElement><font size="16" isBold="true"/></textElement><text><![CDATA[Bill to:]]></text></staticText><line><reportElement x="0" y="80" width="556" height="1" uuid="806ce5df-1219-4876-ae0c-ca7405b1f246"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement></line><staticText><reportElement x="400" y="90" width="84" height="25" uuid="139ebe8d-25b0-411e-986c-270015400874"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textElement><font size="16" isBold="true"/></textElement><text><![CDATA[Ship to:]]></text></staticText><staticText><reportElement x="415" y="10" width="50" height="20" uuid="0f86baff-6386-4f3f-b3fe-2388707babe8"/><box rightPadding="4"/><textElement textAlignment="Right"/><text><![CDATA[Date:]]></text></staticText><textField pattern="EEEEE dd MMMMM yyyy"><reportElement x="465" y="10" width="84" height="20" uuid="bb10dbe1-0a4f-4722-9953-c163b63cf979"/><textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression></textField><image hAlign="Center"><reportElement x="0" y="0" width="65" height="60" uuid="94883631-a913-43e2-b182-ab8d77d0181e"/><imageExpression><![CDATA[$P{IMAGE_PATH} + "/invoice_logo.png"]]></imageExpression></image><textField pattern="EEEEE dd MMMMM yyyy"><reportElement x="465" y="30" width="84" height="20" uuid="3836ce65-eca3-4cad-a6de-b1818def0a2b"/><textFieldExpression><![CDATA[$P{invoiceNo}]]></textFieldExpression></textField><staticText><reportElement x="415" y="30" width="50" height="20" uuid="0b3f9342-da78-4cfa-9fc5-2301c4749678"/><box rightPadding="4"/><textElement textAlignment="Right"/><text><![CDATA[Invoice #]]></text></staticText><staticText><reportElement x="95" y="0" width="210" height="25" uuid="e622555d-198b-4ccd-a4a1-c59c53304058"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textElement><font size="19" isBold="true"/></textElement><text><![CDATA[I think, I sink!]]></text></staticText><staticText><reportElement x="95" y="55" width="205" height="15" uuid="b8cc42fd-b569-497d-834d-7e854040ad18"/><text><![CDATA[+20 10 000 0000]]></text></staticText><staticText><reportElement x="95" y="25" width="205" height="15" uuid="c226e44d-3bb5-4145-b0b3-903bf1d79fde"/><text><![CDATA[Sesame street]]></text></staticText><staticText><reportElement x="95" y="40" width="205" height="15" uuid="b96f7183-44f8-43ad-ba60-43d8fbf50b6e"/><text><![CDATA[Sesame city]]></text></staticText><textField><reportElement x="0" y="115" width="150" height="15" uuid="7e9e0af2-08d1-4997-b3e1-971e74b1c8ad"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{billingCompanyName}]]></textFieldExpression></textField><textField><reportElement x="0" y="130" width="150" height="15" uuid="a0eaddab-ed2f-46fc-b9fc-d0d9747c6df3"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{billingCompanyAddress}]]></textFieldExpression></textField><textField><reportElement x="0" y="145" width="150" height="15" uuid="f9371f1e-125e-408d-a0f0-aa0ea5adc171"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{billingCompanyFirstState}]]></textFieldExpression></textField><textField><reportElement x="0" y="160" width="150" height="15" uuid="c14d7758-80e6-45d7-8526-797330e515d3"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{billingCompanySecondState}]]></textFieldExpression></textField><textField><reportElement x="400" y="160" width="140" height="15" uuid="a9baefea-45b3-4826-a81e-3572507eea6d"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{shippingSecondState}]]></textFieldExpression></textField><textField><reportElement x="400" y="145" width="140" height="15" uuid="338e1f40-9a03-4b77-aedc-568b1907628b"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{shippingFirstState}]]></textFieldExpression></textField><textField><reportElement x="400" y="130" width="140" height="15" uuid="54e6473f-44ef-4839-8f87-29e65af72561"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{shippingAddress}]]></textFieldExpression></textField><textField><reportElement x="400" y="115" width="140" height="15" uuid="1f093c2e-2d6f-403e-9c11-160dbaf82e6f"><property name="local_mesure_unitheight" value="pixel"/><property name="com.jaspersoft.studio.unit.height" value="px"/></reportElement><textFieldExpression><![CDATA[$P{shippingName}]]></textFieldExpression></textField></band></title><columnHeader><band height="24"><staticText><reportElement x="366" y="4" width="80" height="20" uuid="be792358-dade-4931-965d-fe4d4958b71c"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Quantity]]></text></staticText><rectangle><reportElement mode="Opaque" x="10" y="2" width="531" height="20" backcolor="#C0D4EC" uuid="ce42b0b0-0d12-48c1-8020-576969255150"/><graphicElement><pen lineColor="#666666"/></graphicElement></rectangle><staticText><reportElement x="430" y="3" width="111" height="18" uuid="95b85246-2e67-42d0-9e41-987314cddba0"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Price $]]></text></staticText><staticText><reportElement x="261" y="3" width="80" height="20" uuid="40050754-f800-4283-a0ed-64894f5652a2"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Unit Cost $]]></text></staticText><staticText><reportElement x="10" y="3" width="50" height="20" uuid="299467fd-8d2b-48b0-af5b-769cc9d9bb37"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Item]]></text></staticText><staticText><reportElement x="71" y="2" width="179" height="20" uuid="9818ad45-9dc2-4e62-821c-953f3801de84"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Description]]></text></staticText><staticText><reportElement x="347" y="3" width="80" height="20" uuid="f10ae7d8-7499-404a-a1ab-a2ce63b22b3b"/><textElement textAlignment="Center"><font size="12" isBold="false"/></textElement><text><![CDATA[Quantity]]></text></staticText></band></columnHeader><detail><band height="29"><textField><reportElement x="11" y="5" width="54" height="20" uuid="0cd6aa63-bd20-45fb-8543-51931badd2fc"/><textElement textAlignment="Left"/><textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression></textField><textField><reportElement x="70" y="5" width="180" height="20" uuid="1be950c3-370a-43fa-9510-2ee8db740774"/><textElement textAlignment="Left"/><textFieldExpression><![CDATA[$F{description}]]></textFieldExpression></textField><textField><reportElement x="261" y="5" width="80" height="20" uuid="3637c327-f832-4e7c-bb82-4cf41e607ca6"/><textElement textAlignment="Left"/><textFieldExpression><![CDATA[$F{unitCost}]]></textFieldExpression></textField><textField><reportElement x="347" y="5" width="80" height="20" uuid="e9bfe6dc-7101-4d22-90a7-4766122c4e8a"/><textElement textAlignment="Left"/><textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression></textField><textField><reportElement x="430" y="5" width="118" height="20" uuid="77c9d024-651d-4207-9f32-8637cd4dd449"/><textElement textAlignment="Left"/><textFieldExpression><![CDATA[$F{unitCost} * $F{quantity}]]></textFieldExpression></textField></band></detail><lastPageFooter><band height="177"><staticText><reportElement positionType="Float" x="-1" y="30" width="261" height="101" uuid="1a0d7088-5af7-4865-8be1-41ec5f51fb36"/><box><topPen lineWidth="1.1" lineStyle="Dashed"/><leftPen lineWidth="1.1" lineStyle="Dashed"/><bottomPen lineWidth="1.1" lineStyle="Dashed"/><rightPen lineWidth="1.1" lineStyle="Dashed"/></box><text><![CDATA[Your notes here]]></text></staticText><staticText><reportElement positionType="Float" mode="Opaque" x="0" y="147" width="556" height="30" backcolor="#E6E8E9" uuid="36aa233d-4305-48e6-974a-1bbf89bb3c8f"/><textElement textAlignment="Center" verticalAlignment="Middle"><font fontName="Serif" size="9" isItalic="true"/></textElement><text><![CDATA[THANKYOU FOR YOUR BUSINESS]]></text></staticText></band></lastPageFooter>
    </jasperReport>
  3. 创建一个Item类,它将成为包含要绑定到JRXML模板字段的数据的模型对象。 另外,我创建了一个InvoiceDetails类,该类具有将绑定到JRXML模板参数的数据。
    package com.ithinkisink.model;/*** * @author Belal**/
    public class Item {private String itemNo;private String description;private double unitCost;private int quantity;public Item(String itemNo, String description, double unitCost, int quantity) {super();this.itemNo = itemNo;this.description = description;this.unitCost = unitCost;this.quantity = quantity;}public String getItemNo() {return itemNo;}public void setItemNo(String itemNo) {this.itemNo = itemNo;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public double getUnitCost() {return unitCost;}public void setUnitCost(double unitCost) {this.unitCost = unitCost;}public int getQuantity() {return quantity;}public void setQuantity(int quantity) {this.quantity = quantity;}
    }
  4. DynamicReportsManagedBean将负责准备参数映射和包含将绑定到JRXML字段的Lis​​t <Item>的JRBeanCollectionDataSource。
    package com.ithinkisink.managedbean;import static net.sf.dynamicreports.report.builder.DynamicReports.report;import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;import javax.annotation.PostConstruct;
    import javax.enterprise.context.SessionScoped;
    import javax.inject.Named;
    import javax.servlet.ServletContext;import net.sf.dynamicreports.report.exception.DRException;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import com.ithinkisink.model.InvoiceDetails;
    import com.ithinkisink.model.Item;/*** * @author Belal**/
    @Named
    @SessionScoped
    public class DynamicReportsManagedBean implements Serializable {private static final long serialVersionUID = -1;private String invoiceName;private JRBeanCollectionDataSource beanCollectionDataSource;private Map<String, Object> parameters;@PostConstructpublic void init() {invoiceName="Invoice.jrxml";List<Item> itemList = new ArrayList<>(Arrays.asList(new Item("01", "Item 01 description", 1.1, 1), new Item("02", "Item 02 description", 2.2, 2),new Item("03", "Item 03 description", 3.3, 3)));beanCollectionDataSource = new JRBeanCollectionDataSource(itemList);parameters = (new InvoiceDetails("INV#01", "Billing Company", "Billing Company Add", "Billing Company State 1", "Billing Company State 2", "Shipping Name", "Shipping Address", "Shipping State 1", "Shipping State 2", 1000)).toMap();}/*** Preparing an output stream of the generated PDF invoice.* * @return*/public OutputStream getOS(ServletContext context, OutputStream outputStream) {parameters.put("IMAGE_PATH", context.getRealPath("/jasper/invoices"));InputStream is = context.getResourceAsStream("/jasper/invoices/" + invoiceName);try {report().setTemplateDesign(is).setDataSource(beanCollectionDataSource).setParameters(parameters).toPdf(outputStream);} catch (DRException e) {e.printStackTrace();}return outputStream;}// setters and getterspublic String getInvoiceName() {return invoiceName;}public void setInvoiceName(String invoiceName) {this.invoiceName = invoiceName;}public JRBeanCollectionDataSource getBeanCollectionDataSource() {return beanCollectionDataSource;}public void setBeanCollectionDataSource(JRBeanCollectionDataSource beanCollectionDataSource) {this.beanCollectionDataSource = beanCollectionDataSource;}public void setParameters(Map<String, Object> parameters) {this.parameters = parameters;}public Map<String, Object> getParameters() {return parameters;}
    }
  5. CDI使我们能够将DynamicReportsManagedBean的实例注入到DynamicReportsServlet。 Servlet将处理响应输出流,该输出将呈现从模板的DynamicReports创建的输出流。
    package com.ithinkisink.servlet;import java.io.IOException;
    import java.io.OutputStream;import javax.inject.Inject;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import com.ithinkisink.managedbean.DynamicReportsManagedBean;/*** * @author Belal**/
    public class DynamicReportsServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Injectprivate DynamicReportsManagedBean dynamicReportsManagedBean;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("application/pdf");OutputStream out = resp.getOutputStream();out = dynamicReportsManagedBean.getOS(getServletContext(), out);out.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doPost(req, resp);this.doGet(req, resp);}public void setDynamicReportsManagedBean(DynamicReportsManagedBean dynamicReportsManagedBean) {this.dynamicReportsManagedBean = dynamicReportsManagedBean;}public DynamicReportsManagedBean getDynamicReportsManagedBean() {return dynamicReportsManagedBean;}
    }
  6. 在将servlet添加到web.xml中时,我更喜欢老派。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name>DynamicReportsWithJSFServletsAndCDI Maven Webapp</display-name><servlet><description></description><display-name>DynamicReportsServlet</display-name><servlet-name>DynamicReportsServlet</servlet-name><servlet-class>com.ithinkisink.servlet.DynamicReportsServlet</servlet-class></servlet><servlet-mapping><servlet-name>DynamicReportsServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.xhtml</welcome-file></welcome-file-list>
    </web-app>
  7. index.xhtml包含一个指向servlet的<iframe>。
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"><h:head><title>DynamicReports with Servlets, JSF and CDI</title>
    </h:head><h:body><h:form><iframe name="receipt" height="600" id="theIFrame" width="100%"src="http://localhost:8080/DynamicReportsWithJSFServletsAndCDI" /></h:form>
    </h:body></html>
  8. 通过运行示例的最终输出。

    1-DynamicReportsWithJSFServletsAndCDI
  • 您可以从以下链接在我的Github上找到完整的示例: https : //github.com/belalgalal/Blogging/tree/master/DynamicReportsWithJSFServletsAndCDI

翻译自: https://www.javacodegeeks.com/2016/02/dynamicreports-jasperreports-jsf-servlet-cdi.html

jsf和jsp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336040.shtml

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

相关文章

接口隔离原则_设计模式的三大分类及六大原则

设计模式(Design pattern)代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式分为三大类&…

Leetcode 24. 两两交换链表中的节点

原题链接 题解&#xff1a; 1.头部会改变创建虚拟头结点 2.前两个点定义为a,b&#xff0c;c 3.p指向b,a指向c,b指向a ; p指向本段最后一个结点。 class Solution { public:ListNode* swapPairs(ListNode* head) {auto dummy new ListNode(-1);dummy->next head;for (a…

python 获取文件名_真实需求 | Python+os+openpyxl 批量获取Excel的文件名和最大行数...

1. 提出需求 这已经不知道是粉丝问我的第几个办公自动化的问题了&#xff0c;并且这些问题都是大家在学习和工作中碰到过的真实问题场景。其实从下图中已经可以很明确的看出别人的需求了&#xff0c;我这里就不用在赘述了&#xff0c;下面直接上思路吧&#xff01;2. 解题思路为…

apache ignite_从In Memory Data Grid,Apache Ignite快速入门

apache igniteIMDG或内存数据网格不是内存中关系数据库&#xff0c;NOSQL数据库或关系数据库。 它是另一种软件数据存储库。 数据模型分布在单个位置或多个位置的许多服务器上。 这种分布称为数据结构。 这种分布式模型被称为“无共享”架构。 IMDG具有以下特征&#xff1a; 所…

bvp解算器是什么_那些学习了编程的中学生,为什么会更可能成功?

来源 | 异步当你看到这个题目&#xff0c;或许会想&#xff0c;这不是搞笑吗&#xff1f;众所周知&#xff0c;高等数学是编程的基础和前提&#xff0c;而说起程序编写员&#xff0c;在普通人眼里就是数学学霸的代名词&#xff0c;人们往往会把它和那些数学天才的名字联系在一起…

maven与spring_与Spring和Maven签约首个SOAP服务

maven与spring1.简介 在本教程中&#xff0c;我们将学习使用JAX-WS&#xff0c;Spring和Maven实施合同优先的SOAP服务应用程序。 这是使用合同优先还是代码优先方法的更多设计决定。 在开发基于SOAP的Web服务应用程序时使用应用合同优先的方法最显着的好处是&#xff0c;可以在…

如何维持手机电池寿命_充电小知识:你知道如何正确充电吗?这几种充电方式最损害电池...

目前基本上大部分人都至少有一部智能手机&#xff0c;智能手机基本上都需要每日一充&#xff0c;你的充电方式会不会损伤电池呢&#xff1f;有部分消费者认为要等到手机电量耗尽后再充电&#xff0c;还有人认为手机充电要充至100%才能拔下来&#xff0c;有人觉得充电宝等产品给…

【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读

文章目录 英语积累为什么使用GAN系列网络进行开放集检测摘要1. 前言2. 相关工作开集检测基于GAN网络的开集检测基于暴露异常数据的开集检测 3. OpenGAN3.1 公式建模3.1.1 二分类方法存在问题如何解决 3.1.2 使用合成数据存在问题如何解决 3.1.3 OpenGAN3.1.4 模型验证 3.2 先前…

sso集成shiro_Keycloak SSO集成到jBPM和Drools Workbench中

sso集成shiro介绍 单一登录&#xff08;SSO&#xff09;和相关令牌交换机制正在成为Web上不同环境中身份验证和授权的最常见方案&#xff0c;尤其是在迁移到云中时。 本文讨论了Keycloak与jBPM或Drools应用程序的集成&#xff0c;以便使用Keycloak上提供的所有功能。 Keycloak…

jbpm 和 drools_jBPM和Drools工作台中的用户和组管理

jbpm 和 drools介绍 本文讨论了一项新功能&#xff0c;该功能允许使用集成在jBPM和Drools Workbenches中的直观友好的用户界面来管理应用程序的用户和组。 用户和组管理 在安装&#xff0c;设置和使用此功能之前&#xff0c;本文讨论了一些以前的概念&#xff0c;需要进一步理…

从事java编程技能要求_5道Java视频课程,提高您的编程技能

从事java编程技能要求作为Web开发人员&#xff0c;跟上技术知识可能会很棘手。 新技术似乎每天都在弹出&#xff0c;而基本技术也看到了重复迭代的浪潮&#xff0c;增加了新的功能。 Java开发人员应该做什么&#xff1f; 这是在线教育平台发挥作用的地方。 它们可以帮助您快速…

sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;*声明&#xff1a;《缺陷周话》栏目系列文章由奇安信代码卫士团队原创出品。未经许可&#xff0c;禁止转载。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。代码审计是使用静态分析发现源代码中安全缺陷的方法&…

idea添加jboss_如何将云持久存储添加到JBoss Cool Store

idea添加jboss我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 上个月&#xff0c;我们带来了一个完整的零售示例&#xff0c;其中的JBoss Cool Store运行在您的堆栈的OpenShift Enterprise层上&…

ssm影城项目_影场与属性访问器界面

ssm影城项目卡尔迪亚&#xff08;Carl Dea&#xff09;最近跟踪了我的一篇名为“ 保存内存”的博客文章&#xff01; 为属性使用阴影字段 。 在他的博客中&#xff0c;他建议使用称为“属性访问器”的接口来消除大量使用样板代码所需的样板代码。 卡尔还提到他尚未用大量数据测…

java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

java流写入数据库快速流媒体 当Java 8最终问世时&#xff0c;我和一些大学开始了一个开源项目&#xff0c;以利用Java 8的流库使整个Java / DB问题更进一步&#xff0c;以便将数据库表视为纯Java 8流。 速度诞生了&#xff01; 哇&#xff0c;现在我们可以做类型安全的数据库应…

小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题

摄像头仅仅是视频监控系统的一部分&#xff0c;即使摄像头完好无损&#xff0c;监控画面也可能会出现不显示、卡顿、丢失等情况。想要彻底解决网络监控的问题&#xff0c;往往需要排查各个连接设备才可以判断。下面我们就总结了10个问题&#xff0c;彻底解决网络监控的问题。一…

java对话_您应该保持联系的十大高级Java对话

java对话在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验&#xff0c;而不必坐下来。 在下面的文章中&#xff0c;我们收集了10位我们最喜欢的演讲者和主题&#xff0c;我们相信每个Java开发人员都应该注意。 获取爆米花&#xff0…

【WebRTC---源码篇】(三)Windows/Linux音视频采集封装模块

视频采集相关类图 DeviceInfo接口提供了设备枚举相关功能。 NumberOfDevices枚举设备个数。 GetDeviceName获取某个设备名称。 GetCapability枚举某个设备所支持的所有能力(VideoCaptureCapability: 分辨率,最大帧率,颜色类型) VideoCaptureModule视频采集模块的基类: …

java设计单词英译汉小助手_拣单词|第八期第3天:第521528个单词宝藏

宝藏坚持每天拣单词积累你的词汇宝藏打好英语学习基本功怎么学&#xff1f;每天预留15分钟&#xff0c;积累你的词汇宝藏&#xff01;每周一、二、三&#xff0c;发布新单词每周四、五、六&#xff0c;乱序复习单词周日测试(仅限入群的学员)遇到新单词&#xff0c;你可以&#…

spring多个视图解析器_在Spring中配置多个View解析器

spring多个视图解析器1.简介 在Spring中&#xff0c;提供了View Resolver来使用模型中可用的数据来解析视图&#xff0c;而无需与JSP&#xff0c;Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或多个View Resolver 。 2. Spring MVC应用程序…