context root 问题
# 具体遇到的问题
老师这题如果是不把context root不设置成/要怎么实现啊?
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
正在回答
同学你好,当comtext root不为/时,同学的代码完成的不错。不过实际工作中,context root都会设置为/。
关于方法参数是arg0、arg1、arg2。在实现Filter接口,重新接口中的方法时,重写参数是request,response的doFilter()方法,如:

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;
public class DeviceAdapterFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)arg0;
HttpServletResponse res=(HttpServletResponse)arg1;
String uri=req.getRequestURI();
uri=uri.replaceAll("/device-adapter", "");
System.out.println("URI:"+uri);
if(uri.startsWith("/desktop")||uri.startsWith("/mobile")) {
arg2.doFilter(arg0, arg1);
}else {
String userAgent=req.getHeader("user-agent").toLowerCase();
String targetURI="";
if((userAgent.indexOf("android")!=-1)||(userAgent.indexOf("iphone")!=-1)) {
targetURI="/device-adapter/mobile"+uri;
System.out.println("移动端设备正在访问,重新跳转URI:"+targetURI);
res.sendRedirect(targetURI);
}else {
targetURI="/device-adapter/desktop"+uri;
System.out.println("PC端设备正在访问,重新跳转URI:"+targetURI);
res.sendRedirect(targetURI);
}
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
老师看看这样行不行,有更好的方法不
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星