idea jsp html 空白頁的問題


摘要

最近沒事兒瞎折騰java web,在idea中,突然發現無法顯示頁面了。

問題

為什么會出現這個問題?

接觸了過濾器的內容,然后在項目中添加了這樣的一個過濾器,用來對post過來的數據進行ut8編碼。

package com.shop.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * post請求過濾器
 */
public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 
FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("UTF-8"); } @Override public void destroy() { } }

注意,對過濾器的生命周期,是在服務器啟動的時候,會對過濾器進行初始化,根據web.xml配置文件中的url-pattern進行過濾。

  <!--post請求過濾器配置-->
    <filter>
        <filter-name>post-encoding</filter-name>
        <filter-class>com.shop.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>post-encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

這里進行的對所有的url進行過濾,在這種模式下,會對所有的請求,都會先進入doFilter方法,但是,在對請求進行處理之后,並沒有放行,導致直接返回客戶端了,所以頁面一直是一個空白頁。不管jsp還是html都是一樣的。解決辦法,在過濾器鏈中對其放行,讓它繼續執行之后的過濾器,如果沒有則進行請求處理,然后相應,最后回到該過濾器,然后響應給客戶端。

所以解決辦法如下:

 @Override
    public void doFilter(ServletRequest servletRequest, 
ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("UTF-8"); //放行 filterChain.doFilter(servletRequest, servletResponse); }

結語

關於過濾器,一定要根據業務關系,要在滿足一定條件的情況下,給與放行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM