關於響應式布局(pc端訪問自適應 手機端訪問自適應)


不喜勿噴!!!

第一步 :

package com.sso.util;

public class HttpAgentUtil {
private final static String[] agent = { "Android", "iPhone", "iPod","iPad", "Windows Phone", "MQQBrowser" }; //定義移動端請求的所有可能類型
/**
* 判斷User-Agent 是不是來自於手機
* @param ua
* @return
*/
public static boolean checkAgentIsMobile(String ua) {
boolean flag = false;
if (!ua.contains("Windows NT") || (ua.contains("Windows NT") && ua.contains("compatible; MSIE 9.0;"))) {
// 排除 蘋果桌面系統
if (!ua.contains("Windows NT") && !ua.contains("Macintosh")) {
for (String item : agent) {
if (ua.contains(item)) {
flag = true;
break;
}
}
}
}
return flag;
}
}

 

 

第二步:

 

package com.sso.config;

import java.io.IOException;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;

import com.sso.entity.User;
import com.sso.util.HttpAgentUtil;

 

@Component
@WebFilter("/*")
public class LoginFiter implements Filter{
/*實例化一個靜態的集合(這里可以改用map集合,提高性能,每次過濾可以不用for匹配)*/
private static List<String> urls = new ArrayList<>();
//靜態代碼塊中向集合中存放所有可以放行的請求或網頁地址(不用賬號密碼即可訪問)
static {
urls.add("/login");
urls.add("/login.html");
urls.add("/css");
urls.add("/js");
urls.add("/register");
urls.add("/userRegister.html");
urls.add("forgetPassword.html");
urls.add("findpwd.jsp");
}

@Override
public void destroy() {
// TODO Auto-generated method stub

}

/**
* 攔截請求,看看用戶是否登陸,如果沒有登陸,
* 則跳轉回登錄頁面,否則就放行
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
/*注意:ServletRequest是HttpServletRequest父接口,因此需要強轉
     同樣,ServletResponse是HttpServletResponse父接口,因此需要強轉*/
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
String ua = req.getHeader("User-Agent");
/*得到當前頁面所在目錄下全名稱*/
String urlPattern=req.getServletPath();
/*得到頁面所在服務器的絕對路徑*/
String path = req.getRequestURI();
for (String url : urls) {
if(url.equals(urlPattern) || path.contains(url)) {
chain.doFilter(request, response);
//防止重復響應
return;
}
}
//如果username為null,表示沒有登錄
if(req.getSession().getAttribute("username")==null) {
if(HttpAgentUtil.checkAgentIsMobile(ua)){
res.sendRedirect("/sso-client/mobile/public/login.html");
}else {
res.sendRedirect("/sso-client/login.jsp");
}
}else {
//放行
chain.doFilter(request, response);
}
}

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

}

第三步:

剩下的手機端頁面直接請求后台功能即可


免責聲明!

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



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