>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23782 个阅读者 刷新本主题
 * 贴子主题:  Servlet3.0的注解 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2024-04-29 01:37:10     消息  查看  搜索  好友  邮件  复制  引用



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() {
        
    }
}

注解的主要参数及其含义
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
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);
    }
}

注解主要参数
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
参数和Filter差不多

4.其中在上面的注解Filter和Servlet用到的@WebInitParam 注解 表示的就是参数啦 相当于<init-param>
参数以及含义
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
5.@MultipartConfig  该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
例子:


<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'}");
    }
}

程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Swing组件(上)
  JavaWeb开发-->自定义JSP标签(Ⅱ)
  JSP与Hibernate开发-->持久化层的映射类型
  Java网络编程-->Java反射机制
  精通Spring-->创建综合购物网站应用
  Vue3开发-->Vue简介
  面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?
  做前后端分离项目前必须要知道的事
  程序员:我终于知道HTTP的post和get请求方式的区别
  JSP 发送邮件
  JSP 点击量统计范例
  Servlet 访问客户端 HTTP 请求 信息
  Servlet的运作原理
  深入解读HTTP Session
  关于把JSP文件放在Web应用的WEB-INF目录下的优缺点的探讨
  RESTFUL 是否是新的SOAP
  HTML5 简介
  Apache Ant 1.9.12 和 1.10.4 发布,解压安全修复
  JavaEE的发展趋势
  利用Tomcat自带的过滤器类来处理HTTP请求中的字符编码
  孙卫琴的JavaWeb视频教程的源代码下载
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


線上博弈遊戲中被區分為兩類,第一類是需要靠磨練技巧來在遊戲中取得勝利的,例如德州撲克牌、牛牛。第二類就是百家樂這種不需要有技巧也不需要完全了解遊戲規則就可以玩的夢幻百家樂,而且真人百家樂是相對於其他線上博弈遊戲來說最公平而且賭場優勢最低的遊戲
发文章时间 2024-04-29 01:37:10
 IPIP: 已设置保密 1 楼     
该用户目前不在线 mikhop 
  

威望: 0
级别: 侠客
魅力: 210
经验: 210
现金: 1176
发文章数: 22
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


不知道从何时开始,那些曾经让台湾宾果走势图我执着的人和事都变得可有福彩双色球走势图可无。时间慢慢告诉了我,要学会澳洲幸运20走势图说:I don't care.
发文章时间 2024-04-29 01:37:10
 IPIP: 已设置保密 2 楼     
1页 2条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。