<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Thinking

    快樂編程,開心生活
    posts - 21, comments - 27, trackbacks - 0, articles - -5
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    ?1 public ? void ?doDownLoad(HttpServletRequest?request,?HttpServletResponse?response,?
    ?2 ????????????String?absolutePath)? {
    ?3 ????????
    ?4 ???????? // 設(shè)置響應(yīng)頭信息
    ?5 ????????response.setContentType( " application/octet-stream;charset=UTF-8 " );?
    ?6 ????????log.debug( " GET:? " ? + ?absolutePath);
    ?7 ????????
    ?8 ????????String?str? = ?FilePathParseUtil.getFileNameByPath(absolutePath);
    ?9 ???????? // 調(diào)用自定義的編碼函數(shù),解決不同瀏覽器上對(duì)漢字編碼的處理
    10 ????????str? = ? this .encodeFileName(request,?str) == null ? str: this .encodeFileName(request,?str);
    11 ???????? // 設(shè)置response頭信息,從而顯示正確的文件名,并彈出另存對(duì)話框
    12 ????????response.setHeader( " Content-Disposition " ,? " attachment;?filename= " ?
    13 ???????????????? + ?str);
    14 ????????OutputStream?out? = ? null ;
    15 ???????? try {
    16 ???????????? // 從response得到輸出流,從而向客戶端寫出文件
    17 ????????????out? = ?response.getOutputStream();
    18 ????????}
    catch (IOException?e) {
    19 ????????????log.error( " output?stream?is?null " );
    20 ????????????e.printStackTrace();
    21 ????????}

    22 ???????? this .doDownLoad(out,?absolutePath);
    23 ????}

    24 ????
    25 ???? /**
    26 ?????*?根據(jù)不同瀏覽器對(duì)文件名進(jìn)行編碼
    27 ?????*? @param ?request?客戶端請(qǐng)求
    28 ?????*? @param ?fileName?文件名
    29 ?????*? @return ?編碼后的文件名
    30 ????? */

    31 ???? public ?String?encodeFileName(HttpServletRequest?request,?String?fileName) {???
    32 ????????String?agent? = ?request.getHeader( " USER-AGENT " );
    33 ???????? try {
    34 ???????????? if ?( null ? != ?agent? && ? - 1 ? != ?agent.indexOf( " MSIE " ))? {???
    35 ???????????????? return ?URLEncoder.encode(fileName,? " UTF-8 " );???
    36 ????????????}
    else ? if ?( null ? != ?agent? && ? - 1 ? != ?agent.indexOf( " Mozilla " ))? {???
    37 ???????????????? return ? " =?UTF-8?B? " +
    38 ???????????????????????? new ?String(
    39 ????????????????????????????????Base64.encodeBase64(
    40 ????????????????????????????????????fileName.getBytes( " UTF-8 " )
    41 ????????????????????????????????)
    42 ????????????????????????)? + ? " ?= " ;???
    43 ????????????}
    ? else ? {???
    44 ???????????????? return ?fileName;???
    45 ????????????}

    46 ????????}
    catch (UnsupportedEncodingException?e) {
    47 ???????????? return ? null ;
    48 ????????}

    49 ????}
    ??

    posted @ 2007-02-07 14:32 lixw 閱讀(249) | 評(píng)論 (0)編輯 收藏

    來自telio.be的JS:

    ?1/*?Licence:
    ?2*???Use?this?however/wherever?you?like,?just?don't?blame?me?if?it?breaks?anything.
    ?3*
    ?4*?Credit:
    ?5*???If?you're?nice,?you'll?leave?this?bit:
    ?6*
    ?7*???Class?by?Pierre-Alexandre?Losson?--?http://www.telio.be/blog
    ?8*???email?:?plosson@users.sourceforge.net
    ?9*/

    10function?refreshProgress()
    11{
    12????UploadMonitor.getUploadInfo(updateProgress);
    13}

    14
    15function?updateProgress(uploadInfo)
    16{
    17????if?(uploadInfo.inProgress)
    18????{
    19????????document.getElementById('uploadbutton').disabled?=?true;
    20????????document.getElementById('file1').disabled?=?true;
    21
    22????????var?fileIndex?=?uploadInfo.fileIndex;
    23
    24????????var?progressPercent?=?Math.ceil((uploadInfo.bytesRead?/?uploadInfo.totalSize)?*?100);
    25
    26????????document.getElementById('progressBarText').innerHTML?=?'upload?in?progress:?'?+?progressPercent?+?'%';
    27
    28????????document.getElementById('progressBarBoxContent').style.width?=?parseInt(progressPercent?*?3.5)?+?'px';
    29
    30????????window.setTimeout('refreshProgress()',?1000);
    31????}

    32????else
    33????{
    34????????document.getElementById('uploadbutton').disabled?=?false;
    35????????document.getElementById('file1').disabled?=?false;
    36????}

    37
    38????return?true;
    39}

    40
    41function?startProgress()
    42{
    43????document.getElementById('progressBar').style.display?=?'block';
    44????document.getElementById('progressBarText').innerHTML?=?'upload?in?progress:?0%';
    45????document.getElementById('uploadbutton').disabled?=?true;
    46
    47????//?wait?a?little?while?to?make?sure?the?upload?has?started?..
    48????window.setTimeout("refreshProgress()",?1500);
    49????return?true;
    50}

    51

    一個(gè)可以有其他頁面引用的進(jìn)度條頁面:
    ?1<%
    ?2????String?path?=?request.getContextPath();
    ?3????String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    ?4%>
    ?5<script?src="<%=basePath%>common/js/upload.js">?</script>
    ?6<script?src="<%=basePath%>dwr/interface/UploadMonitor.js">?</script>
    ?7<script?src="<%=basePath%>dwr/engine.js">?</script>
    ?8<script?src="<%=basePath%>dwr/util.js">?</script>
    ?9<style?type="text/css">
    10????body?{?font:?11px?Lucida?Grande,?Verdana,?Arial,?Helvetica,?sans?serif;?}
    11????#progressBar?{?padding-top:?5px;?}
    12????#progressBarBox?{?width:?350px;?height:?20px;?border:?1px?inset;?background:?#eee;}
    13????#progressBarBoxContent?{?width:?0;?height:?20px;?border-right:?1px?solid?#444;?background:?#9ACB34;?}
    14</style>
    15
    16<div?id="progressBar"?style="display:?none;">
    17????<div?id="theMeter">
    18????????<div?id="progressBarText"></div>
    19????????<div?id="progressBarBox">
    20????????????<div?id="progressBarBoxContent"></div>
    21????????</div>
    22????</div>
    23</div>

    在dwr.xml?中的配置:

    ?1<?xml?version="1.0"?encoding="UTF-8"?>
    ?2<!DOCTYPE?dwr?PUBLIC?"-//GetAhead?Limited//DTD?Direct?Web?Remoting?2.0//EN"?
    ?3"http://getahead.ltd.uk/dwr/dwr20.dtd">
    ?4<dwr>
    ?5????<allow>
    ?6????????<create?creator="new"?javascript="UploadMonitor"?scope="script">
    ?7????????????<param?name="class"?value="be.telio.mediastore.ui.upload.UploadMonitor"/>
    ?8????????</create>
    ?9????????<convert?converter="bean"?match="be.telio.mediastore.ui.upload.UploadInfo"/>
    10????</allow>
    11</dwr>

    在web.xml中增加如下對(duì)DwrServlet的配置:

    ?1<servlet>
    ?2????<servlet-name>dwr-invoker</servlet-name>
    ?3????<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    ?4????<init-param>
    ?5??????<param-name>debug</param-name>
    ?6??????<param-value>false</param-value>
    ?7????</init-param>
    ?8????<init-param>
    ?9??????<param-name>pollAndCometEnabled</param-name>
    10??????<param-value>true</param-value>
    11????</init-param>
    12????<init-param>
    13??????<param-name>allowGetForSafariButMakeForgeryEasier</param-name>
    14??????<param-value>true</param-value>
    15????</init-param>
    16????<load-on-startup>2</load-on-startup>
    17??</servlet>
    18
    19??<servlet-mapping>
    20????<servlet-name>dwr-invoker</servlet-name>
    21????<url-pattern>/dwr/*</url-pattern>
    22??</servlet-mapping>

    posted @ 2007-02-07 14:28 lixw 閱讀(3606) | 評(píng)論 (1)編輯 收藏

    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    ### direct messages to file hibernate.log ###
    #log4j.appender.file=org.apache.log4j.FileAppender
    #log4j.appender.file.File=hibernate.log
    #log4j.appender.file.layout=org.apache.log4j.PatternLayout
    #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    ### set log levels - for more verbose logging change 'info' to 'debug' ###
    log4j.rootLogger=info, stdout

    #hibernate log level
    log4j.logger.org.hibernate=error

    #struts log level
    #log4j.logger.org.apache.struts=error

    #spring log level
    #log4j.logger.org.springframework=error

    #oscache log level
    log4j.logger.com.opensymphony.oscache=error

    ?

    posted @ 2007-02-07 14:19 lixw 閱讀(761) | 評(píng)論 (0)編輯 收藏

    利用spring在同一頁面提交多個(gè)Form,填充多個(gè)FormBean。

    http://opensource.atlassian.com/confluence/spring/display/COOK/Forms+-+Multiple+forms+on+the+same+page

    posted @ 2007-02-07 09:37 lixw 閱讀(500) | 評(píng)論 (0)編輯 收藏

    昨天看了一天的EJB,才剛剛對(duì)EJB的流程有了一點(diǎn)了解,現(xiàn)在總結(jié)出來,請(qǐng)大家多多指教:

    1、創(chuàng)建自己的Bean(現(xiàn)在我只學(xué)習(xí)了一個(gè)會(huì)話Bean的例子),其中包含商務(wù)方法的實(shí)現(xiàn);

    (2--5的操作可由容器自動(dòng)完成,如WebLogic中的Build EJB,如果在MyEclipse中,可以在生成Bean的時(shí)候選擇是用XDoclet自動(dòng)生成以下接口)

    2、創(chuàng)建遠(yuǎn)程接口(繼承自EJBObject),其中包括商務(wù)方法的空實(shí)現(xiàn)(必須拋出遠(yuǎn)程異常),客戶端通過該接口與EJB對(duì)象交互,

    ??? 它的具體實(shí)現(xiàn)由EJB容器供應(yīng)商實(shí)現(xiàn),實(shí)現(xiàn)的對(duì)象就是EJB對(duì)象,它擁有對(duì)實(shí)際Bean的引用;

    3、創(chuàng)建Home接口(繼承自EJBHome),其中至少包含一個(gè)create()方法,這個(gè)方法返回EJB對(duì)象,并拋出遠(yuǎn)程異常,

    ??? 它的作用相當(dāng)于EJB對(duì)象的生成庫;

    (4和5是可選的操作,本地用戶可以通過這些接口而不是遠(yuǎn)程接口來調(diào)用Bean)

    4、創(chuàng)建本地接口(繼承自EJBLocalObject),方法跟遠(yuǎn)程接口中的相當(dāng),只是不需要拋出遠(yuǎn)程異常;

    5、創(chuàng)建本地Home接口(繼承自EJBLocalHome),方法跟Home接口相當(dāng),同樣不需要拋出遠(yuǎn)程異常;

    6、如果采用自動(dòng)生成接口的話,同時(shí)會(huì)在META-INF生成下生成多個(gè)XML配置文件:

    ??ejb-jar.xml:它是EJB規(guī)范中要求的配置,是容器無關(guān)的。下面是一個(gè)實(shí)際配置的例子

    ?1 < ejb-jar >
    ?2 ?? < enterprise-beans >
    ?3
    ?4 <! -配置會(huì)話Bean- >
    ?5 ???? < session >
    ?6 ?????? < ejb-name > HelloBean </ ejb-name >
    ?7 ?????? < home > bean.HelloHome </ home >
    ?8 ?????? < remote > bean.HelloObject </ remote >
    ?9 ?????? < ejb-class > bean.HelloBean </ ejb-class >
    10 ?????? < session-type > Stateless </ session-type >
    11 ?????? < transaction-type > Container </ transaction-type >
    12 ???? </ session >
    13
    14 ???? < entity >
    15 <! -配置實(shí)體Bean- >
    16 ???? </ entity >
    17 ?? </ enterprise-beans >
    18 </ ejb-jar >
    19

    ?還有一個(gè)與特定容器相關(guān)的配置文件:

    如WebLogic中配置文件為weblogic-ejb-jar.xml,下面是一個(gè)實(shí)際配置的例子:

    1 < weblogic-ejb-jar >
    2 ?? < weblogic-enterprise-bean >
    3 ???? < ejb-name > HelloBean </ ejb-name >
    4 ???? < stateless-session-descriptor >
    5 ???? </ stateless-session-descriptor >
    6 ?????? < jndi-name > ejb.helloJNDI </ jndi-name >
    7 ?? </ weblogic-enterprise-bean >
    8 ? < weblogic-ejb-jar >

    在Jboss則會(huì)有相應(yīng)的配置文件。

    7、現(xiàn)在我們看到我們的Bean、Home接口、EJBObject接口已經(jīng)與特定的命名綁定;

    8、現(xiàn)在客戶端要調(diào)用Bean中的某個(gè)商務(wù)方法:

    • 通過JNDI查找到Home對(duì)象,獲得它的引用;
    • Home對(duì)象是EJB對(duì)象的生成庫,由它創(chuàng)建生成新的EJB對(duì)象;
    • 客戶端調(diào)用EJB對(duì)象的商務(wù)方法;
    • EJB對(duì)象將請(qǐng)求委托給實(shí)際的Bean;
    • Bean實(shí)現(xiàn)商務(wù)方法。

    ?

    posted @ 2007-02-06 17:33 lixw 閱讀(638) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 亚洲AⅤ永久无码精品AA| 亚洲人成人无码.www石榴| 亚洲国产综合人成综合网站00| 99久久免费精品视频| 一级特黄录像免费播放中文版| 久久综合图区亚洲综合图区| 免费观看无遮挡www的视频| 最新久久免费视频| 亚洲天堂中文字幕在线观看| 亚洲综合图色40p| 真人做A免费观看| 一区二区三区免费视频网站| 亚洲精品无码成人片久久不卡 | 亚洲视频在线免费看| 成年性生交大片免费看| 九九99热免费最新版| 国产午夜亚洲精品不卡免下载| 亚洲AV综合色区无码一区| 久久久久亚洲AV无码专区网站 | 亚洲欧洲免费无码| 亚洲国产成人无码av在线播放| 亚洲成A人片77777国产| 国产成人免费片在线观看| 免费无遮挡无码永久视频| 中文字幕免费视频精品一| 一区二区三区视频免费观看| 成人免费网站视频www| 国产亚洲精品第一综合| 含羞草国产亚洲精品岁国产精品| 亚洲精华国产精华精华液网站| ASS亚洲熟妇毛茸茸PICS| 国产亚洲中文日本不卡二区| 亚洲国产精品VA在线看黑人| 国产亚洲高清不卡在线观看| 亚洲精品成人片在线观看精品字幕| 国产亚洲精aa成人网站| 亚洲美女又黄又爽在线观看| 免费久久精品国产片香蕉| 91精品免费在线观看| 国产成在线观看免费视频| 亚洲免费观看视频|