(三十)商品管理-添加商品(上传图片)

article/2025/9/18 10:16:49

(三十)商品管理-添加商品(上传图片)

添加商品(上传图片)1.修改页面上添加连接/store/adminProduct?method=addUI2.在addUI请求转发到 添加页面3.在表单页面上修改action : /store/addProductServlet提交方式: method="post"添加enctype属性: enctype="multipart/form-data"给每个字段添加name属性4.addProductServlet通过request.getParameterMap获取的信息全部为空我们想使用beanuitls.populate(bean,map),我们需要创建一个map集合 ,将前台接受过来信息手动的put到map中注意:商品的图片:1:保存到服务器的磁盘2.在数据中添加图片的位置调用productservice完成添加商品操作重定向到所有的商品的上面
    
    
fileUpload使用创建一个磁盘文件项工厂DiskFileItemFactory factory = new DiskFileItemFactory();创建一个核心文件上传对象 ServletFileUpLoadServletFileUpload upload = new ServletFileUpload(factory);上传对象调用方法解析请求 获取一个List<FileItem>List<FileItem> list = upload.parseRequest(request);遍历list获取每一个文件项isFormFiled():判断是否是普通上传组件true:普通上传组件false:文件上传组件getFiledName():获取表单子标签的name属性值若是普通的上传组件getString("utf-8"):获取用户输入的值若是文件上传组件getName():获取上传文件的名称getInputStream():获取上传文件流最后删除临时文件delete()

导入fileupload的jar包

http://pan.baidu.com/s/1jIb11gq

/store/WebContent/admin/product/list.jsp

/store/src/com/louis/web/servlet/AdminProductServlet.java

/*** 跳转到添加商品的页面* @param request* @param response* @return* @throws Exception*/public String addUI(HttpServletRequest request, HttpServletResponse response) throws Exception {//查询所有的分类 返回listCategoryService cs=(CategoryService) BeanFactory.getBean("CategoryService");List<Category> clist = cs.findAll();//将list放入requestrequest.setAttribute("clist", clist);return "/admin/product/add.jsp";}

/store/WebContent/admin/product/add.jsp

/store/src/com/louis/web/servlet/AddProductServlet.java

package com.louis.web.servlet;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;import com.louis.domain.Category;
import com.louis.domain.Product;
import com.louis.service.ProductService;
import com.louis.utils.BeanFactory;
import com.louis.utils.UUIDUtils;
import com.louis.utils.UploadUtils;/*** Servlet implementation class AddProduct*/
public class AddProductServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {//0.创建map 放入前台传递的数据HashMap<String, Object> map = new HashMap<>();//创建磁盘文件项DiskFileItemFactory factory = new DiskFileItemFactory();//创建核心上传对象ServletFileUpload upload = new ServletFileUpload(factory);//解析requestList<FileItem> list = upload.parseRequest(request);//遍历集合for (FileItem fi : list) {//判断是否是普通的上传组件if(fi.isFormField()){//普通上传组件map.put(fi.getFieldName(),fi.getString("utf-8"));}else{//文件上传组件//获取文件名称String name = fi.getName();//获取文件的真实名称    xxxx.xxString realName = UploadUtils.getRealName(name);//获取文件的随机名称String uuidName = UploadUtils.getUUIDName(realName);//获取文件的存放路径String path = this.getServletContext().getRealPath("/products/1");//获取文件流InputStream is = fi.getInputStream();//保存图片FileOutputStream os = new FileOutputStream(new File(path, uuidName));IOUtils.copy(is, os);os.close();is.close();//删除临时文件
                    fi.delete();//在map中设置文件的路径map.put(fi.getFieldName(), "products/1/"+uuidName);}}//1.封装参数Product p = new Product();BeanUtils.populate(p, map);//1.1 商品id
            p.setPid(UUIDUtils.getId());//1.2 商品时间p.setPdate(new Date());//1.3 封装cateogryCategory c = new Category();c.setCid((String)map.get("cid"));p.setCategory(c);//2.调用service完成添加ProductService ps=(ProductService) BeanFactory.getBean("ProductService");ps.add(p);//3.页面重定向response.sendRedirect(request.getContextPath()+"/adminProduct?method=findAll");} catch (Exception e) {e.printStackTrace();request.setAttribute("msg", "商品添加失败~");request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);return;}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
        doGet(request, response);}}

 

