关于响应式布局(pc端访问自适应 手机端访问自适应)

不喜勿喷!!!css

第一步 :html

package com.sso.util;java

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;
}
}spring

 

 

第二步:服务器

 

package com.sso.config;jsp

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

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;url

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

 

@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 {
}

}

第三步:

剩下的手机端页面直接请求后台功能便可

相关文章
相关标签/搜索