栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

利用ServletContext对象进行模拟添加保存学生信息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用ServletContext对象进行模拟添加保存学生信息

创建一个java web项目 准备一个负责收集学生信息的网页add.html



    
    添加页面


    
名字
年龄
上传头像
学生类
package com.yunlian.servelt;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//使用lombok 插件 简化 get set toString
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student {
    private String name;
    private int age;
    private String imgSrc;
}

创建一个Servlet创建一个保存学生类得集合,通过集合工具类保证其线程安全
package com.yunlian.servelt;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import java.util.ArrayList;
import java.util.Collections;

//这是一个 专门初始化的 servlet ,他的优先级最高 一启动服务 就进行初始化
// 只初始化一次
@WebServlet(value = "/init", loadonStartup = 0)
public class InitServket extends HttpServlet {

    @Override
    public void init() throws ServletException {
        ServletContext servletContext = this.getServletContext();
        //将 学生集合 变成一个线程安全的集合
        servletContext.setAttribute("list", Collections.synchronizedList(new ArrayList()));
    }
}

创建一个Servlet类,进行处理用户信息
package com.yunlian.servelt;

import javax.servlet.ServletContext;
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;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

//必须要继承servlet
//必须重写 doget dopost
@WebServlet("/add")
@MultipartConfig
public class AddStudentServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //统一设置请求和响应的编码
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //req  处理请求
        //      1:获取 注册页面学生添加的信息
        String name = req.getParameter("name");
        int age = Integer.parseInt(req.getParameter("age"));
        //             获得上传的图片 保存在 WEB-INF 下的 img
        Part imgPart = req.getPart("img");
        String realPath = req.getServletContext().getRealPath("/WEB-INF/img/");
        String imgName = UUID.randomUUID().toString();// 获得一个不会重复的 图像名字 名
        Files.copy(imgPart.getInputStream(), Paths.get(realPath+imgName+".jpg"));

        //      2:封装成对于的 java对象
        Student student = new Student(name,age,imgName+".jpg");
        
        //      3:将注册的数据保存起来(永久保存) --->数据库
        List list = (List) req.getServletContext().getAttribute("list");
        list.add(student);

        //resp 处理响应
        //  告知浏览器 添加成功

        resp.getWriter().println("添加成功,");

        System.out.println(list);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}
总结
  • 在add.html的页面,一定要添加enctype="multipart/form-data"标识,multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。使用了其标记,才能传输图片等二进制形式得文件
  • 在AddStudentServlet要添加注解@MultipartConfig配置该Servlet,才可以通过req.getPart(“img”)获取相关得图片文件,进行读写操作。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号