路径的描述有三种方式,有斜杠的是绝对路径,代表根目录;
还有classpath和相对路径方式,没有带斜杠表示相对路径
检查一下是不是 web.xml里面没有配置!
首先,老师用的开发工具是MyEclipse,先确认下你用的是不是这个工具,如果是的话,在代码框的左下角有个Source和Design可以自由切换的;其次,我想说使用design设计界面之前要先熟悉使用源码配置才能理解原理;最后提高打码效率,我觉得在熟悉的前提下,可以尝试使用Servlet3.0引入的注解的方法,可以很大程度提高打码效率。
要对Serevlet进行配置,使其支持异步才可以哦,可以百度找一下配置方法
亲亲,这边建议你进到工程就行了,不用进到jsp界面
http://www.cnblogs.com/chen-lei/archive/2010/01/28/1658720.html
<dispatchar></dispatchar>在这里设置转发模型,FORWARD,INCLUDE等
直接创建个filter就行了,不要创建class
你这里应该是有一个明显错误,多个类映射到同一名字“LoginFilter"
因为登录成功session中有username的数据,所以就放行了
的确帮助理解了很多东西,知道我以前多low
你吧映射地址改成了/AsynServlet,那么你其他要用到的地方也要改
已经解决
错误页面的话,一般让别人看到也没事,不过如果想实现以上需求的话,可以把servlet里面的请求到fail.jsp改成转发到fail.jsp,然后把过滤器里面配置的fail.jsp参数去掉,这样应该可以实现。
你是过滤的哪一个页面?是不是把login.jsp登录页面也进行过滤了?
5.1 就会讲这个重定向了
过滤器是一种机制,就是在执行业务代码之前对请求进行转换或校验,转发和重定向是一种方法,也会在过滤时用到。不能理解过滤器的好处你自己实现下案例中对请求进行是否登陆的测试的例子
相当于一种过滤器可以拦截处理不同的url
根据错误提示,好像不支持<dispacher>,看看servlet版本
在设置tomcat 服务器的时候把
Server
Open browser 的 After launch 勾掉,手动开启浏览器网页可以解决
过滤器并没有noLogginPaths这个参数, 要是想实现只能在过滤器的初始化时候设置上哪些不要过滤。下面是练习写的一个demo
@WebFilter(urlPatterns = { "*.jsp" },initParams ={@WebInitParam(name = "myNoLoginPaths", value = "/cc.jsp;/dd.jsp") })
public class MyFilter implements Filter {
private FilterConfig config;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
//判断是否需要拦截
boolean needFilte = true;
//获取 不拦截的路径列表
String noLoginPaths = config.getInitParameter("myNoLoginPaths");
if(noLoginPaths!= null && !"".equals(noLoginPaths)){
String[] strings = noLoginPaths.split(";");
for (String tempUrl : strings) {
if(request.getRequestURI().indexOf(tempUrl)!=-1 ){
needFilte = false;
break;
}
}
}
if(needFilte){
//具体的拦截处理逻辑
System.out.println("过滤器处理业务"+request.getRequestURI());
}
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
config = arg0;
}
}
request.getContextPath()拿到的是项目的根路径
servlet是在3.0之后才支持异步处理的,之前版本是不支持异步处理的,也就是说servlet的优势并不在异步处理方面,或者说servlet对异步支持的并不怎么好,不然、也不会到3.0才支持;这里你可以这样理解servlet异步为什么不是默认的,也有可能是因为兼容之前的版本的设计。如果你有不同的想法,不妨@我。
<url-pattern>/index.jsp</url-pattern>
这个写错了你这个变成了当请求index.jsp的时候才会调用errorfilter
应该是
<url-pattern>/error.jsp</url-pattern>
找到问题了,dofilter方法中提供了参数,参数用的arg0和agr1,我这里直接调用过程request和response肯定不行,需要写的是参数名,请求和响应都是以参数形式传递进去的。。
1.一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起
request -> filter1 -> filter2 ->filter3 -> …. -> request resource.
2.chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源