• Servlet3.0的注解


    1.@WebListener注解

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

    <listener>
    <listener-class>ListenerClass</listener-class>
    </listener>

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

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

    ServletContextListener
    ServletContextAttributeListener
    ServletRequestListener
    ServletRequestAttributeListener
    HttpSessionListener
    HttpSessionAttributeListener

    例子:

    package com.hotusm.web.listener;
    
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    @WebListener
    public class MyHttpSessionListener implements HttpSessionListener{
    
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("创建session ");
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("销毁session ");
        }
    
    }

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

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

    package com.hotusm.web.filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    
    @WebFilter(filterName = "filter1", urlPatterns="/*",
            dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD},
            initParams={@WebInitParam(name="account",value="1234"),@WebInitParam(name="hotusm",value="1234")}
            )
    
    public class MyFilter implements Filter {
        @Override
        public void init(final FilterConfig filterConfig) throws ServletException {
            
            String account = filterConfig.getInitParameter("account");
            String hotusm = filterConfig.getInitParameter("hotusm");
            
            System.out.println("account:"+account+" hotusm:"+hotusm);
        }
    
        @Override
        public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {     
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {
            
        }
    }

    注解的主要参数及其含义

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

    package com.hotusm.web.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebInitParam;
    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;
    
    @WebServlet(name = "servlet1", urlPatterns = {"/url1", "/url2","url3/*"}, loadOnStartup = 1,
            initParams = {
                    @WebInitParam(name = "name", value="hotusm")
            })
    public class MyServlet extends HttpServlet {
        
        private String name;
    
        public MyServlet() {
            System.out.println("load on startup");
        }
    
        @Override
        public void init() throws ServletException {
            super.init();
            name= this.getInitParameter("name");
        }
    
        @Override
        protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
            HttpSession session = req.getSession();
            System.out.println(session);
            System.out.println("name:"+name);
        }
    }

    注解主要参数

    参数和Filter差不多

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

    参数以及含义

     

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

     例子:

    <form action="upload" enctype="multipart/form-data" method="POST">
        <input name="file" type="file" />
        <input type="submit" value="Upload" />
    </form>
    package com.hotusm.web.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
    
    @MultipartConfig(location="C://upload")
    @WebServlet(name="upload",urlPatterns={"/upload"})
    public class UploadServlet extends HttpServlet{
        
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("utf-8");  
            resp.setContentType("text/html; charset=UTF-8");  
            PrintWriter out = resp.getWriter();  
            Part part = req.getPart("file");  
            String fileName = part.getHeader("content-disposition");
            System.out.println(fileName);
            System.out.println(fileName.substring(fileName.lastIndexOf(File.separator)+1, fileName.length()-1));
            part.write( fileName.substring(fileName.lastIndexOf(File.separator)+1, fileName.length()-1));
            out.write("{'type':'1','msg':'success'}");
        }
    }
  • 相关阅读:
    java_web连接SQL_server详细步骤
    探索需求-设计前的质量之二
    EF三种编程方式详细图文教程(C#+EF)之Code First
    EF三种编程方式详细图文教程(C#+EF)之Model First
    EF三种编程方式详细图文教程(C#+EF)之Database First
    探索需求-设计前的质量之一
    编写有效用例之三
    编写有效用例之二
    golang 环境安装
    golang 命令详解
  • 原文地址:https://www.cnblogs.com/zr520/p/6095977.html
Copyright © 2020-2023  润新知