首页 > 其他 > 详细

Servlet 个人理解

时间:2019-08-29 18:05:44      阅读:93      评论:0      收藏:0      [点我收藏+]

Tomcat 是个Java应用程序, 作为一个Web容器,  带有请求/响应的HTTP服务器                     

Web容器

  创建Servlet实例, 完成Servlet名称注册和URL模式对应, Web容器转发给Servlet处理,

  请求过来时 创建HttpServletRequest 和 HttpServletResponse 对象,   请求结束时销毁,

 

 Servlet

  生命周期重要的3个方法, init()  service()  destory()

  Serlvet ServletConfig GenericServlet, 3个类的关系,    GenericServlet 类会把默认的配置init(ServletConfig servletConfig) 放入Servlet中

  ServletContext   在整个Web应用程序加载容器完成之后会创建一个全局的ServletContext 对象 代表整个英雄程序, 可通过ServletConfig获取

  监听器

    ServletRequestListener ,    HttpSessionListener,    ServletConttextListener

    Session的属性变化监听,移除监听, 

  过滤器
    请求的编码格式过滤

    请求封装器,   在请求过来时替换<>这些防止xss攻击,SQL注入

package com.example.demo.filter;

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

@WebFilter
public class EscapeFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("EscapeFilter doFilter");
        HttpServletRequestWrapper requestWrapper = new EscapeWrapper((HttpServletRequest) request);
        chain.doFilter(requestWrapper, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("EscapeFilter init");
    }

    @Override
    public void destroy() {
        System.out.println("EscapeFilter destroy");
    }

}

Wrapper

package com.example.demo.filter;

import org.apache.commons.lang3.StringEscapeUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class EscapeWrapper extends HttpServletRequestWrapper {

    public EscapeWrapper(HttpServletRequest request) {
        super(request);
    }

    @Override
    public String getParameter(String name) {
        String value = getRequest().getParameter(name);
        return StringEscapeUtils.escapeHtml4(value);
        //return super.getParameter(name);
    }
}

     响应封装器,  同请求封装器,大同小异

Servlet 个人理解

原文:https://www.cnblogs.com/eason-d/p/11431171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!