javaWeb初识 ServletContext全局对象,过滤器,监听器-阿里云开发者社区

开发者社区> 死瘦宅> 正文

javaWeb初识 ServletContext全局对象,过滤器,监听器

简介: ServletContext全局对象: import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.
+关注继续查看

ServletContext全局对象:


import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class HelloServlet extends HttpServlet {


    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ServletConfig config = this.getServletConfig();//创建ServletConfig对象
        System.out.println(config.getInitParameter("className"));
        System.out.println(config.getInitParameter("url"));

        ServletContext servletContext = this.getServletContext();
//        servletContext.getAttribute()//得到对象中的值 通过name的
//        servletContext.setAttribute();//加入参数  键值对
//        servletContext.removeAttribute(); 删除参数
//        servletContext.getAttributeNames(); 得到对象中的参数名称
        System.out.println("servletContext.getRealPath(\"/WEB-INF\") = " + servletContext.getRealPath("/WEB-INF"));
          //获得文件的绝对路径
        
        System.out.println("servletContext.getContextPath() = "
                + servletContext.getContextPath());
          //得到工程路径如果工程在root路径下那就是空的
//        this.getServletConfig().getServletContext() 获得SerivetContext对象方式
//        this.getServletContext() 获得SerivetContext对象方式
//        req.getServletContext() 获得SerivetContext对象方式
//        req.getSession().getServletContext() 获得SerivetContext对象方式

    }
}

过滤器:
所有资源访问之前被调用对象
1.数据库加载
2.权限验证
3.数据检查
4.数据加工
5.数据缓存


import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//@WebFilter("*")
public class AFilter implements Filter {
    //过滤器实现的是一个接口
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        if (request.getRequestURL().toString().endsWith(".jpg")) {//判断条件
            //通行
            //FilterChain 中的方法
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

监听器里面有监听Session创建啊销毁啊添加啊等方法


@WebListener
public class SessionListener implements HttpSessionIdListener,
        HttpSessionListener, HttpSessionAttributeListener{
    public void sessionIdChanged(HttpSessionEvent var1, String var2){
        System.out.println("sessionIdChanged..");
    }

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionCreated..");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionDestroyed..");
    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("attributeAdded..");
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("attributeRemoved..");
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("attributeReplaced..");
    }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java Intercepting Filter Pattern(拦截过滤器)
拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。
744 0
《Java EE 7精粹》—— 2.2 Servlet过滤器
Servlet过滤器用于更新进入Servlet的请求和走出Servlet的响应中的有效负载和头信息。过滤器不产生响应,他们只修改或适配请求和响应,认识到这一点是很重要的。Servlet过滤器的一些典型的用例包括身份验证、日志记录、数据压缩和加密。
1334 0
javaWeb初识 ServletContext全局对象,过滤器,监听器
ServletContext全局对象: import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.
697 0
《Java EE 7精粹》—— 2.3 事件监听器
事件监听器提供对ServletContext、HttpSession和ServletRequest对象生命周期的回调事件。这些监听器实现了支持上述对象状态变化事件通知的接口类。每个类可以通过@WebListener注解定义或者在web.xml中声明,抑或通过ServletContext. addListener()方法注册。
1343 0
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二、解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name =
1284 0
servlet监听器实现在线人数统计
一.准备知识 servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。
847 0
+关注
62
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载