栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ServletContext对象、会话技术、Filter

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ServletContext对象、会话技术、Filter

ServletContext对象 一、基本理解

服务器会为每个工程创建一个全局唯一且工程内部都共享的对象,叫做全局应用程序共享对象(ServletContext对象)。

二、作用

1、域对象

服务器在内存上创建的储存空间,用于不同动态资源之间传递与共享数据

2、可读取全局配置参数

3、可搜索当前工程目录下的资源文件

4、获取当前工程名字

5、使用方法:

setAttribute(name,value);name是String类型,value是Object类型;
往域对象里面添加数据,添加时以key-value形式添加
getAttribute(name);
根据指定的key读取域对象里面的数据
removeAttribute(name);
根据指定的key从域对象里面删除数据
​

例子:

setAttribute()

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
​
import java.io.IOException;
​
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        context.setAttribute("name","张三");
        System.out.println("成功");
    }
​

getAttribute(name):

package com.zhujiantao;
​
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
​
import java.io.IOException;
​
@WebServlet("/OnServlet")
public class OnServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        System.out.println(servletContext.getAttribute("name"));
        System.out.println("成功了!");
    }

输入地址OnServlet返回:张三、成功了!

三、获取文件的真实路径

context.getRealPath("");

会话技术

一、基本理解

用户打开浏览器,点击链接访问服务器web资源,然后关闭浏览器,整个过程称为一次会话。在用户与服务器交互期间产生的数据,程序想将数据进行保存等操作时,就需要用到会话技术

二、Cookie、Session基本理解

1、Cookie:为客户端技术,程序把每个用户的数据以cookie的形式保存到各自的浏览器中,当用户用浏览器再次访问服务器中web资源时,就会带着各自的数据(cookie)过去。这样,web资源处理的就是用户各自的数据了。

步骤:

(1)创建cookie对象
​
•       new Cookie(String name,String value);
​
(2)发送cookie对象
​
•      response.addCookie(Cookie cookie);
​
(3)获取cookie对象,拿到数据
​
•     Cookie[]    request.getCookies();

注意:

1.可以一次发送多个cookies

创建多个Cookes对象,通过response.addCookie();添加多次

2.在浏览器中保存的时长

默认情况下,当浏览器关闭的时候,cookie会被销毁

3.持久化存储:

cookie.setMaxAge(int seconds);

正数: 将cookie数据写到硬盘中,持久化存储

负数: 默认

0: 删除cookie信息

2、Session:是服务器端技术,利用这个技术,服务器在运行时会为每一个用户的浏览器创建一个独享的session对象。由于这个session为用户浏览器所独享,所以用户在访问服务器时,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源时,其他web资源再从用户各自的session中取出这个数据来为用户服务。

步骤:

 HttpSession session = request.getSession();
​
   Session.setAttribute();
​
请求另一个sevlet中,可以获取会话的session数据
​
  HttpSession session = request.getSession();
​
  session.getAttribute(); 

注意:

1.session的实现是依赖于cookie的

2.当客户端关闭后,服务器不关闭,两次获取的sessionId默认是不一样的。

如果需要相同,则可以创建cookies,键为JSESSIONID,设置最大的存活时间

  
HttpSession session = request.getSession();
  Cookies c = new Cookies("JSESSIONID",session.getId());
  c.setMaxAge(10*10);
  response.addCookies(c);

3.当客户端没关闭,服务器关闭后,两次获取的sessionId默认是不一样的。

4.session销毁

服务器关闭时,session失效

session对象调用 invalidate();

session的默认失效时间30分钟, 在tomcat的conf目录下的web.xml,配置session-config

session的特点
  1. session用于存储一次会话的多次请求的数据,存在服务器端

  2. sessioni可以存储任意类型,任意大小的数据

  3. session存储数据在服务器端, Cookie在客户端

  4. session没有数据大小限制, Cookie有

  5. session数据安全, Cookie相对于不安全

Filter(过滤器) 一、基本理解

过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理 作用:通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。一般用于登陆验证、统一编码处理等。

 

二、使用

1.定义一个类,实现接口filter

2.重写方法

3.配置拦截路径

配置方式: (1) web.xml(2)注解

package com.zhujiantao;
​
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import java.io.IOException;
​
@WebFilter("/*")
public class FilterServler implements Filter {
    @Override
    //请求、响应、
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        filterChain.doFilter(servletRequest,servletResponse);//放行
    }
}
​

拦截路径配置

 1. /index.jsp    访问index.jsp时,被拦截
​
 2. /usr/*     访问/usr下的所有资源时被拦截
​
 3. *.jsp   访问所有后缀名为.jsp的资源时被拦截
​
 4. /*    拦截所有的资源

注解

  1. 实现Filter接口

  2. 添加@WebFilter注解,实现doFilter 方法

  3. 过滤器放行 chain.doFilter(request, response);

拦截方式配置

设置dispatcherTypes属性
1、QEQUEST:默认值。浏览器直接请求资源
2、FORWARD:转发访问资源
3、INCLUDE:包含访问资源
4、ERROR:错误跳转资源
5、ASYNC:异步访问资源

1.在注解中,使用dispatcherTypes属性

2.在web.xml中

设置标签

web.xml配置的方式


   filter名称
   filter路径


     filter名称
     /*

多个过滤器的顺序

1.注解配置

会按照类名顺序比较,值小的先执行。比如: AFilter和BFilter,AFilter就先执行

2.web.xml配置

定义在前面的先执行

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号