一.web应用的初始化
1.从Servlet继承用于完成初始化的类,在ini()方法实现初始化的代码。如果是从HttpServlet继承,在ini()过程中注意实现super.ini(config),以完成父类的设置。
2.在web.xml中指明初始化类信息,并且说明在应用启动时装载
<Sevlet>
<Servlet-name>sname</Servlet-name>
<Servlet-class>classpath</Servlet-class>
<load-on-startup>1<load-on-startup> <!--这里说明在应用启动时加载,应用服务器会调用ini()方法。其中的数字表示在有多个初始化类时候的加载顺序。-->
</Servlet>
二、使用Servlet实现url过滤
1.一般从HttpServlet继承一个用于处理的类,在doGet或者doPost中实现处理代码
2.在web.xml中配置类、制定url模版
<Sevlet>
<Servlet-name>sname</Servlet-name>
<Servlet-class>classpath</Servlet-class>
</Servlet>
<Servlet-mapping>
<Servlet-name>sname</Servlet-name> <!--使用sname命名的servlet过滤-->
<url-pattern>/dir/*.cold</url-pattern> <!--过滤/dir/目录下的所有.cold的请求-->
</Servlet-mapping>
说明:可以配置多个过滤模版
三、转向/重定向
1.使用response.sendRedirect(url)实现;
2.使用RequestDispatcher实现;getServletContext().getRequestDispatcher("url").forwar()。该方法中的参数必须使用"/"开始,而且,该方法总是以root作为当前目录,但是在客户端的地址栏看到的依然是请求的url,而不是重定向的url。
struts实现的ActionForwad中有一个setRedirect方法,如果设置false,框架就是使用RequestDispatcher来实现转向,true,框架就是使用Response.SendRedirect方法。可以参看ActionServlet.processActionForward()方法。
四、使用Filter过滤
Filter接口的过滤行为作用在Servlet过滤前,也就是说,如果Filter和Servlet对同一个url模版过滤,那么框架首先使用Filter,通过Filter之后再到Servlet。从功能上讲,Filter是用于检测请求,比如检测是否为一个合法的请求,但是不处理请求,Servlet用于处理请求。
其实现是实现Filter接口,关键方法是doFileter(),在该方法内完成对请求的检测,可以通过response重定向,或者使用filterChain.doFiler(request, response)将请求继续传递。
web.xml中Filter的配置基本和Sevlet一致,只是把Servlet替换成Filter就可以了。