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>

 

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

加油,哈哈哈

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com