/store/WebContent/WEB-INF/web.xml

  <servlet><description></description><display-name>AddProductServlet</display-name><servlet-name>AddProductServlet</servlet-name><servlet-class>com.louis.web.servlet.AddProductServlet</servlet-class></servlet><servlet-mapping><servlet-name>AddProductServlet</servlet-name><url-pattern>/addProduct</url-pattern></servlet-mapping>

 /store/src/com/louis/service/impl/ProductServiceImpl.java

    /*** 添加商品*/@Overridepublic void add(Product p) throws Exception {ProductDao pdao=(ProductDao) BeanFactory.getBean("ProductDao");pdao.add(p);}

/store/src/com/louis/dao/impl/ProductDaoImpl.java

/*** 添加商品*/@Overridepublic void add(Product p) throws Exception {QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());/*** `pid` VARCHAR(32) NOT NULL,`pname` VARCHAR(50) DEFAULT NULL,`market_price` DOUBLE DEFAULT NULL,`shop_price` DOUBLE DEFAULT NULL,`pimage` VARCHAR(200) DEFAULT NULL,`pdate` DATE DEFAULT NULL,`is_hot` INT(11) DEFAULT NULL,`pdesc` VARCHAR(255) DEFAULT NULL,`pflag` INT(11) DEFAULT NULL,`cid` VARCHAR(32) DEFAULT NULL,*/String sql="insert into product values(?,?,?,?,?,?,?,?,?,?);";qr.update(sql, p.getPid(),p.getPname(),p.getMarket_price(),p.getShop_price(),p.getPimage(),p.getPdate(),p.getIs_hot(),p.getPdesc(),p.getPflag(),p.getCategory().getCid());}

 

问题:

beanutils

uploadfile

map

posted on 2017-10-16 11:55 Michael2397 阅读(...) 评论(...) 编辑 收藏


http://chatgpt.dhexx.cn/article/44LiPlSA.shtml

相关文章

【VUE项目实战】56、商品添加功能(六)-提交添加的商品

接上篇《55、商品添加功能&#xff08;五&#xff09;-商品内容模块》 上一篇我们完成了商品内容编辑模块的开发&#xff0c;也即是完成了商品所有的信息编辑&#xff0c;本篇我们就来开发提交商品所有信息到后台的功能。 一、要实现的效果 我们要实现点击“添加商品”的按钮…

淘淘商城第30讲——实现商品添加功能

经过上文的学习&#xff0c;我相信大家都应该知道了富文本编辑器的使用方法&#xff0c;我们能走到这步&#xff0c;实属不易&#xff0c;本文终于可以来实现商品添加这个功能了。 在item-add.jsp页面当中&#xff0c;当点击提交按钮后&#xff0c;会触发submitForm方法&#…

密码登录

利用idea实现密码的输入 首先我们要先新建一个页面用于输入账号密码 req.setCharacterEncoding("UTF-8");String LoginNamereq.getParameter("LoginName");String LoginPwdreq.getParameter("LoginPwd");String msg"请输入密码";priva…

SQL Server安全:登录和用户

SQL Server安全&#xff1a;登录和用户 前言 建议配合sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系一起看。 授予 Principal &#xff08;安全主体&#xff09;操作 Securable&#xff08;安全对象&#xff09; 的 Permission&#xff08;权限&…

springboot-security安全登录

一个简单的security安全登录示例 配置环境 添加pom依赖坐标 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version></parent><depe…

如何设计一个安全的登录接口?

Java技术栈 www.javastack.cn 关注阅读更多优质文章 作者&#xff1a;哒哒哒哒打代码链接&#xff1a;juejin.im/post/6859214952704999438 前言 大家学写程序时&#xff0c;第一行代码都是hello world。 但是当你开始学习WEB后台技术时&#xff0c;很多人的第一个功能就是写的…

[OS-Linux] CentOS 7.x 安全登录策略设置

简介 之前用用户名和密码登陆服务器 这样不安全 &#xff0c;用SSH公钥(public key)验证 这个办法能很好的解决 登陆服务器 和安全登陆服务器的特点&#xff1a; 方法 / 步骤 &#x1f510; 一: 证书生成 命令行页面生成 (推荐) 查看执行结果&#xff0c;这时候连续回车即可…

开启QQ登录保护仍被盗号——QQ安全机制全面分析

1、前言 周围总是有些同学QQ被盗号&#xff0c;攻击者盗取账号后会继续去欺骗列表里的好友&#xff0c;形成链式反应。危害比较大。 腾讯QQ安全中心提供了登录保护机制&#xff0c;如图&#xff1a; 这是腾讯为QQ添加第二层保护&#xff0c;在开启登录保护后&#xff0c;盗号者…

使用 PHP 和 MySQL 的安全登录系统

