织梦网站突然打开很慢,十大网页设计网站,国外设计,去掉自豪的使用wordpress本文实例为大家分享了JSPServlet实现文件上传到服务器功能的具体代码#xff0c;供大家参考#xff0c;具体内容如下项目目录结构大致如下#xff1a;正如我在上图红线画的三个东西#xff1a;Dao、service、servlet 这三层是主要的结构#xff0c;类似 MVC 架构#xff…本文实例为大家分享了JSPServlet实现文件上传到服务器功能的具体代码供大家参考具体内容如下项目目录结构大致如下正如我在上图红线画的三个东西Dao、service、servlet 这三层是主要的结构类似 MVC 架构Dao是模型实体类(逻辑层)service是服务层servlet是视图层三者协作共同完成项目。这里的User是由user表来定义的一个类再封装增删改查等操作实现从数据库查询与插入修改与删除等操作并实现了分页操作也实现了将图片放到服务器上运行的效果。Dao层主要实现了User类的定义接口IUserDao的定义与实现(UserDaoImpl)service层直接定义一个接口类IUserService与IUserDao相似再实现其接口类UserServiceImpl直接实例化UserDaoImpl再调用其方法来实现自己的方法重用了代码。详见代码吧servlet层起初是将表User 的每个操作方法都定义成一个servlet 去实现虽然简单但是太多了不好管理于是利用 基类BaseServlet 实现了“反射机制”通过获取的 action 参数自己智能地调用对应的方法而UserServlet则具体实现自己的方法以供调用方便许多详见之前的博文或下述代码。将文件上传到 tomcat 服务器的编译后运行的过程的某个文件关键要在每次编译后手动为其创建该文件夹来存放相应的上传文件否则会导致每次重启 tomcat 服务器后该编译后的工程覆盖了原先的导致上传文件存放的文件夹不存在导致代码找不到该文件夹而报错即上传不成功。如下图所示主要是考虑图片路径的问题手工设置路径肯定不能保证不重复所以取到上传图片的后缀名后利用随机生成的随机数作为图片名这样就不会重复名字了String extendedName picturePath.substring(picturePath.lastIndexOf(.),// 截取从最后一个.到字符串结束的子串。 picturePath.length()); // 把文件名称重命名为全球唯一的文件名 String uniqueName UUID.randomUUID().toString(); saveFileName uniqueName extendedName;// 拼接路径名增加用户时代码如下// 增public void add(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println(add方法被调用);// 获取数据int id 0;String username null;String password null;String sex null;Date birthday null;String address null;String saveFileName null;String picturePath null;// 得到表单是否以enctypemultipart/form-data方式提交boolean isMulti ServletFileUpload.isMultipartContent(request);if (isMulti) {// 通过FileItemFactory得到文件上传的对象FileItemFactory fif new DiskFileItemFactory();ServletFileUpload upload new ServletFileUpload(fif);try {List items upload.parseRequest(request);for (FileItem item : items) {// 判断是否是普通表单控件或者是文件上传表单控件boolean isForm item.isFormField();if (isForm) {// 是普通表单控件String name item.getFieldName();if (id.equals(name)) {id Integer.parseInt(item.getString(utf-8));System.out.println(id);}if (sex.equals(name)) {sex item.getString(utf-8);System.out.println(sex);}if (username.equals(name)) {username item.getString(utf-8);System.out.println(username);}if (password.equals(name)) {password item.getString(utf-8);System.out.println(password);}if (birthday.equals(name)) {String birthdayStr item.getString(utf-8);SimpleDateFormat sdf new SimpleDateFormat( yyyy-MM-dd);try {birthday sdf.parse(birthdayStr);} catch (ParseException e) {e.printStackTrace();}System.out.println(birthday);}if (address.equals(name)) {address item.getString(utf-8);System.out.println(address);}if (picturePath.equals(name)) {picturePath item.getString(utf-8);System.out.println(picturePath);}} else {// 是文件上传表单控件// 得到文件名 xxx.jpgString sourceFileName item.getName();// 得到文件名的扩展名.jpgString extendedName sourceFileName.substring(sourceFileName.lastIndexOf(.),sourceFileName.length());// 把文件名称重命名为全球唯一的文件名String uniqueName UUID.randomUUID().toString();saveFileName uniqueName extendedName;// 得到上传到服务器上的文件路径// C:apache-tomcat-7.0.47webappsaobaoServlet4甥汰慯dxx.jpgString uploadFilePath request.getSession().getServletContext().getRealPath(upload/);File saveFile new File(uploadFilePath, saveFileName);// 把保存的文件写出到服务器硬盘上try {item.write(saveFile);} catch (Exception e) {e.printStackTrace();}}}} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 2、封装数据User user new User(id, username, password, sex, birthday, address,saveFileName);// 3、调用逻辑层APIIUserService iUserService new UserServiceImpl();// 4、控制跳转HttpSession session request.getSession();if (iUserService.save(user) 0) {System.out.println(添加新用户成功);List users new ArrayList();users iUserService.listAll();session.setAttribute(users