1.@WebListener注解

表示的就是我们之前的在xml中配置的

  1. <listener>
  2. <listener-class>ListenerClass</listener-class>
  3. </listener>

下面我们只需要在我们写好的Listener类上面加上这个@WebListener注解就OK啦

使用Listener的类必须使用下列的几个接口

  1. ServletContextListener
  2. ServletContextAttributeListener
  3. ServletRequestListener
  4. ServletRequestAttributeListener
  5. HttpSessionListener
  6. HttpSessionAttributeListener

例子:

  1. package com.hotusm.web.listener;
  2.  
  3. import javax.servlet.annotation.WebListener;
  4. import javax.servlet.http.HttpSessionEvent;
  5. import javax.servlet.http.HttpSessionListener;
  6.  
  7. @WebListener
  8. public class MyHttpSessionListener implements HttpSessionListener{
  9.  
  10. @Override
  11. public void sessionCreated(HttpSessionEvent se) {
  12. System.out.println("创建session ");
  13. }
  14.  
  15. @Override
  16. public void sessionDestroyed(HttpSessionEvent se) {
  17. System.out.println("销毁session ");
  18. }
  19.  
  20. }

这样,在我们启动的时候 就会自动的帮助我们创建一个Listener了,这个注解有一个属性,是这个listener的描述信息

2.@WebFilter  这个注解就是表示的拦截器  同样的也是直接注解在写好的Filter上面就ok了。

  1. package com.hotusm.web.filter;
  2.  
  3. import javax.servlet.*;
  4. import javax.servlet.annotation.WebFilter;
  5. import javax.servlet.annotation.WebInitParam;
  6. import javax.servlet.http.HttpServletRequest;
  7. import java.io.IOException;
  8.  
  9. @WebFilter(filterName = "filter1", urlPatterns="/*",
  10. dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD},
  11. initParams={@WebInitParam(name="account",value="1234"),@WebInitParam(name="hotusm",value="1234")}
  12. )
  13.  
  14. public class MyFilter implements Filter {
  15. @Override
  16. public void init(final FilterConfig filterConfig) throws ServletException {
  17.  
  18. String account = filterConfig.getInitParameter("account");
  19. String hotusm = filterConfig.getInitParameter("hotusm");
  20.  
  21. System.out.println("account:"+account+" hotusm:"+hotusm);
  22. }
  23.  
  24. @Override
  25. public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
  26. chain.doFilter(request, response);
  27. }
  28.  
  29. @Override
  30. public void destroy() {
  31.  
  32. }
  33. }

注解的主要参数及其含义

3.@WebServlet 这个注解表示的就是一般的Servlet

  1. package com.hotusm.web.servlet;
  2.  
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebInitParam;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10.  
  11. import java.io.IOException;
  12.  
  13. @WebServlet(name = "servlet1", urlPatterns = {"/url1", "/url2","url3/*"}, loadOnStartup = 1,
  14. initParams = {
  15. @WebInitParam(name = "name", value="hotusm")
  16. })
  17. public class MyServlet extends HttpServlet {
  18.  
  19. private String name;
  20.  
  21. public MyServlet() {
  22. System.out.println("load on startup");
  23. }
  24.  
  25. @Override
  26. public void init() throws ServletException {
  27. super.init();
  28. name= this.getInitParameter("name");
  29. }
  30.  
  31. @Override
  32. protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
  33. HttpSession session = req.getSession();
  34. System.out.println(session);
  35. System.out.println("name:"+name);
  36. }
  37. }

注解主要参数

参数和Filter差不多

4.其中在上面的注解Filter和Servlet用到的@WebInitParam 注解 表示的就是参数啦 相当于<init-param>

参数以及含义

5.@MultipartConfig  该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下:

通过上面的定义我们可以知道@MultipartConfig主要用来指明servlet的请求当中包含文件,文件我们通过以下的方式获取: 
Part part = req.getPart("filename");

下面是一个简单的示例:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>upload your logo</title>
  5. </head>
  6. <body>
  7.  
  8. <form action="/multipart" method="post" enctype="multipart/form-data">
  9. Please choose your logo: <input type="file" name="logo"><br>
  10. <input type="submit" value="submit">
  11. </form>
  12. </body>
  13. </html>

2 Servlet代码片段

  1. import javax.servlet.ServletException;
  2. import javax.servlet.annotation.MultipartConfig;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import javax.servlet.http.Part;
  8. import java.io.IOException;
  9. import java.io.PrintWriter;
  10.  
  11. @WebServlet(urlPatterns = {"/multipart"})
  12. @MultipartConfig(location = "G:\\maven-practice\\sample-web\\files\\",
  13. maxFileSize = 2, maxRequestSize = 200)
  14. public class MultipartServletDemo extends HttpServlet {
  15. @Override
  16. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  17. Part part = req.getPart("logo");
  18. PrintWriter out = resp.getWriter();
  19. out.println("file name: " + part.getName());
  20. out.println("file size: " + part.getSize());
  21. out.println("file content type: " + part.getContentType());
  22. out.println("upload successfully");
  23. out.flush();
  24. out.close();
  25. }
  26. }

