老师,为什么我打开了手机模拟器后不能跳转到/phone中
来源:3-1 多端设备自动适配
复java_n
2020-09-13 17:21:49
package com.imooc.filter;
import java.io.IOException;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class filterTest implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//进行强制转换
HttpServletRequest rqu=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
String uri=rqu.getRequestURI().toLowerCase();
if(uri.startsWith("/pc") || uri.startsWith("/pc")) {
chain.doFilter(request, response);
}else {
String client=rqu.getHeader("user-agent");
String finnal="";
if(client.indexOf("iPhone")==1 || client.indexOf("android")==1 || client.indexOf("iPad")==1){
finnal="/phone"+uri;
res.sendRedirect(finnal);
}else {
finnal="/pc"+uri;
res.sendRedirect(finnal);
}
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
1回答
好帮手慕小尤
2020-09-13
同学你好,1. 建议同学去除uri变量中的toLowerCase()方法,并在client变量中添加toLowerCase()方法。
2. 建议将if判断中的==修改为!=-1。
3. iphone与android、ipad应为全小写。修改后代码如下所示:
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //进行强制转换 HttpServletRequest rqu=(HttpServletRequest)request; HttpServletResponse res=(HttpServletResponse)response; String uri=rqu.getRequestURI(); if(uri.startsWith("/pc") || uri.startsWith("/pc")) { chain.doFilter(request, response); }else { String client=rqu.getHeader("user-agent").toLowerCase(); String finnal=""; if(client.indexOf("iphone")!=-1 || client.indexOf("android")!=-1 || client.indexOf("ipad")!=-1){ finnal="/phone"+uri; rqu.getRequestDispatcher(finnal).forward(rqu, res); }else { finnal="/pc"+uri; res.sendRedirect(finnal); } } }
祝学习愉快!
相似问题
回答 1
回答 1