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

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

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

    我的Blog我做主^_^

    走向一條通往JAVA的不歸路...

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      64 隨筆 :: 68 文章 :: 77 評(píng)論 :: 0 Trackbacks

    具體實(shí)現(xiàn):

             利用Filter的過(guò)濾功能把*.jsp過(guò)濾出來(lái),判斷是否存在對(duì)應(yīng)的.html文件,如果不存在對(duì)應(yīng)的.html文件,則將其內(nèi)容讀出寫入指定的.html文件,再跳轉(zhuǎn)到對(duì)應(yīng)的.html即可。如果存在對(duì)應(yīng)的.html文件,則直接跳轉(zhuǎn)到對(duì)應(yīng)的.html即可。

     

    代碼:

    JspFilter.java

     

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.URL;

     

    import javax.servlet.Filter;

    import javax.servlet.FilterChain;

    import javax.servlet.FilterConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequest;

    import javax.servlet.ServletResponse;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    public class JspFilter implements Filter {

     

        public void destroy() {

            // TODO 自動(dòng)生成方法存根

        }

     

        public void doFilter(ServletRequest request, ServletResponse response,

                FilterChain chain) throws IOException, ServletException {

     

            HttpServletRequest hreq = (HttpServletRequest) request;

            HttpServletResponse hresp = (HttpServletResponse) response;

     

            String name = hreq.getRequestURL().substring(

                        hreq.getRequestURL().lastIndexOf("/") + 1,

                        hreq.getRequestURL().lastIndexOf("."));

            if (hreq.getRequestURL().indexOf(".jsp") != -1 && (null == hreq.getParameter("type") || hreq.getParameter("type").equals(""))) {           

                    hresp.sendRedirect(hreq.getContextPath()+"/conversion?name="+hreq.getRequestURL());

                    return ;

            }

            chain.doFilter(request, response);

        }

     

        public void init(FilterConfig arg0) throws ServletException {

            // TODO 自動(dòng)生成方法存根

        }

    }

     

    ConversionServlet.java

     

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;

    import java.net.HttpURLConnection;

    import java.net.URL;

     

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    public class ConversionServlet extends HttpServlet {

     

        public ConversionServlet () {

            super();

        }

     

        public void destroy() {

            super.destroy(); // Just puts "destroy" string in log

            // Put your code here

        }

     

        public void doGet(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

     

            response.setContentType("text/html");

            PrintWriter out = response.getWriter();

            //----獲取請(qǐng)求的URL

            String reqTarget = request.getParameter("name");

            //----指定對(duì)應(yīng)JSPHTML名稱

            String name = reqTarget.substring(reqTarget.lastIndexOf("/") + 1,

                    reqTarget.lastIndexOf("."));

            //---判斷是否存在對(duì)應(yīng)的HTML文件

            File file = new File(request.getRealPath("/") + name + ".html");

           

            if (!file.exists()) {   //--------如果不存在對(duì)應(yīng)的HTML文件

                try {

                   

                    file.createNewFile();   //--------創(chuàng)建HTML文件

                    //-------JSP的內(nèi)容寫入對(duì)應(yīng)的HTML文件內(nèi)

                    InputStream in;

                    StringBuffer sb = new StringBuffer("");

                //----注意這里,不能直接訪問(wèn)請(qǐng)求的URL,如果直接訪問(wèn)的話,會(huì)陷入死循環(huán)

                    URL url = new java.net.URL(reqTarget.toString()+"?type=11");

                    HttpURLConnection connection = (HttpURLConnection) url

                            .openConnection();

                    connection.setRequestProperty("User-Agent", "Mozilla/4.0");

                    connection.connect();

                    in = connection.getInputStream();

                    java.io.BufferedReader breader = new BufferedReader(

                            new InputStreamReader(in, "GBK"));

                    String currentLine;

     

                    FileOutputStream fos = new FileOutputStream(file);

                    while ((currentLine = breader.readLine()) != null) {

                        sb.append(currentLine);

                        fos.write(currentLine.getBytes());

                    }

                    if (null != breader)

                        breader.close();

                    if (null != fos)

                        fos.close();

                    //---------------轉(zhuǎn)到與JSP對(duì)應(yīng)的HTML頁(yè)

                    response.sendRedirect(request.getContextPath()+"/"+name + ".html");

                } catch (Exception e) {

     

                    e.printStackTrace();

                }

            }else{

                //----------如果存在指定的HTML,直接跳轉(zhuǎn)到指定的HTML頁(yè)

                response.sendRedirect(request.getContextPath()+"/"+name + ".html");

            }

        }

        public void doPost(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

     

            doGet(request, response);

        }

        public void init() throws ServletException {

            // Put your code here

        }

    }

     

    WEB.XML配置:

     

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="2.4"

        xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

      <filter>

        <filter-name>jspfilter</filter-name>

        <filter-class>com.beanutil.JspFilter</filter-class>

      </filter>

      <filter-mapping>

        <filter-name>jspfilter</filter-name>

        <url-pattern>*.jsp</url-pattern>

      </filter-mapping>

      <servlet>

        <servlet-name>conversion</servlet-name>

        <servlet-class>com.beanutil.ConversionServlet </servlet-class>

      </servlet>

     

      <servlet-mapping>

        <servlet-name>conversion</servlet-name>

        <url-pattern>/conversion</url-pattern>

      </servlet-mapping>

    </web-app>

     

     



    posted on 2007-05-30 16:26 java_蟈蟈 閱讀(5927) 評(píng)論(23)  編輯  收藏

    評(píng)論

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2007-05-31 22:50 求個(gè)明白
    testservlet?name
    其中的testservlet是什么,從哪里來(lái)???????????????????????????????????????????????  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2007-05-31 23:09 求個(gè)明白
    在一個(gè)文件中有一個(gè)index.jsp如果在另一個(gè)文件下有一個(gè)同名的.jsp文件。那根本就不會(huì)訪問(wèn)到這個(gè).jsp文件,也就是說(shuō)你訪問(wèn)上面的兩個(gè).jsp文件,最后都只重定向到第一次生成的index.htm,對(duì)另一個(gè)文件下有一個(gè)同名的.jsp文件根本就訪問(wèn)不成功,也生成不了靜態(tài)的.html  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2007-05-31 23:29 求個(gè)明白
    呵呵,不知道說(shuō)清楚沒(méi)有!!!
    還有就是我的.jsp文件更新了以后,當(dāng)我再訪問(wèn)這個(gè).jsp文件的時(shí)候根本就沒(méi)有顯示出我更新后的內(nèi)容。
      回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2007-06-02 21:05 蟈蟈
    @求個(gè)明白
    這里的servlet是一個(gè)工具類,主要功能是把JSP文件生成對(duì)應(yīng)的HTML文件,當(dāng)然是你自己生成的了,有什么不明白的,可是MI我,我的QQ:49023500  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2007-06-02 21:07 蟈蟈
    @求個(gè)明白
    這個(gè)時(shí)候你在判斷條件里加上路徑就成了,例:對(duì)于view/index.jsp你可以先判斷是否徑里是否存在view,然后再判斷是否存在index,這樣不就可以了,希望與你共同探討
    我的QQ:49023500   回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2007-06-02 21:28 蟈蟈
    @求個(gè)明白
    我現(xiàn)在想整一個(gè)新聞發(fā)布系統(tǒng),呵呵,里面大概含有如下東西,1、權(quán)限,主要也就是為了整權(quán)限,呵呵,2、動(dòng)態(tài)生成靜態(tài),JSP生成HTML,也就是這兩個(gè)重要的東西了,再就是一些開(kāi)源的東西,當(dāng)然是能用到這里的東西了,呵呵,希望能與大家共同探討,共同學(xué)習(xí)......  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2007-06-03 18:40 求個(gè)明白
    加你Q了,一起研究..................................  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-04-17 14:31 我是新手
    大哥 testservlet?name
    是什么啊? 里面怎么寫啊?  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-04-17 23:48 java_蟈蟈
    @我是新手
    不好意思,我寫錯(cuò)了,應(yīng)該是conversion,你細(xì)看一下,應(yīng)該能看的出來(lái)  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2008-05-19 08:41 zs7456
    你這個(gè)太復(fù)雜了,還不如直接用URL重寫呢  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-05-21 16:00 jdlsfl
    學(xué)習(xí)  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-05-21 23:34 java_蟈蟈
    @zs7456
    謝謝你的到來(lái),學(xué)習(xí)了
    URL重寫是重寫了頁(yè)面的url。通俗的說(shuō)就是雖然地址欄里的是html結(jié)尾的url,但實(shí)際上訪問(wèn)的是后臺(tái)動(dòng)態(tài)jsp(php、asp)頁(yè)面;從這一點(diǎn)來(lái)講,我上面的是訪問(wèn)的HTML,后者是訪問(wèn)的動(dòng)態(tài)內(nèi)容

    置于URL重寫的信息,請(qǐng)參考:http://www.tkk7.com/sunbreak/archive/2007/03/22/105549.html 這里說(shuō)的很細(xì)了,我就不再寫了

    上面的只是個(gè)測(cè)試,具體的運(yùn)用,還看實(shí)際情況
      回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2008-06-25 12:23 kk
    如果更新JSP了怎么辦 會(huì)覆蓋原有的HTML嗎  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2008-06-25 12:25 fef
    我用了你上面的代碼 怎么生成的HTML里沒(méi)有數(shù)據(jù)  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2008-06-25 12:51 java_蟈蟈
    @kk
    謝謝你的到來(lái),如果不想覆蓋它,可在后臺(tái)生成HTML頁(yè),然后,把名稱記錄下來(lái),即可  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-06-25 12:53 java_蟈蟈
    你還需要仔細(xì)對(duì)照一下,我這里是沒(méi)有問(wèn)題的  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-09-18 10:06 毛毛蟲
    @fef
    這個(gè)我也試過(guò)了!
    原因并不難找,因?yàn)楫?dāng)你進(jìn)入的時(shí)候可能是默認(rèn)進(jìn)入到index.jsp頁(yè)面的,所以u(píng)rl就會(huì)變成 http://127.0.0.1:8080/project/ ,那樣的話這個(gè)路徑里面根本就沒(méi)有了index.jsp,他找不到 .jsp 了,并又沒(méi)有index.html,所以需要從新寫一個(gè)index.html,但是根本不存在index.jsp,所以往 index.html里寫入的就是空了
      回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-09-18 12:58 java_蟈蟈
    @毛毛蟲
    謝謝你的到來(lái)^_^  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2008-12-25 16:11 fei
    這個(gè)我用了 沒(méi)有問(wèn)題..謝謝分享...還有就是有漢字亂碼問(wèn)題...  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2009-03-25 12:28 hoohoney
    通過(guò)過(guò)濾器轉(zhuǎn)發(fā)所有的請(qǐng)求的jsp頁(yè),思路很好.有的時(shí)候需要這種功能,但有時(shí)也是沒(méi)有必要的  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2009-04-30 16:24 type
    怎么解析 .do形式的啊  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML 2012-08-22 09:37 zzy1225
    1:url后邊的參數(shù)不能繼續(xù)傳遞
    2:比如新聞?dòng)胠ist.jsp?id=001和list.jsp?id=002來(lái)區(qū)別不同的新聞,如果第一次訪問(wèn)的是001那將永遠(yuǎn)是001了。002過(guò)來(lái)沒(méi)法處理  回復(fù)  更多評(píng)論
      

    # re: 動(dòng)態(tài)JSP頁(yè)生成靜態(tài)HTML[未登錄](méi) 2013-04-28 15:12 小祝
    我把生成html的邏輯直接寫到filter里面行得通嗎?
    另外我是針對(duì).do轉(zhuǎn)換成html

    我的情況是執(zhí)行到
    in = connection.getInputStream();時(shí),就又調(diào)用filter了。
    而且因?yàn)橐呀?jīng)生成了空的html文件,說(shuō)文件已經(jīng)存在。
    當(dāng)然頁(yè)面顯示錯(cuò)誤。  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 麻豆成人久久精品二区三区免费| 4399影视免费观看高清直播| 亚洲国产成人精品无码区花野真一| 久久国产色AV免费看| 免费视频精品一区二区| 亚洲熟妇av一区二区三区下载| 亚洲人成无码网WWW| 免费高清av一区二区三区| 人妻丰满熟妇无码区免费| 国产精品免费久久久久久久久 | 亚洲一区精彩视频| 亚洲电影国产一区| 在线观看亚洲av每日更新| 免费a级毛片18以上观看精品| 久久不见久久见免费影院| 精品无码人妻一区二区免费蜜桃| 国产黄色片免费看| 瑟瑟网站免费网站入口| 亚洲成aⅴ人片久青草影院按摩| 日韩电影免费在线观看视频| 91成年人免费视频| 84pao国产成视频免费播放| 中文无码成人免费视频在线观看| 一级大黄美女免费播放| 免费夜色污私人影院网站电影| 波多野结衣在线免费视频| 亚洲av无码成h人动漫无遮挡 | 亚洲人成网站在线在线观看| 亚洲狠狠ady亚洲精品大秀| 亚洲国产aⅴ成人精品无吗| 亚洲va成无码人在线观看| 91亚洲自偷在线观看国产馆| 亚洲最新黄色网址| 亚洲国产av美女网站| 亚洲免费一级视频| 亚洲五月综合网色九月色| 亚洲综合无码无在线观看| 亚洲欧洲AV无码专区| 成人婷婷网色偷偷亚洲男人的天堂 | 亚洲国产精品成人精品小说| 亚洲国产美女视频|