老师,为什么我打开了手机模拟器后不能跳转到/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应为全小写。修改后代码如下所示:

http://img.mukewang.com/climg/5f5ecd4809a1393713340526.jpg

@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);
			}
		}
	}

祝学习愉快!

0

0 学习 · 9666 问题

查看课程