您现在的位置是:主页 > news > 郑州汉狮做网站多少钱/优化建站

郑州汉狮做网站多少钱/优化建站

admin2025/5/5 22:22:15news

简介郑州汉狮做网站多少钱,优化建站,怎么做响应式网站,信誉好的郑州网站建设javaWeb的三大组件:Servlet、Filter和Listener 过滤器 介绍 过滤器(Filter)也称为拦截器,它是Servlet技术中非常实用的技术,Web开发人员通过Filter技术,可以在用户访问某个Web资源(JSP、Servlet、HTML、图片、CSS等)之前&#x…

郑州汉狮做网站多少钱,优化建站,怎么做响应式网站,信誉好的郑州网站建设javaWeb的三大组件:Servlet、Filter和Listener 过滤器 介绍 过滤器(Filter)也称为拦截器,它是Servlet技术中非常实用的技术,Web开发人员通过Filter技术,可以在用户访问某个Web资源(JSP、Servlet、HTML、图片、CSS等)之前&#x…

 

javaWeb的三大组件:Servlet、Filter和Listener

 

过滤器

介绍

  • 过滤器(Filter)也称为拦截器,它是Servlet技术中非常实用的技术,
  • Web开发人员通过Filter技术,可以在用户访问某个Web资源(JSP、Servlet、HTML、图片、CSS等)之前,对访问的请求和响应进行拦截,从而实现一些特殊功能。
  • 例如:验证用户访问权限、记录用户操作、对请求进行重新编码、压缩响应信息等。

运行原理

  • 当用户的请求到达指定的网页之前,可以借助过滤器来改变这些请求的内容,此过程也称为“预处理”;
  • 当执行结果要响应到用户之前,可经过过滤器修改响应输出的内容,此过程称为“后处理”。
  • 运行过程
    • Web容器判断接收的请求资源是否有与之匹配的过滤器,如果有,容器将请求交给相应过滤器进行处理;
    • 在过滤器预处理过程中,可以改变请求的内容,或者重新设置请求的报头信息,然后将请求发给目标资源;
    • 目标资源对请求进行处理后作出响应;
    • 容器将响应转发回过滤器;
    • 在过滤器后处理过程中,可以根据需求对响应的内容进行修改;
    • Web容器将响应发送回客户端。

过滤器链:在一个Web应用中,也可以部署多个过滤器,这些过滤器组成了一个过滤器链。

 

 

例题1:创建一个过滤器,实现网站访问计数器的功能,并配置网站访问量的初始值设置为6000。

package cn.sdut.filter;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;@WebFilter(urlPatterns= {"/index.jsp"},initParams = {@WebInitParam(name = "count",value="60000")})
public class CounterFilter implements Filter {private int count;public CounterFilter() {// TODO Auto-generated constructor stub}public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {count++;//访问数量自增//将ServletRequest转换成HttpServletRequestHttpServletRequest req = (HttpServletRequest) request;//获取ServletContextServletContext context = req.getSession().getServletContext();context.setAttribute("count", count);//将来访数量放到ServletContext中chain.doFilter(request, response);//向下传递过滤器}public void init(FilterConfig fConfig) throws ServletException {String param = fConfig.getInitParameter("count");//获取初始化参数count = Integer.valueOf(param);}}

 

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"></head>
<title>主界面</title>
</head>
<body><h2>欢迎光临,<br/>您是本站的第【<%=application.getAttribute("count") %>】位访客!</h2>
</body>
</html>

监听器

什么是监听器?

监听器就是一个实现特定接口的普通的java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器的某个方法将立即被执行。

Web容器运行过程中,有哪些关键点事件?

Web应用被启动、用户会话开始、用户会话结束、用户请求到达等。

监听器监听的事件源有几种?

三种。ServletContext、HttpSession和ServletRequest三种域对象。

针对以上三种对象,又把这多种类型的监听器划分为三种类型:

  • 监听三个域对象创建和销毁的事件监听器
  • 监听域对象中属性的增加和删除的事件监听器
  • 监听绑定到HttpSession域中的某个对象的状态的事件监听器。
Listener接口Event类
ServletContextListServletContextEvent
ServletContextAttributeListenerServletContextAttributeEvent
HttpSessionListenerHttpSessionEvent
HttpSessionActivationListener
HttpSessionAttributeListenerHttpSessionBindingEvent
HttpSessionBindingListener
ServletRequestListenerServletRequestEvent
ServletRequestAttributeListenerServletRequestAttributeEvent

 

 

 

 

 

 

 

 

 

监听器的实现步骤

1、写一个类,实现监听器接口的所有方法

2、使用注解或者web.xml中进行监听器的配置

注解配置 @WebListener

web.xml中配置

<listener>

       <listener-class>全限定类名</listener-class>

</listener>

示例:

package cn.sdut.listener;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;@WebListener
public class OnlineNumberListenerr implements HttpSessionListener {int count=0;public void sessionCreated(HttpSessionEvent arg0)  { //session会话创建时,web容器自动调用此方法count++;ServletContext context = arg0.getSession().getServletContext();context.setAttribute("onlineNum", count);}public void sessionDestroyed(HttpSessionEvent arg0)  { //session会话销毁时,web容器自动调用此方法count--;ServletContext context = arg0.getSession().getServletContext();context.setAttribute("onlineNum", count);}}
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>主界面</title>
</head>
<body>欢迎你,<%String name = (String)session.getAttribute("name");out.print(name);%><br><p>当前在线人数: ${onlineNum }</p><br><a href="LogoutServlet">退出登录</a>
</body>
</html>