JavaWeb-Servlet、Session、Filter、Listener

今日内容

	Servlet、Session、Filter、Listener

Servlet

1、 Servlet概述

	Servlet就是运行在服务器(Tomcat)上的Java程序。
	Servlet用来处理客户端请求的,以及负责对客户端的响应。
	Servlet默认情况下是单例模式的,每次用户访问,都是开启一个新的线程,调用service方法处理

2、使用Servlet

	1. 先引入servlet-api.jar
	2. 编写一个Java类,继承HttpServlet
	3. 重写service(request,response)方法
	4. 在service方法中处理请求,以及进行响应

3、Servlet获取请求的方式:

	1) 配置到web.xml
		让tomcat帮我们创建对象,并映射地址,当地址匹配,由tomcat调用这个对象的service方法进行处理!
		访问格式:http://ip地址:端口号/项目名称/地址
				http://localhost:8080/08_servlet/login
				
		配置格式.
			将servlet配置到web.xml 并起别名
			<servlet>
				<servlet-name>任意标识符</servlet-name>
				<servlet-class>类的全称(包名+类名)</servlet-class>
			</servlet>		
		 根据别名,映射一个网址
		<servlet-mapping>
			<servlet-name>与第一步标识一致</servlet-name>
			<url-pattern>/地址</url-pattern>
		</servlet-mapping>

4、 常用方法

request  请求接收
	request.setCharacterEncoding("UTF-8");  设置请求接收的编码集   什么时候用   接收参数乱码时要设置,get请求不好使
	request.getParameter("key");			接收请求参数
	request.getParameterMap();				请求接收参数,封装到map集合中   ,通过  map.get(key);
	request.setAttribute("key", value);		将数据设置到request作用域中		
	request.getRequestDispatcher("转发的页面 例如: login.jsp").forward(request, response);  转发	
	HttpSession session = request.getSession();				获取session
	request.getServletPath();		获取servlet请求路径  比如发送的请求是  http://localhost:8080/08_servlet/login   那么获取的就是: /login
	
请求响应	
	response.setCharacterEncoding("UTF-8");		请求响应的编码格式
	response.sendRedirect(重定向的请求或页面"");	重定向
	//给客户端响应
	PrintWriter out = response.getWriter();
			out.write("<h1>登录页面</h1>");
			out.print("a");

5、servlet的生命周期

init		方法进行初始化
service		提供服务
destroy		销毁
GC回收

session

1. session概述
	服务器端为了保存用户的状态而创建的一个特殊的对象
	
2. session对象获取
	HttpSession session = request.getSession(boolean flg);
	
3. 常用方法:
	session.setAttribute(String name,Object obj);
	session.getAttribute(String name);
	session.removeAttribute(String name);

4. 修改session存储时间 
	第一种方式:修改web.xml
     <session-config>
	  	<!-- session  存储时长 默认30分钟 ,可以修改  -->
	  	<session-timeout>60</session-timeout>
	  </session-config>
	第二种方式:编程方式
		session.setMaxInactiveInterval(int seconds);

6. 删除session
	session.invalidate();

7, session 绑定数据
	登录成功之后,在session对象上绑定一些数据,例如:
		session.setAttribute("user",user);
	当用户访问需要保护的资源时,进行sesion验证,例如:
		Object obj = session.getAttribute("user");
		if(obj == null){//没有登录
			response.sendRedirect("login.jsp");
		}

Filter过滤器

	Filter 称为 过滤器,它是Servlet技术中最实用的技术,web开发人员通过Filter技术,对web服务器管理的所有web资源:
	例如jsp、servlet、静态图片、文件、静态html进行拦截,从而实现一些特殊的功能,例如使用url级别的权限访问控制、
	过滤敏感词汇、压缩响应信息等一些高级功能
1、Filter使用
	步骤:
	1.编写一个类,实现Filter接口
	2.在web.xml中进行配置拦截地址

2、生命周期
init 		初始化
doFilter	过滤
destory		销毁

程序启动调用Filter的init() 方法(永远只调用一次),程序停止调用Filter 的 destory()方法(永远只调用一次,
doFilter方法每次访问请求如果符合拦截条件都会调用(程序第一次运行,会在servlet调用init方法以后调用,
以后不管调用几次都会调用doGet、doPost()方法之前))

3、实用场景
	- 用户身份的认证
	- 编码设置
	- 资源权限审核
	- 加密解密访问等等

Listener监听器

1、监听器概述
	web监听器是一种servlet中特殊的类,它能帮助开发者监听web中的特定时间,比如:ServletContext、HttpSession、
	ServletRequest的创建和效果、变量的创建、销毁和修改等,可以在某些动作前后增加处理,实现监控。
2、常用的用途
	1)统计在线人数  	利用HttpSessionListener
	2)加载初始化信息	利用ServletContextListener
	3)统计网站访问量	利用ServletContext
	
ServletContext:对应监控application内置对象的创建和销毁
	当web容器开启的时候,执行contextInitialized方法
	contextDestoryed方法
	实现方式:直接实现ServletContextListener接口
	
HttpSessionListener:对应监控session内置对象的创建和销毁
	当打开一个新的页面的时候,开启一个session会话,执行sessionCreated方法;当页面关闭session过期;或者容器关闭销毁的时候,执行sessionDestoryed方法。
	实现方式:直接实现HttpSessionLinstener接口

ServletRequest:对应监控request内置对象的创建和销毁
	当访问某个页面时候,发出一个request请求,执行requestInitialized方法;当页面关闭的时候,执行requestDestoryed方法
	实现方法:直接实现ServletRequestLinstener接口
	
3、如何使用监听器
	1、创建一个监听器。实现某种接口
	2、在web.xml中配置该监听器
	3、在JSP添加访问人数或者其他操作

4、案例(通过Listener实现在线人数的监控)
	1、创建Java程序,实现HttpSessionLinstener
	2、重写sessionCreated 创建会话 sessionDestoryed 销毁会话
	3、在web.xml中配置该监听器
	4、在JSP添加访问人数
		<body>
			在线人数:<%=session.getAttribute("userNumber") %>
		</body>

																								2020-05-16
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值