静态代码块问题
public class 的按顺序static{}静态代码块优先执行,然后执行其他类中的,如果没有用到就不执行,因为随着类的加载才执行,优先于构造方法,且执行一次,有继承关系先执行父类的;static变量有顺序关系,static方法没有顺序关系,static方法调用时才执行。
转:/ibelieve618/p/6403573.html
此时创建了两个对象,一个在字符串常量池中创建了aaa,new String()又创建了一个
此时第二条只创建了一个对象,因为字符串常量池中已经有aaa了,直接指向过去
自动装箱,数字常量池-128到127,指向常量池
------------|Servlet 接口
--------------------|GenericServlet 类
-----------------------------|HttpServlet 类
1.生命周期方法(单例,线程不安全,效率最高)
初始化:public void init(ServletConfig servletConfig) throws ServletException {System.out.println("init!");}
只执行一次
调用服务执行: public void service(ServletRequest request, ServletResponse response)
每一次请求就执行一次
销毁:public void destroy() {System.out.println("destory!");}
服务器关闭时执行,也只执行一次
2.ServletConfig
API:
String getServletName() //返回<servlet-name>中的内容
ServletContext getServletContext() //获取Servlet上下文对象
String getInitParameter(String name) //通过名称获取制定初始化参数的值
Enumeration getInitParameterNames() //获取所有初始化参数名称
public void init(ServletConfig servletConfig) throws ServletException {System.out.println("init!");System.out.println(servletConfig.getInitParameter("p1")); //根据名称获取值System.out.println(servletConfig.getInitParameter("p2"));Enumeration enumeration=servletConfig.getInitParameterNames(); //获取名称的集合while(enumeration.hasMoreElements()){System.out.println(enumeration.nextElement());}}
Filter
四种拦截方式:request,forward,include,error
多个filter执行顺序和mapping位置顺序有关
引用场景:
执行预处理工作,例如设置编码格式判断用户是否登录,用户ip是否被禁用在目标资源执行后,进行后续处理特殊工作,例如把目标资源输出的数据进行处理
想要对HttpServletRequest进行掉包(解决全站编码问题),可以继承HttpServletRequestWrapper,覆写其中的方法就行
JavaWebListener
事件源:ServletContext(生命周期监听【ServletContextListener{初始化时调用,死亡时调用}】,属性监听【ServletContextAttributeListener{添加属性时调用,替换属性时调用,移除属性时调用}】)
HttpSession(生命周期监听【HttpSessionListener{初始化时调用,死亡时调用}】,属性监听【HttpSessionAttributeListener{添加属性时调用,替换属性时调用,移除属性时调用}】)
ServletRequest(生命周期监听【ServletRequestListener{初始化时调用,死亡时调用}】,属性监听【ServletRequestAttributeListener{添加属性时调用,替换属性时调用,移除属性时调用}】)
返回的是旧的值
SessionBindingListener,作用在JavaBean上,不需要在web.xml中注册
HttpSessionActivationListener:监听Session的活化和钝化,一般作用在Bean上
如果觉得《无聊无聊~~~~》对你有帮助,请点赞、收藏,并留下你的观点哦!