路径的描述有三种方式,有斜杠的是绝对路径,代表根目录;
还有classpath和相对路径方式,没有带斜杠表示相对路径
找到问题了,dofilter方法中提供了参数,参数用的arg0和agr1,我这里直接调用过程request和response肯定不行,需要写的是参数名,请求和响应都是以参数形式传递进去的。。
不是,该类实现了Filter接口,重写了doFiler(),该方法里面有chian,它是控制放行的
你服务器启动后是直接访问main.jsp页面吗?
dofilter方法中你已设定了传入参数为servletRequest,但你用的是自定义的request 我觉得问题可能是这里,我也是新手
1)因为请求转发,地址不变还是index.jsp 即使Forward到了main.jsp 也不会起作用;
这种情况除非你把main.jsp的监听改成Forward这样即使url不变,forward行为还是会被监听,然后又转发,死循环报错;
2)因为请求重定向,所以地址会改变,然后监听器都会调用
不知道,你解决了么。我解释下,自己理解的
Cannot create a session after the response has been committed
这个错误解释的很清楚,就是response被二次提交了,
罪魁祸首就是
FirstFilter.firstFilter.doFilter(firstFilter.java:35)
也就是这句:arg2.doFilter(arg0, arg1);
这句的意思是放行,给浏览器发送消息(response)
你把这句注释了,记得改下这句,
response.sendRedirect("index.jsp"); -----》》response.sendRedirect("main.jsp");
你的这是个无限循环的
是这样的,过滤器主要是来验证你的请求是否合规,如果合规就会放行,然后进入到服务器处理你的请求,如果不合规它就不会放行,然后跳转至其他界面
重定向相当于两次请求,所以再次请求就会调用过滤器
没看明白你要说什么
你得确保 filter过滤器能触发,也就是过滤器能过滤向middle.jsp的请求
过滤器到底干什么用的?
过滤器可以过滤页面,比如我们在淘宝网,有些事必须要登录才能进的页面,若是直接打开这个页面地址,就会先进入过滤,过滤的条件是看你登录了没有,若是没登录就跳转到登录页面,若是登录了,就直接进入这个页面
配置web.xml时候,写的jsp是除了这个jsp页面其他都不能访问?
不是不能访问,是访问你配置的页面的时候,会先进行过滤操作。
懂了吗,不懂再交流一下
req.getRequsetDispatcher,这句话不是重定向啊。。。这个是转发啊。。。你注释不是也写着呢吗。。。你看你30,31行没注释掉啊,反而是重定向注释掉了。。。
me toooooo
您好,执行完end说明一个过滤器执行完成,然后跳转到main.jsp又再次引起一个过滤器再次循环。
您好,重新创建是为了获取http中的request,可以获取相关的方法,如getContextPath。原来的参数ServletRequest是无法获取的。
楼上正解。