注解主要参数

参数和Filter差不多

4.其中在上面的注解Filter和Servlet用到的@WebInitParam 注解 表示的就是参数啦 相当于<init-param>

参数以及含义

5.@MultipartConfig  该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下:

十二:Servlet3.0的注解的更多相关文章

  1. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  2. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  3. Servlet传统配置方式和Servlet3.0使用注解的方式

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: <servlet> <servlet-name ...

  4. Servlet3.0的注解自定义原生Listener监听器实战

    简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战 自定义Listener(常用的监听器 servletContextListener.httpSessionListen ...

  5. Servlet3.0的注解自定义原生Servlet实战

    Servlet3.0的注解自定义原生Servlet实战 讲解:使用 Servlet3.0的注解自定义原生Servlet和Listener 自定义原生Servlet package net.xdclas ...

  6. 【JavaWeb】Servlet3.0中注解驱动开发

    一.概述 二.@WebServlet注解 三.共享库/运行时插件 2.1 注册Servlet 2.2 注册监听器 2.3 注册过滤器 一.概述 Servlet3.0中引入了注解开发 二.@WebSer ...

  7. Servlet3.0的注解

    1.@WebListener注解 表示的就是我们之前的在xml中配置的 <listener> <listener-class>ListenerClass</listene ...

  8. SpringBoot(10) Servlet3.0的注解:自定义原生Servlet、自定义原生Listener

    一.自定义原生Servlet 1.启动类里面增加注解 @ServletComponentScan 2.Servlet上添加注解  @WebServlet(name = "userServle ...

  9. springboot学习(二十二)_ 使用@Constraint注解自定义验证注解

    最近项目在使用如@NotNull @Max 等配合@vaild 注解进行验证传过来的参数校验,然后通过统一异常处理,直接返回给前端,不用在业务代码中对这些参数进行校验.但是官方提供的并不能全部满足项目 ...

随机推荐

  1. 【经典结构】单例模式Singleton

    单例模式Singleton 1.含义 单例模式:即一个类只能创建一个实例. 只有一个实例 --> 不可以从类外new对象 --> 构造器私有化private --> 从类里创建实例: ...

  2. 在js中对属性的操作

    一:访问属性 两种方法: ①:对象名.属性名 function  test(sno,age,sex){      this.sno=sno,      this.age=age, this.sex=s ...

  3. Linux下如何查看定位当前正在运行软件的配置文件

    netstat命令 用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况 netstat -lntup 说明: l:listening n:num t:tc ...

  4. .net 知新:【3】.net 5 项目结构说明和发布部署

    .net 5的项目目录结构和.net framework有些明显的变化,包括显示结构和项目文件,从这两个方面看看有哪些变化. 项目目录结构 就以上篇用的demo项目为例([.net 知新:[2] .N ...

  5. 字符串对象 API

    length--获取字符串的长度 charAt(n)--查找下标对应的字符串 indexOf(str)--查找某个字符首次出现的下标,找不到返回-1 lastIndexOf(str)--查找某个字符最 ...

  6. 浅谈Blazor开发的那些事

    在这篇文章中,我们将解决一些常见的Blazor问题.具体来说就是"什么是Blazor",但更重要的是"为什么要用Blazor".既然我们已经有了Angular. ...

  7. 浅谈vue响应式原理及发布订阅模式和观察者模式

    一.Vue响应式原理 首先要了解几个概念: 数据响应式:数据模型仅仅是普通的Javascript对象,而我们修改数据时,视图会进行更新,避免了繁琐的DOM操作,提高开发效率. 双向绑定:数据改变,视图 ...

  8. MIPS Pwn赛题学习

    MIPS Pwn writeup Mplogin 静态分析   mips pwn入门题. mips pwn查找gadget使用IDA mipsrop这个插件,兼容IDA 6.x和IDA 7.x,在ID ...

  9. Java ParallelStream

    ParallelStream 处理数据 Stream 接口提供了parallelStream方法来将集合转换为并行流.即将一个集合分为多个数据块,并用不同的线程分别处理每个数据块的流. 并且使用par ...

  10. Java线程基础及多线程的实现

    一.进程和线程 1.进程:正在运行的程序         是系统进行资源分配和调用的独立单位         每一个进程都有它自己的内存空间和系统资源 2.线程是进程中的单个顺序控制流,是一条执行路径 ...