Servlet总结(2)

来源:互联网 发布:宁波seo大牛 编辑:程序博客网 时间:2024/06/05 14:07

1.servlet中的服务器内部跳转和客户端重定向
服务器内部跳转:

String url = "/hello.html";            request.getRequestDispatcher(url).forward(request, response);

特点:需要使用request对象来完成,不会改变浏览器地址栏。

客户端重定向:

String url = "hello.html";            response.sendRedirect(url);

特点:
使用response对象完成,浏览器会发出新请求,即产生新的request和response对象,会改变浏览器地址栏。

2.服务器内置对象
request—类型为HttpServletRequest
session—类型为HttpSession
application—类型为ServletContext
其中request直接作为doget和dopost的参数传递,session可通过request对象获得

HttpSession session = request.getSession();

application可通过request,session或ServletConfig对象获得,且为同一个

request.getServletContext();            this.getServletContext();    request.getSession().getServletContext();                this.getServletConfig().getServletContext();

request在每次客户端发出请求,服务器就会创建一个新的request对象,存取数据只能在一次请求之内起作用。
session在getSession方法第一次调用时创建,如果之前创建过,拿到此session,如果没有,则创建一个。并发送cookie,其中包含jsessionid,确保此次会话访问同一个session。
application在启动服务器时创建,在关闭服务器时销毁,每个项目运行期间只有同一个application对象

3.客户追踪技术
分为cookie和URL重写

//创建cookie对象        Cookie c1 = new Cookie("name","tom");        Cookie c2 = new Cookie("msg","hello");        //设置cookie的有效时间        c1.setMaxAge(60*60*24*365);        c2.setMaxAge(60*60*24*365*10);        //把cookie放到response里面        response.addCookie(c1);        response.addCookie(c2);

浏览器访问会将该网址的cookie发送给服务器,可通过取值完成信息验证,自动登录。
URL重写:

String url = response.encodeURL("url");重写后:        <a href="TestServlet;jsessionid=5480EF9016295A73DC56731A2F123246">

4.过滤器
过滤器类需要实现javax.Servlet.Filter接口。其中有三个方法:init–在这个过滤器服务创建时调用,初始化;destory–在该过滤器对象被销毁时调用;doFilter–当拦截到请求时调用该方法,完成信息验证。特别记住在其方法最后要FilterChain.doFilter(req,res)来将请求下发,下一层过滤或访问Servlert。
使用注解或在web.xml中配置filter

<filter>            <filter-name>encodingFilter</filter-name>            <filter-class>com.briup.filter.EncodingFilter</filter-class>        </filter>        <filter-mapping>            <filter-name>encodingFilter</filter-name>            <url-pattern>/*</url-pattern>        </filter-mapping>
第一种 精确匹配            <url-pattern>/test_servlet</url-pattern>            表示此拦截器只会拦截/test_servlet这一个路径第二种 扩展名匹配            <url-pattern>*.html</url-pattern>            表示此拦截器只会拦截后缀名是.html的路径第三种 路径匹配            <url-pattern>/test/*</url-pattern>            表示此拦截器拦截/test路径下的所有资源第四种 匹配任意的url            <url-pattern>/*</url-pattern>

过滤器会按照web.xml的配置的顺序由上到下执行,如果使用注解配置,会按首字母排序。

5.监听器
监听器共有8种接口,分为三类:
1.监听request,session,application的创建和销毁分别为
ServletRequestListener
HttpSessionLister
ServletContextListener
2.监听request,session,application三个对象中的属性变化,分别为ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
通过HttpSessionBindingEvent类型来获取键值对来获取属性添加,删除,修改的属性名和属性值
3.监听session对象中存放的其他对象,监听的是放置对象本身。

在web.xml中配置

<listener>        <listener-class>listener.TestListener</listener-class>    </listener>
原创粉丝点击