• Servlet3.x 应用开发


    Servlet.x新特性概述

    Servlet标准一直在推进,Servlet3.0相比之前的版本有很多特性和改进。

    学习Java Web开发,Servlet绝对是最重要也是最应该好好掌握和深入理解的部分。

    异步处理支持

    Servlet3.x之前的针对每个请求都是阻塞的,只要服务器没有处理完任务时不会响应客户端的,这样的体验并不好。 解决方法可以是借组消息中间件来异步处理,Servlet3.x开始支持开启新线程异步处理,无需等待新线程处理完成即可响应客户端。

    @WebServlet

    @WebServlet 用于将一个类声明为Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为Servlet。

    案例:

    package servlet;
    
    import pojo.User;
    import service.IUserService;
    import service.UserService;
    import javax.servlet.ServletException;
    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("/login")
    
    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID=1L;
        private IUserService service;
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session=request.getSession();
            String name=request.getParameter("name");
            String password=request.getParameter("password");
            service=new UserService();
            User user=service.userLogin(name,password);
            if(user!=null){
                session.getAttribute("user");
                request.getRequestDispatcher("/index2").forward(request,response);
            }else {
                response.sendRedirect("login.jsp");
            }
        }
        protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
        }
    }

     

    文件上传下载新方式支持

     Servlet3.x之前对于文件上传并不友好,编写相对麻烦。

    Servlet3.x之后提供了Part类来表示上传文件对象,完全可以借助该对象实现上传功能。 备注:可以去查看Part的源码和其中的方法

     

    技术心得:

      如果请求的是MINE类型不是multipart/form-date,则不能使用某些方法,否则将抛异常。

      

  • 相关阅读:
    cpp问题浅析之: error LNK2019: 无法解析的外部符号 "public:
    前端实现图片在浏览器窗口随机移动
    使用Redis实现分布式锁
    微服务之服务注册中心
    Spring之读写分离
    对象存储服务之MinIO
    VMware三种网络模式详解
    iproute2路由配置(ip rule、ip route、traceroute)
    内容分发网络CDN
    Kubernetes(k8s)Ingress原理
  • 原文地址:https://www.cnblogs.com/worth-/p/13680834.html
Copyright © 2020-2023  润新知