Secure Login System with PHP and MySQL 在本教程中&#xff0c;我将教您如何创建自己的安全 PHP 登录系统。登录表单是您网站的访问者可以用来登录您的网站以访问受限内容&#xff08;例如个人资料页面&#xff09;的表单。我们将利用 MySQL 从数据库中检索帐户数据。 高级…

使用腾讯企业邮箱为什么强烈建议启用安全登录?怎么启用?

腾讯企业邮箱开启安全登录&#xff0c;简单来说就是把企业邮箱账号和微信绑定。启用安全登录和关闭安全登录&#xff0c;主要是登录方式发生了变化。 登录方式&#xff1a; 登录启用前启用后网页端邮箱帐号密码登录/微信扫码登录仅支持微信扫码登录客户端邮箱帐号密码登录仅…

登录安全----双重MD5加密实现安全登录

个人简介&#xff1a; &#x1f4e6;个人主页&#xff1a;肇事司机赵四 &#x1f3c6;学习方向&#xff1a;JAVA后端开发 &#x1f4e3;种一棵树最好的时间是十年前&#xff0c;其次是现在&#xff01; &#x1f9e1;喜欢的话麻烦点点关注喔&#xff0c;你们的支持是我的最大动…

http登录模块加密登录安全登录方法

http请求很容易被截获&#xff0c;在写登录模块时&#xff0c;直接使用明文密码请求&#xff0c;很容易明文密码泄露&#xff1b;若在js页面对密码进行一次加密后在传输&#xff0c;虽不是明文密码&#xff0c;但也完全可以截获加密后的暗文&#xff0c;伪造http请求进行登录。…

安全登录认证

用户登录是任何一个应用系统的基本功能&#xff0c;特别是对于网上银行系统来说&#xff0c;用户登录的安全性尤为重要。如何设计一个网站的安全登录认证程序&#xff0c;是本文主要讨论的问题。 静态密码存在着比较多的安全隐患&#xff0c;攻击者有很多手段获得静态密码&…

Web登录如何确保安全

1、一个普通简单的HTML例子&#xff0c;用户登录信息是不安全的 <form action "http://localhost:8080/Application/login" method "POST"> 用户名&#xff1a;<input id"username" name"username" type"te…

实现安全登录的两种方法

登录安全——拦截器和过滤器或权限框架的使用 本次我们将采用两种方法实现登录的安全性&#xff0c;首先介绍拦截器和过滤器。 一、 过滤器和拦截器&#xff1a; 过滤器产生的时间/开始工作的时间&#xff1a; 进入Tomcat之后&#xff0c;但是在进servlet之前。Interceptor进入…

推荐几款优秀的搜素引擎

秘迹搜索 网址&#xff1a;https://mijisou.com/ 秘迹搜索是一款守护用户搜索信息的聚合搜索引擎&#xff0c;Ta不会根据搜索关键词追踪用户&#xff0c;也不会通过历史搜索内容做广告推荐。秘迹搜索通过聚合中文搜索服务比如Bing、百度、360、搜狗等搜索结果提供私密搜索服务…

12.推荐几款好用的搜索引擎

1.goobe https://goobe.io/ 专为程序员设计的搜索引擎&#xff08;搜索非技术相关的东西也很6&#xff09;&#xff0c;界面是这样事儿的 而且可以通过快照访问stackoverflow和github&#xff0c;非常好用 无广告&#xff0c;不跟踪 2.萌搜 https://mengso.com/ 号称小众的…

《搜索和推荐中的深度匹配》——1.1搜索和推荐

重磅推荐专栏&#xff1a; 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers&#xff0c;轻松构建属于自己的NLP智能应用&#xff01; 随着Internet的快速发展&#xff0c;当今信息科学的基本问题之一变得更加重要&#xff0c;即如何从通常庞大的信息库中…

基于Elasticsearch实现搜索推荐

在基于Elasticsearch实现搜索建议一文中我们曾经介绍过如何基于Elasticsearch来实现搜索建议&#xff0c;而本文是在此基于上进一步优化搜索体验&#xff0c;在当搜索无结果或结果过少时提供推荐搜索词给用户。 背景介绍 在根据用户输入和筛选条件进行搜索后&#xff0c;有时…

五个小众好用的搜索引擎

一、wikiHow https://zh.wikihow.com/ 我把wikiHow当做一个帮我做任何事的搜索引擎 wikiHow上每一篇详尽明了的指南文章 都能改善成百上千人的生活 与维基百科类似&#xff0c;wikiHow 也采用了维基技术 所有人都可以创建或编辑文章中的内容 来自全球的协作者们已编写了…