Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
地環(huán)境:Tomcat 6、Windows 10、Java 1.7、myeclipse 10
一、使用方法
1.1 Tomcat 部署靜態(tài)頁面
參考鏈接:https://blog.csdn.net/qq_32786873/article/details/79609314
二、使用錯(cuò)誤
2.1 503 Service Unavailable
原因:
2.2 The web application [/project-name] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
或者The web application [/project-name] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
可能存在的問題
實(shí)現(xiàn)ServletContextListener,然后再contextDestroyed()方法中添加如下代碼:
Enumeration drivers=DriverManager.getDrivers();
while (drivers.hasMoreElements()) {
Driver driver=drivers.nextElement();
try {
DriverManager.deregisterDriver(driver);
logger.info(String.format(“deregistering jdbc driver: %s”, driver));
} catch (SQLException e) {
e.printStackTrace();
logger.error(String.format(“deregistering jdbc driver: %s”, driver));
}
}
最后在web.xml中注冊(cè)自己的監(jiān)聽器,問題解決。
2.3 lib1.so: lib2.so: 無法打開共享對(duì)象文件: 沒有那個(gè)文件或目錄
(1)如果共享庫文件安裝到了/lib或/usr/lib目錄下, 那么需執(zhí)行一下ldconfig命令
(2)
# cat /etc/ld.so.conf include ld.so.conf.d/*.conf # echo "/usr/local/lib" >> /etc/ld.so.conf # ldconfig
(3) export LD_LIBRARY_PATH=…/webapps/項(xiàng)目名稱/WEB-INF/classes
參考鏈接:https://www.cnblogs.com/Anker/p/3209876.html
myeclipse修改代碼后無法實(shí)時(shí)加載到tomcat
暫未解決
三、原理
概述
HTTP server主要用來給瀏覽器等客戶端提供靜態(tài)資源的訪問功能,還有代理服務(wù)器、負(fù)載均衡等功能。當(dāng)然,通過CGI/Servlet技術(shù),也可以將處理過的動(dòng)態(tài)內(nèi)容通過HTTP Server分發(fā),但是一個(gè)HTTP Server始終只是把服務(wù)器上的文件如實(shí)的通過HTTP協(xié)議傳輸給客戶端。
而tomcat屬于application server,也是綁定服務(wù)器IP并監(jiān)聽TCP端口。它實(shí)現(xiàn)了部分HTTP server的功能,沒有nginx和Apache的功能豐富。主要用于處理動(dòng)態(tài)內(nèi)容。沒有提供java EE規(guī)范,如下圖:
架構(gòu)
兩大核心部分connector(連接器)和container(容器)。
tomcat的work目錄是工作目錄,在瀏覽器訪問jsp=》java=》.class。tomcat定時(shí)掃描work目錄,不是實(shí)時(shí)的,因此修改jsp文件后不會(huì)立馬生效,可以立即刪除work目錄。
針對(duì)由jsp轉(zhuǎn)換成的java文件,比如my-jsp.java,tomcat編譯支持的文件大小最大為64k。改進(jìn):1.把jsp中的業(yè)務(wù)邏輯寫入單獨(dú)的類,在jsp中通過調(diào)用這個(gè)類的靜態(tài)方法來執(zhí)行;2.將jsp頁面中的js提取出來放到單獨(dú)的js文件內(nèi)。
AJP協(xié)議:二進(jìn)制協(xié)議
客戶端< - http / s->代理< - http / s - >應(yīng)用
VS
客戶端< - http / s->代理< - AJP - >應(yīng)用
方法一:
輸入命令
nohup ./catalina.sh run &
顯示為:
[1]8579
如何關(guān)掉?
輸入命令查看進(jìn)程號(hào)
ps -ef |grep tomcat
顯示處root 456 33345 99。。。省略
其中33345為端口號(hào)
輸入命令結(jié)束進(jìn)程 kill -9 進(jìn)程號(hào)
kill -9 33345
方法二:
啟動(dòng)方式
(1)Catania
(2)startup
使用startup方式啟動(dòng)tomcat,tomcat運(yùn)行不受shell影響。
Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use
方法一:進(jìn)入tomcat bin目錄執(zhí)行shutdown.sh或者shutdown.bat。
方法二:進(jìn)一步排查——任務(wù)管理器或者命令行kill殺掉Java、tomcat相關(guān)進(jìn)程,重啟eclipse。
tomcat 調(diào)優(yōu)
動(dòng)靜分離
nginx+tomcat,使用nginx實(shí)現(xiàn)靜態(tài)資源的訪問,tomcat處理jsp。
tomcat線程池
打開tomcat的server.xml
配置Executor
??<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4" maxIdLeTime="60000"/>
參數(shù)解釋
name
給執(zhí)行器(線程池)起一個(gè)名字
namePrefix
指定線程池中的每一個(gè)線程的name前綴
maxThreads
線程池中最大的線程數(shù)量
假設(shè):請(qǐng)求的數(shù)量超過了“750”,這將不是意味著將maxThreads屬性值設(shè)置為“750”,它的最好解決方案是使用“Tomcat集群”。
也就是說,如果有“1000”請(qǐng)求,兩個(gè)Tomcat實(shí)例設(shè)置“maxThreads=500”,而不在單Tomcat實(shí)例的情況下設(shè)置maxThreads=1000。
minSpareThreads
線程池中允許空閑的線程數(shù)量(多余的線程都?xì)⑺溃?/p>
maxIdLeTime
一個(gè)線程空閑多久算是一個(gè)空閑線程
其他的配置其實(shí)閱讀官方文檔是最好的。
<Connector port="8081" protocol="HTTP/1.1" executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" enableLookups="false"/>
enableLookups="false"
關(guān)閉dns解析,減少性能損耗
minProcessors
服務(wù)器啟動(dòng)時(shí)創(chuàng)建的最少線程數(shù)
maxProcessors
最大可以創(chuàng)建的線程數(shù)
acceptCount=“1000”
線程池中的線程都被占用,允許放到隊(duì)列中的請(qǐng)求數(shù)
maxThreads=“3000”
最大線程數(shù)
minSpareThreads=“20”
最小空閑線程數(shù),這里是一直會(huì)運(yùn)行的線程
和壓縮有關(guān)系的配置
通過修改tomcat的運(yùn)行模式
BIO
Tomcat8以下版本,默認(rèn)使用的就是BIO(阻塞式IO)模式。
對(duì)于每一個(gè)請(qǐng)求都要?jiǎng)?chuàng)建一個(gè)線程來進(jìn)行處理,不適合高并發(fā)
APR(Apache Portable Runtime)
是Tomcat生產(chǎn)環(huán)境運(yùn)行的首選方式
如果操作系統(tǒng)未安裝apr或者apr路徑未指到Tomcat默認(rèn)可識(shí)別的路徑,
則apr模式無法啟動(dòng),自動(dòng)切換啟動(dòng)nio模式。
所以必須要安裝apr和native,直接啟動(dòng)就支持apr
apr是從操作系統(tǒng)級(jí)別解決異步IO問題,apr的本質(zhì)就是使用jni(java native interface)
技術(shù)調(diào)用操作系統(tǒng)底層的IO接口,所以需要提前安裝所需要的依賴
提升Tomcat對(duì)靜態(tài)文件的處理性能,當(dāng)然也可以采用動(dòng)靜分離。
禁用AJP連接器 Apache JServer Protocol
使用Nginx+tomcat的架構(gòu),所以用不著AJP協(xié)議,所以把AJP連接器禁用
Linux 下修改 TOMCAT_HOME/bin/catalina.sh,在其中加入,可以放在 CLASSPATH=下面:
JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m"
windows 下修改 TOMCAT_HOME/bin/catalina.bat,在其中加入,可以放在 set CLASSPATH=下面:
set JAVA_OPTS=-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m
這些參數(shù)在我們學(xué)習(xí) JVM 部分文章時(shí)已經(jīng)都認(rèn)識(shí)過了,不過這里還是簡(jiǎn)單介紹下:
-server:?jiǎn)⒂?JDK的 server 版本;
-Xms:Java虛擬機(jī)初始化時(shí)堆的最小內(nèi)存,一般與 Xmx配置為相同值,這樣的好處是GC不必再為擴(kuò)展內(nèi)存空間而消耗性能;
-Xmx:Java虛擬機(jī)可使用堆的最大內(nèi)存;
-XX:PermSize:Java虛擬機(jī)永久代大小;
-XX:MaxPermSize:Java虛擬機(jī)永久代大小最大值;
線程池配置
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="100" maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/>
name:線程池名稱,用于 Connector中指定。 namePrefix:所創(chuàng)建的每個(gè)線程的名稱前綴,一個(gè)單獨(dú)的線程名稱為
namePrefix+threadNumber。 maxThreads:池中最大線程數(shù)。
minSpareThreads:活躍線程數(shù),也就是核心池線程數(shù),這些線程不會(huì)被銷毀,會(huì)一直存在。
maxIdleTime:線程空閑時(shí)間,超過該時(shí)間后,空閑線程會(huì)被銷毀,默認(rèn)值為6000(1分鐘),單位毫秒。
maxQueueSize:在被執(zhí)行前最大線程排隊(duì)數(shù)目,默認(rèn)為Int的最大值,也就是廣義的無限。除非特殊情況,這個(gè)值不需要更改,否則會(huì)有請(qǐng)求不會(huì)被處理的情況發(fā)生。
prestartminSpareThreads:?jiǎn)?dòng)線程池時(shí)是否啟動(dòng) minSpareThreads部分線程。默認(rèn)值為false,即不啟動(dòng)。
threadPriority:線程池中線程優(yōu)先級(jí),默認(rèn)值為5,值從1到10。
className:線程池實(shí)現(xiàn)類,未指定情況下,默認(rèn)實(shí)現(xiàn)類為org.apache.catalina.core.StandardThreadExecutor。如果想使用自定義線程池首先需要實(shí)現(xiàn)
org.apache.catalina.Executor接口。
線程池配置完成后需要在 Connector 中指定:
<Connector executor="tomcatThreadPool" ...
<Connector port="9027" ........... compression="on" compressionMinSize="2048" connectionTimeout="20000" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" ................ />
compression 打開壓縮功能
compressionMinSize 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB
compressableMimeType 壓縮類型
connectionTimeout 定義建立客戶連接超時(shí)的時(shí)間. 如果為 -1, 表示不限制建立客戶連接的時(shí)間
參考鏈接:1.Tomcat 性能優(yōu)化——
https://gitbook.cn/books/5ad3405a1b0f9f64ea5f7758/index.html#writeCommentDiv
本信息
姓名:七分簡(jiǎn)歷
年齡:28歲
電話:186****7462
郵箱:449375****@qq.com
經(jīng)驗(yàn):6年
意向:java軟件工程師
教育背景
時(shí)間:2012-09 - 2014-06
學(xué)校:【七分簡(jiǎn)歷】師范大學(xué) | 專業(yè):計(jì)算機(jī)軟件 | 學(xué)歷:大專
工作經(jīng)歷
工作時(shí)間:2014-08 - 2017-07
公司名稱:【七分簡(jiǎn)歷】信息科技有限公司 | 所在部門: | 所在崗位:java軟件工程師
工作描述:
職 位:Java軟件工程師
工作描述:
1.參與項(xiàng)目的需求分析,研究項(xiàng)目功能實(shí)現(xiàn)細(xì)節(jié)。
2.根據(jù)新項(xiàng)目開發(fā)進(jìn)度和任務(wù)分配,開發(fā)相應(yīng)軟件;根據(jù)需求及時(shí)修改完善軟件。
3.在編程中積累解決問題的經(jīng)驗(yàn)?zāi)芨咝乙?guī)范書寫代碼。
4.在自行編寫完成時(shí)進(jìn)行軟件的測(cè)試和修復(fù)。
工作時(shí)間:2015-09 - 2016-04
公司名稱:【七分簡(jiǎn)歷】網(wǎng)絡(luò)科技有限公司 | 所在部門: | 所在崗位:java軟件開發(fā)實(shí)習(xí)工程師
工作描述:
在該公司,作為java開發(fā)實(shí)習(xí)生主要負(fù)責(zé)的工作有:
1、按照軟件開發(fā)管理規(guī)范等的要求,根據(jù)主管分配的任務(wù),參與程序開發(fā)、測(cè)試以及文檔準(zhǔn)備工作;
2、根據(jù)業(yè)務(wù)需求參與業(yè)務(wù)系統(tǒng)的系統(tǒng)設(shè)計(jì)或開發(fā)實(shí)現(xiàn)模塊的設(shè)計(jì)、編碼和單元測(cè)試工作;
項(xiàng)目經(jīng)歷
項(xiàng)目時(shí)間:2015-04 - 2016-04
項(xiàng)目名稱:鮮果之家 | 項(xiàng)目工具:Windows
項(xiàng)目描述:
項(xiàng)目介紹
此電商系統(tǒng)屬于B2C模式的一個(gè)水果商城,該商城致力于為客戶提供選購、定制、配送、售后的全方位服務(wù)。商城主要功能模塊有:用戶管理、角色管理、權(quán)限管理、商品管理、公告管理、產(chǎn)品交易,訂單管理,退款管理,賬目統(tǒng)計(jì),有問有答,界面管理。
根據(jù)項(xiàng)目需求,采用 Spring, SpringMVC,Mybatis作為底層框架,對(duì)項(xiàng)目進(jìn)行一個(gè)分布式開發(fā),采用MySql數(shù)據(jù)庫,使用SVN對(duì)代碼進(jìn)行版本控制。使用Ajax異步以及正則表達(dá)式驗(yàn)證輸入信息是否合法;使用fileupload組件實(shí)現(xiàn)用戶信息的文件上傳,使用init函數(shù)實(shí)現(xiàn)用戶管理、商品管理、角色管理四個(gè)模塊的分頁操作;使用BootStrap 設(shè)計(jì)后臺(tái)管理界面;使用 Shiro 實(shí)現(xiàn)用戶登錄的權(quán)限控制;使用redis緩存技術(shù)高效獲取顯示列表數(shù)據(jù),以減輕服務(wù)器所承載的壓力。
我的職責(zé)
主要負(fù)責(zé)后臺(tái)管理模塊:用戶管理、商品管理、角色管理、公告管理,根據(jù)所需求的業(yè)務(wù)進(jìn)行開發(fā),代碼編寫,實(shí)現(xiàn)功能
項(xiàng)目時(shí)間:2015-07 - 2016-04
項(xiàng)目名稱:夠潮網(wǎng)女性購物商城
項(xiàng)目描述:
項(xiàng)目介紹
“夠潮網(wǎng)女性購物商城”針對(duì)廣大女性消費(fèi)群眾,為她們提供便利,從而提高生活水平的一個(gè)網(wǎng)上購物商城。該項(xiàng)目主要分為用戶管理、公告管理、商品類型管理、商品管理、商品屬性管理、評(píng)論管理、客戶管理、訂單管理、物流管理等模塊。
我的職責(zé)
1.對(duì)負(fù)責(zé)的模塊進(jìn)行分析和設(shè)計(jì)。主要采用UML的用例圖、順序圖和狀態(tài)圖。
2. 模塊管理:完成對(duì)該系統(tǒng)中各個(gè)模塊的管理。主要為CRUD操作。
3. 角色管理和用戶管理:除基本的CRUD操作外,主要為權(quán)限的管理;該系統(tǒng)采用RBAC模式實(shí)現(xiàn)權(quán)限管理。將權(quán)限
授予如普通管理員和超級(jí)管理員,再將角色分配給用戶的方式,實(shí)現(xiàn)對(duì)用戶的授權(quán);同時(shí)系統(tǒng)也可以對(duì)用戶直接進(jìn)行
授權(quán)。授權(quán)的具體實(shí)現(xiàn)采用DWR框架。
4. 工作流程:采用JBPM實(shí)現(xiàn)工作流程開發(fā)。
個(gè)人評(píng)價(jià)
1、為人穩(wěn)重踏實(shí),具有一定的邏輯思維能力,有較強(qiáng)的解決和分析問題能力;
2、工作能吃苦,做事積極、踏實(shí),能獨(dú)立完成功能模塊的開發(fā)。
3、有較強(qiáng)的自學(xué)能力,能較快熟悉新技術(shù)。
4、待人熱誠,能很好的與人溝通,具有較強(qiáng)的團(tuán)隊(duì)意識(shí),集體榮譽(yù)感及組織協(xié)調(diào)能力。
5、熟練使用SSM、SSH等主流框架技術(shù),對(duì)shiro框架有一定了解。
6、熟悉Bootscrap、EasyUI、jquery前端技術(shù)。
7、熟練SQLServer,MySQL數(shù)據(jù)庫,了解Oracle數(shù)據(jù)庫。
8、熟練掌握Tomcat服務(wù)器的安裝部署。
9、熟練使用MyEclipse、Eclipse等開發(fā)工具進(jìn)行開發(fā)。
個(gè)人技能
J2EE的主流框架SSH(hibernate,Struts2,Spring)
能運(yùn)用SVN,Maven的功具
SQL Server,MySQL,oracle
Tomcat,jboss
Eclipse,MyEclipse
HTML,JSP,jQuery,Ajax,div+css,echarts
oop
JUnit代碼的單元測(cè)試
linux常用的命令
了解io、多線程、集合
織良好的業(yè)務(wù)數(shù)據(jù)可以顯著改善關(guān)鍵的決策過程。使用MyEclipse Reports?工具來開發(fā)各種Web報(bào)表。在本教程中,您將學(xué)習(xí)到:
持續(xù)時(shí)間:30分鐘
沒有MyEclipse?立即下載
這里有兩種方法來創(chuàng)建報(bào)表Web項(xiàng)目。第一種方法是使用報(bào)表向?qū)韯?chuàng)建一個(gè)新的項(xiàng)目;第二種方法是添加報(bào)表Web Runtime Facet到一個(gè)現(xiàn)有的MyEclipse Web項(xiàng)目中。
注意:MyEclipse標(biāo)準(zhǔn)用戶不能使用報(bào)表功能。
(1)選擇File>New>Report Web Project。
(2)在項(xiàng)目名稱字段中輸入reportdemo,然后單擊下一步。
注意:本教程使用默認(rèn)的JavaEE 6版本;然而,在創(chuàng)建新的項(xiàng)目是JavaEE 7也是可行的。
創(chuàng)建一個(gè)新的報(bào)表Web項(xiàng)目
(3)配置項(xiàng)目文件夾結(jié)構(gòu),然后單擊下一步。
項(xiàng)目文件夾配置
(4)更改或接受默認(rèn)的Web模塊文件夾名稱,然后單擊下一步。
設(shè)置Web模塊的文件夾名稱
(5)配置部署設(shè)置,指定報(bào)表引擎的日志記錄級(jí)別,然后單擊完成。
指定報(bào)表引擎的日志記錄級(jí)別
報(bào)表項(xiàng)目結(jié)構(gòu)
您可以安裝報(bào)表Web Runtime facet到任何現(xiàn)有的MyEclipse Web項(xiàng)目中。
(1)右鍵單擊該項(xiàng)目,并選擇MyEclipse>Project Facets>Install MyEclipse Report Web Runtime Facet。
添加report web runtime facet
(2)完成向?qū)В缓髥螕鬎inish來更新項(xiàng)目。
當(dāng)向?qū)шP(guān)閉時(shí),系統(tǒng)會(huì)提示您打開MyEclipse Report Design視角,此時(shí)選擇Yes。否則,您打開視角只能通過選擇Window>Open Perspective>Other,然后選擇MyEclipse Report Design才能打開。
(1)選擇reportdemo項(xiàng)目,并選擇File>New>Report。(當(dāng)使用MyEclipse Report Design perspective時(shí)會(huì)出現(xiàn)報(bào)表工具欄選項(xiàng))
(2)在文件名稱字段中輸入demo_report.rptdesign。報(bào)表的擴(kuò)展名應(yīng)該被命名為.rptdesign。
(3)請(qǐng)選中生成報(bào)表訪問的網(wǎng)頁選項(xiàng),然后單擊下一步。
選擇項(xiàng)目報(bào)表
(4)從模板列表中選擇空白報(bào)表,然后單擊下一步。
選擇一個(gè)報(bào)表模板
下一個(gè)頁面,您可以創(chuàng)建一個(gè)示例JSP網(wǎng)頁來演示如何使用新的報(bào)表進(jìn)行工作。示例的樣本JSP網(wǎng)頁可以適當(dāng)配置一個(gè)鏈接到您的報(bào)表中,或者直接將其嵌入報(bào)表中。
注意:如果您不在此時(shí)選擇生成一個(gè)示例報(bào)表訪問頁面,以后可以隨時(shí)通過右鍵單擊該報(bào)表,并選擇MyEclipse>Generate Sample Report Access WebPage。
(5)使用默認(rèn)的文件夾位置,并輸入demo_report.jsp作為JSP文件名。
(6)選擇嵌入式報(bào)表查看器[JSP Tag]選項(xiàng),然后單擊Finish。
報(bào)表訪問的網(wǎng)頁選項(xiàng)
(7)為檢索報(bào)表數(shù)據(jù)創(chuàng)建一個(gè)JDBC數(shù)據(jù)源,這個(gè)示例使用MyEclipse Derby數(shù)據(jù)庫中的表。
數(shù)據(jù)組是一個(gè)從數(shù)據(jù)源檢索數(shù)據(jù)的集合。此數(shù)據(jù)將會(huì)顯示在一個(gè)報(bào)表中,本示例中使用的是SQL數(shù)據(jù)源。
(1)在數(shù)據(jù)資源管理器中,右鍵單擊數(shù)據(jù)集,并選擇New Data Set。
創(chuàng)建一個(gè)新的數(shù)據(jù)集
(2)選擇在上一節(jié)中創(chuàng)建的數(shù)據(jù)源。
(3)接受默認(rèn)的MyEclipse SQL Select Query數(shù)據(jù)集類型。
(4)在數(shù)據(jù)集名稱字段中輸入Customers,然后單擊下一步。
選擇數(shù)據(jù)源
(5)輸入以下SQL查詢,然后單擊Finish來執(zhí)行SQL查詢和創(chuàng)建數(shù)據(jù)集。
select CUSTOMERNAME, CONTACTFIRSTNAME, CONTACTLASTNAME, PHONE
from CLASSICCARS.CUSTOMER
數(shù)據(jù)集查詢編輯器
對(duì)該數(shù)據(jù)集進(jìn)行SQL查詢檢索數(shù)據(jù)。當(dāng)您輸入一個(gè)SQL查詢時(shí),查詢編輯器提供內(nèi)容輔助的模式和表名。您也可以在樹形視圖中雙擊一個(gè)表或列,并在編輯最后的地方插入查詢?cè)撛氐南薅Q。
如果創(chuàng)建數(shù)據(jù)集沒有問題,那么打開編輯數(shù)據(jù)集窗口,讓您進(jìn)一步自定義數(shù)據(jù)集。選擇Preview Results來顯示SQL查詢的數(shù)據(jù)結(jié)果。
數(shù)據(jù)集編輯器
下一個(gè)步驟就是將用戶界面元素添加到報(bào)表中,用于從Customers數(shù)據(jù)集中顯示數(shù)據(jù)。您可以通過右鍵單擊報(bào)表頁面來將報(bào)表元素插入到Report Designer中,然后從插入菜單中選擇一個(gè)項(xiàng)目。或者在Palette視圖中使用palette。Report Designer底部的標(biāo)簽允許您切換視圖。
Report Designer
首先報(bào)表使用palette來添加表格元素。然后,從報(bào)表的數(shù)據(jù)表的列集合元素中綁定列。對(duì)于理解表功能是很重要的:
(1)打開Palette來查看報(bào)表元素。
Palette視圖
(2)從palette中拖出一個(gè)表元素,并將其放在編輯器的報(bào)表中。
(3)指定3列、1行,然后單擊下一步。
創(chuàng)建新表
(4)從數(shù)據(jù)集的下拉列表中選擇Customers,點(diǎn)擊全選,然后單擊Finish。表的3列、1行會(huì)出現(xiàn)在編輯器中。
綁定數(shù)據(jù)集
(5)在數(shù)據(jù)資源管理器中,展開Customers數(shù)據(jù)集,查看您在查詢中指定的列。
(6)從數(shù)據(jù)資源瀏覽器中拖動(dòng)CUSTOMERNAME列,并將其放置在詳細(xì)行的第一個(gè)單元格來綁定表格列的數(shù)據(jù)集元素。
表格中的詳細(xì)行定義了數(shù)據(jù)集的列和它們表格中每一個(gè)數(shù)據(jù)行的顯示順序。在已完成的報(bào)表中,詳細(xì)列的每一行數(shù)據(jù)都會(huì)在數(shù)據(jù)集中被重復(fù)。
拖動(dòng)一個(gè)數(shù)據(jù)集列并放到表格單元格中
當(dāng)CUSTOMERNAME列表從數(shù)據(jù)集被拖放到詳細(xì)行時(shí),在布局編輯器中加入[CUSTOMERNAME]數(shù)據(jù)綁定元素。此外標(biāo)題行在新的[CUSTOMERNAME]數(shù)據(jù)元素上面,布局編輯器添加列標(biāo)題標(biāo)簽,例如CUSTOMERNAME。
在表中的數(shù)據(jù)和標(biāo)簽要素
(7)拖放PHONE列在詳細(xì)行的第二個(gè)單元格中。
(8)拖放CONTACTFIRSTNAME列在詳細(xì)行的第三個(gè)單元格中。
(9)拖放CONTACTLASTNAME列在詳細(xì)行的第三個(gè)單元格中,下面是CONTACTFIRSTNAME。
該報(bào)表的布局應(yīng)該如下所示。
將Customer聯(lián)系信息添加到表中
(10)為了確認(rèn)該報(bào)表的數(shù)據(jù)和表格布局是正確的,在Report Designer底部單擊預(yù)覽選項(xiàng)。
預(yù)覽報(bào)表數(shù)據(jù)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。