Servlet3,java事务面试题视频

1、动态注册 Servlet


比较简单,直接上代码,先自定义一个 servlet,这个 servlet 的功能比较简单,将 servlet 的参数信息输出了。

package com.javacode2018.springboot.lesson003; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration; public class MyServlet extends HttpServlet {     @Override     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //将servlet的参数信息输出         resp.setContentType("text/html;charset=UTF-8");         Enumeration names = this.getInitParameterNames();         while (names.hasMoreElements()) {             String name = names.nextElement();             String value = this.getInitParameter(name);             resp.getWriter().write(String.format("%s:%s  ", name, value));         }     } }

下面我们自定义一个ServletContextListener,在其contextInitialized方法中通过硬编码的方式注册上面自定义的MyServlet,为了演示效果,这里我们通过硬编码的方式给注册的 Servlet 设置了 2 个属性,稍后访问 servle 的时候,会被输出到客户端。

package com.javacode2018.springboot.lesson003; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContextEvent; import jakarta.servlet.ServletContextListener; import jakarta.servlet.ServletRegistration; import jakarta.servlet.annotation.WebListener; //@0:本案例中没有在web.xml中配置这个Listener,所以需要在MyServletContextListener上加上@WebListener注解,采用注解的方式来注册Listener @WebListener public class MyServletContextListener implements ServletContextListener {     @Override     public void contextInitialized(ServletContextEvent sce) {         //@1、获取ServletContext         ServletContext sc = sce.getServletContext();         //@2、调用sc.addServlet注册自定义的Servlet,返回一个ServletRegistration.Dynamic对象         ServletRegistration.Dynamic myServlet = sc.addServlet("myServlet", MyServlet.class);         //@3、通过ServletRegistration.Dynamic对象可以设置servlet所有配置信息,这里我们只演示了2个方法,还有很多方法大家可以去试试         myServlet.addMapping("/myServlet");         myServlet.setInitParameter("name", "路人");         myServlet.setInitParameter("lesson", "SpringBoot系列!");     } }

发布到 tomcat,然后访问下面地址

http://localhost:8080/myServlet

输出

2、动态注册 Filter


过程和动态注册 Servlet 类似,咱们先指定一个 Filter,代码如下,这个 Filter 需要拦截所有请求,会将每个请求的耗时输出到控制台。

package com.javacode2018.springboot.lesson003; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpFilter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class CostTimeFilter extends HttpFilter {     @Override     protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {         String url = req.getRequestURL().toString();         long st = System.currentTimeMillis();         try {             super.doFilter(req, res, chain);         } finally {             long costTime = System.currentTimeMillis() - st;             System.out.println(String.format("url:[%s],耗时(ms):[%s]", url, costTime));         }     } }

注册的代码和上注册 MyServlet 的代码放在一起,在自定义的MyServletContextListener#contextInitialized方法中追加下面代码。

//@4、注册自定义的Filter,返回一个FilterRegistration.Dynamic对象 FilterRegistration.Dynamic costTimeFilter = sc.addFilter("costTimeFilter", CostTimeFilter.class); //@5、通过FilterRegistration.Dynamic对象可以设置Filter的所有配置信息 costTimeFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");

重启 tomcat,再次访问http://localhost:8080/myServlet,tomcat 控制台输出

url:[http://localhost:8080/myServlet],耗时(ms):[1]

3、动态注册 Listener


这里以 ServletRequestListener 为例来说明,其他的 Listener 注册方式一样。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了

《Java中高级核心知识全面解析》

小米商场项目实战,别再担心面试没有实战项目:

转存中…(img-vRafFm1r-1711784397865)]

小米商场项目实战,别再担心面试没有实战项目:

[外链图片转存中…(img-jsIrthn0-1711784397866)]

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值