Http请求域、会话域(servlet、session)、filter:概念、使用

本文详细介绍了HTTP请求域中的HttpServletRequest接口,包括getMethod、getQueryString等方法,以及请求域的作用和使用。接着讲解了会话域(session)的概念、作用范围、生命周期管理,并通过示例展示了如何在JSP中使用session。最后,阐述了过滤器Filter在Web项目中的应用,包括其作用、配置和实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

HttpServletRequest 接口:

1、 getMethod()方法:返回客户端请求。

2、getRequestURL方法:返回端口后参数之前的那部分内容,且为真是的资源名,而不一定与地址栏中相同。

3、getQueryString()方法:返回资源路径?号后面的所有内容

4、getScheme()方法:返回协议名称

5、getContextPath()方法:返回请求url所属的web应用程序的路径

6、getRequestURL()方法:返回真实的资源路径。不一定与地址栏相同、但不包括参数部分,且返回类型为StringBuffer类型

作用域--------请求域(HttpServletRequest   request)

作用范围:只在一次请求中有效

四个方法:

1. void setAttribute (String name,Object obj)

2. Objiect getAttribute(String name)

3.void removeAttribute(Stringname)

4.Enumeration getAttributenames():返回request值域中所有属性名的枚举

----------------------------------------------------------

jsp页面可写java代码

-----------------------------------------------------------------------------------------------------

作用域----会话域

获取session代码:

HttpSession session=request.getSession();

在jsp页面中可以直接使用session,而不必使用request.getSession()得到

会话:一个浏览器和服务器之间发生的一系列的请求和响应的过程

用SessionID来标识同一个会话的请求

用Session对象来保存该会话的状态信息

服务器决定与某个客户端开启一个会话,创建一个Session对象通过Cookie或者URL参数形式将SessionID传给客户端

如果客户端在一定时间内没有操作,服务器会自动终止会话,即删除Session对象

Session作用范围:

该次会话一直有效(一定时间内:一般为默认30分钟)

有效时间可修改:通过Tomcatweb.xml<session-config>标签修改

或配置文件web-xml添加<sessiom-config><session-timeout>30<session-timeout></sessiom-comfig>

一次修改有效时间

注:前者为整个tomcat有效时间都做了修改,后者为当前所在项目有效时间做了改变

附上效果图:

先通过以下代码向服务器发送数据并显示出来

运行后显示结果

关闭浏览器,通过直接输入地址再次打开页面显示结果如图所示:


如图所示两者间可以很明显看出区别

httpsevlet request只执行一次一旦关闭或者再次打开就会是一个新的request,而Session则是会将数据存储一定时间然后才失效

---------------------------------------------------------------------------------------------------------------------------

SessionID原理概述:

浏览器发送一次请求到服务器,服务器首先判断,该请求是否携带一个SessionID值
如果这次请求没有携带一个SessionID值,服务器就知道了,这是第一次来访问该服务器
浏览器与该服务器开始建立会话
服务器会在相应请求的同时,将产生一个SessionID,作为该次会话的标识
再把这个SessionID发给浏览器,浏览器就拥有一个SessionID了
当再次访问该服务器时,浏览器会携带那个SessionID,被传到服务器
服务器首先判断该请求是否携带一个SessionID值,此时有了,代表这不是一个新的会话的请求
如果浏览器两个请求之间的时间太长,超出服务器等待的时间,服务器会删除这个session对象
删除后,再次发送到该服务器,因为服务器里没有这个session对象了,就不能判断请求是否携带SessionID值
也就是说判断不出来,就认为这是一个新的会话开始,又会产生一个SessionID,作为这次新会话的标识
又把这个SessionID发给浏览器,浏览器就拥有一个新的SessionID了
在会话开始时,服务器会自动分配一个空间(session对象),SessionID就在session对象里

-----------------------------------------------------------------------------

过滤器Filter:(转载)

filter翻译为过滤器。在web项目中,经常需要在正式处理请求前,做一些特殊的处理或常用的例程,于是就发明了这个filter。

作用:
  • 过滤非法文字和信息。
  • 设置统一字符编码。
  • 对用户进行登录验证 。
  • 改变图片文件格式。
  • 对相应内容做压缩处理。
  • 对XML的输出使用XSLT来进行转换。
步骤:
  • 第一步:通过在web.xml中的元素和元素来配置filter,以决定用户请求的URL应被哪些filter类来处理一次。
<!--web.xml配置过滤器-->
  <filter>
        <filter-name>FirstFilter</filter-name>
        <!--配置FirstFilter过滤器类-->
        <filter-class>com.yy.servlet.web.filter.FirstFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FirstFilter</filter-name>
        <!--(代表整个web项目都要过滤,如果指定某个url就只过滤这个url)-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 步骤二:编写filter的Servlet类。 
    • 我们的filter类需要实现父接口javax.servlet.Filter。
    • 实现父接口的各个方法。包括init(),doFilter(),destroy(),这3个方法。 
      • init()方法和destroy()方法分别用来初始化和销毁时调用。
      • init()方法在 Filter 生命周期中仅执行一次。服务器启动时就会执行。
      • destory()方法在Filter的生命周期中仅执行一次,即Web容器卸载Filter对象之前调用它。主要做释放资源的操作。
    • 对doFilter(req,resp,chain)方法操作。
    • chain.doFilter(request,response)。

注意:chain参数则通过调用自己的doFilter方法来将请求向下传递,如果没有调用doFilter()方法,则相当于阻止了本次请求。 
创建如下:

/*这个是FirstFilter过滤器类*/
package com.yy.servlet.web.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FirstFilter implements javax.servlet.Filter{

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filter) throws IOException, ServletException {
        /*如果没有调用doFilter()方法,则相当于阻止了本次请求。*/
        filter.doFilter(request, response);

        System.out.println("filter is ok");
    }

    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

这个样子我们就可以过滤web项目的所有url了!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值