Servlet总结(2)

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值