Servlet的具体功能实现

一、getRequestDispatcher

request.getRequestDispatcher().forward(request,response);

请求转发(RequestDispatcher)的过程
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。

二、WebServlet注解

@WebServlet(name = "AdminStudentAdd", value = "/admin/student/add")

WebServlet用于映射servlet与浏览器(jsp页面表单或者地址栏)的地址请求

三、文件处理

  1. 表单的 enctype 属性
    在 HTML 中用于定义在提交表单时发送到服务器的数据编码类型。它告诉浏览器如何将表单数据发送到服务器,特别是当涉及到文件上传时。

enctype 属性可以有以下几个值:

application/x-www-form-urlencoded(默认值):这是 HTML 表单的默认编码方式。当你不使用文件上传,并且表单数据只包含 ASCII 字符时,通常使用这个值。在提交表单时,浏览器会将表单数据编码为名称/值对,并使用 URL 编码(也称为百分比编码)对特殊字符进行转义。

multipart/form-data:这个值用于包含文件上传的表单。当表单包含 <input type="file"> 元素时,应该使用这个编码类型。浏览器会将表单数据编码为一条消息,该消息由多个部分组成,每个部分都是一条 MIME 消息,包含表单的一个字段。这使得可以发送二进制数据,如文件内容。

text/plain:这个值不常用,并且不被所有的浏览器支持。它表示数据应该作为纯文本发送,而不进行任何编码或转义。

在大多数情况下,如果你只是发送文本数据,那么 application/x-www-form-urlencoded 就足够了。但是,如果你需要上传文件,或者你的表单数据包含非 ASCII 字符(如中文字符)并且你不想在服务器端进行额外的解码,那么 multipart/form-data 可能是更好的选择。
注意:当使用 multipart/form-data 编码类型时,表单的提交方法(method 属性)必须是 POST,因为 GET 方法不支持这种类型的编码。

  1. 在servlet中要添加注解@MultipartConfig
    你可以指定以下参数:

location:文件上传的临时存储位置。如果未指定,则使用 Servlet 容器的默认位置。
maxFileSize:允许上传的单个文件的最大大小(以字节为单位)。如果未指定,则使用 Servlet 容器的默认大小。
maxRequestSize:整个请求的最大大小(包括所有文件和表单数据)。如果未指定,则使用 Servlet 容器的默认大小。
fileSizeThreshold:一个阈值,表示何时开始将数据写入磁盘。如果文件上传的内容小于这个阈值,则整个文件都会保留在内存中。如果未指定,则使用 Servlet 容器的默认值。

  1. 文件处理的方法
        Part filePart = request.getPart("pic");     //获得文件
        String newfileName = "";
        //得到上传的文件名与文件大小并做判断
        if (filePart != null && filePart.getSize() > 0) {
            //判断文件类型
            String fileName = filePart.getSubmittedFileName();  //得到文件名
            String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();  //得到文件后缀
            if (!suffix.equals("jpg") && !suffix.equals("jpeg") && !suffix.equals("png") && !suffix.equals("gif") && !suffix.equals("bmp")) {
                response.getWriter().println("<script>alert('请上传图片格式的文件');history.back();</script>");
                return;
            }
            newfileName = UUID.randomUUID() + name + "." + suffix;  //文件重命名
            filePart.write(ResourceBundle.getBundle("config").getString("uploadPath") + newfileName);
            String sql = "INSERT INTO `data0622`.`animal` (name, gender, type, pic, hobby, addTime, introduction) VALUES (?, ?, ?, ?, ?, ?, ?)";
            DB.executeUpdate(sql, name, gender, type, newfileName, hobbyString, System.currentTimeMillis(), introduction);
            response.getWriter().println("<script>alert('添加成功');location.href='/admin/animal/list';</script>");
        } else {
            response.getWriter().println("<script>alert('未选择图片或者文件大小为0');history.back();</script>");
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Tomcat classes 放Java文件编译后的字节码文件lib放依赖包web应用中默认访问的是index.j...
    长大了也种不出太阳阅读 1,355评论 0 0
  • [TOC] 第一章:初识Servlet 1.1-什么是Servlet及作用 Servlet(Server Appl...
    雷哒哒阅读 1,175评论 0 0
  • Servlet: server applet 运行在服务器端的小程序 Servlet就是一个接口,定义了Java类...
    听你讲故事啊阅读 1,950评论 0 0
  • 1.JSP 1.1 JSP简介 JSP(全称Java Server Pages),是运行在服务端的动态网页开发技术...
    AxisX阅读 3,772评论 0 2
  • 主要内容 web相关概念回顾 web服务器软件:Tomcat Servlet入门学习 HTTP Request R...
    qujq阅读 1,616评论 0 0

友情链接更多精彩内容