1. 程式人生 > >小項目-購物網站個別功能的具體實現思路-下(新手)

小項目-購物網站個別功能的具體實現思路-下(新手)

oid tro over init null 作用 目標 錯誤 網站


  • (11)過濾器

過濾器的作用和意義:

在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈裏逐個處理,直到請求發送到目標為止。

例如,某網站裏的功能,有很多界面有驗證“是否登錄”業務,如果使用過濾器的話就可以簡化很多本來需要在Servlet中寫入的代碼段。化繁為簡。

這兩項工作可以在由兩個過濾器組成的過濾鏈裏進行處理。當過濾器處理成功後,把提交的數據發送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

過濾器的寫法:

@WebFilter("*.do")
public class CharacterEncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("過濾器正在啟動。"); System.out.println("過濾器正在初始化!"); }   

   //在這個方法裏面寫。 @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws
IOException, ServletException { System.out.println("-------------------過濾器開始工作!-------------------"); //設置編碼格式。 request.setCharacterEncoding("UTF-8"); //獲取賬號密碼的關鍵字信息。 HttpServletResponse resp = (HttpServletResponse) response; HttpServletRequest req
= (HttpServletRequest) request; Map w = (Map) req.getSession().getAttribute("W"); //如果沒有登錄則重定向到登錄界面 if (w == null){ resp.sendRedirect("/shop/views/login.jsp"); System.out.println("-------------------過濾器攔截成功!-------------------"); }else { //放行數據。 filterChain.doFilter(req,resp); } } @Override public void destroy() { System.out.println("我被銷毀啦。"); } }

實現過濾的方法:

*.do    意為:
                    所有@WebServlet的映射路徑帶.do的都會進行攔截。
                    例如:/scart.do、/Addcart.do

小項目-購物網站個別功能的具體實現思路-下(新手)