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,则不能使用某些方法,否则将抛异常。

  

原文地址:https://www.cnblogs.com/worth-/p/13680834.html