java web項目啟動進入首頁的配置方式(包含過濾跳轉首頁實現)


本文為博主原創,未經允許不得轉載:

      項目啟動成功,進入首頁的方式,我們往往在web.xml 中通過以下的方式默認進入跳轉首頁,

<welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

在項目啟動成功之后,在瀏覽器輸入:http://localhost:端口號/項目名稱,回車之后就可以進入index.jsp頁面。

另外一種方法通過后代代碼實現跳轉首頁的方式是在index.jsp中進行重定向,進入后代處理,然后再跳轉首頁,

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--通過頁面重定向進行,跳轉到指定的頁面--> <% response.sendRedirect(request.getContextPath()+"/jsp/index.jsp"); %>
<!--兩種方式只能選擇一種-->

<!--通過頁面重定向進行java后台代碼處理,根據后代處理進行跳轉 -->
    <%
        response.sendRedirect(request.getContextPath()+"/login"); %>
</body> </html>

第三種方法是在這邊進行特殊批注的,在項目中,也多用這種方式進行實現,即通過過濾器方式進入首頁的方式:

       其處理的邏輯為獲取URL,並對URL進行判斷,判斷URL攜帶的參數,如果URL攜帶參數正確,其可以進行正常的處理和響應,

當沒有攜帶對應的參數時,則進入首頁。

將代碼展示如下,啟動默認跳轉的為登錄頁:

     

package com.test.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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;

import org.apache.commons.lang3.StringUtils;

import com.test.modules.mobile.UserInfo;
import com.test.utils.SystemConstant;


public class SystemFilter implements Filter {

    private static final List<String> STRINGS = new ArrayList<String>();
    //此處可以定義加載時要過濾的資源類型
    static {
        STRINGS.add("jsp");
        STRINGS.add("js");
        STRINGS.add("css");
        STRINGS.add("images");
        STRINGS.add("bmp");
        STRINGS.add("gif");
        STRINGS.add("jpg");
        STRINGS.add("jpeg");
        STRINGS.add("png");
    }

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //通過過濾器實現編碼方式的控制
        request.setCharacterEncoding(SystemConstant.UTF8_CODE);
        response.setCharacterEncoding(SystemConstant.UTF8_CODE);
        String url = request.getRequestURI();
        String path = request.getContextPath();
        UserInfo userInfo = (UserInfo) request.getSession().getAttribute("loginUser"); //此處用來判斷瀏覽器緩存用戶數據是否存在
        if (!url.contains("login")&& (!isAuth(url) || url.contains(".json"))) {
            if (null == userInfo || StringUtils.isBlank(userInfo.getLoginName())) {
                String tip = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><script language='javascript'>window.parent.location.href='"
                             + path
                             + "/login'</script></head><body></body></html>"; //此處用來后台請求跳轉的路徑,當請求到此處時,就會進入對應的后台路徑中進行請求
                PrintWriter outprint = response.getWriter();
                outprint.write(tip);
                outprint.flush();
                return;
            } else {
                chain.doFilter(request, response);
            }
        } else {
            chain.doFilter(request, response);
        }
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    public boolean isAuth(String url) {
        for (String string : STRINGS) {
            if (url.contains(string)) {
                return true;
            }
        }
        return false;
    }
}

同時,在web.xml文件中配置過濾器:

<filter>
        <filter-name>SystemFilter</filter-name>
        <filter-class>com.test.filter.SystemFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SystemFilter</filter-name>
        <url-pattern>*</url-pattern>
    </filter-mapping>

 

第三種方式,其實就是對過濾器的應用及理解,過濾器用的地方很多,在此處記錄一下,所謂積少成多。。

加油,哈哈哈

 


免責聲明!

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



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