• SSH—网上商城之商品图片文件上传


    前言

        网上商城中的淘宝图片要显示在页面的前提是图片应该已经在数据库里面,那么怎么实现图片的上传功能呢,这就是今天要说的主题。

    内容

    需求:

        商城后台需要添加图片文件,用来图片显示

    解决方式:

        Struts2框架中文件上传

          *文件的条件

               *提交方式为POST(文件大小不用限制),采用GET方式提交的文件大小有限制。

               *表单上传项必须有一个name属性

               *表单的enctype属性值需要时multipart/form-data

          *前台显示:通过提交form表单提交表单数据,给form表单一个action路径

    DEMO部分

    • 前台表单部分

     

    <form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/adminProduct_save.action" method="post" enctype="multipart/form-data">
    	<table>
    		<tr>
    			<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
    				商品图片:
    			</td>
    			<td class="ta_01" bgColor="#ffffff" colspan="3">
    				<input type="file" name="upload"/>
    			</td>
    		</tr>
    	</table>
    </form>
    

    • Action

     

    /*
     * 说明:后台商品管理的action
     * 作者:周丽同
     */
    public class AdminProductAction extends ActionSupport implements ModelDriven<Product>{
    	//模型驱动使用的对象
    	private Product product = new Product();
    	public Product getModel(){
    		return product;
    	}
    	//注入商品的service
    	private ProductService productService;
    	public void setProductService(ProductService productService) {
    		this.productService = productService;
    	}
    
    	//文件上传需要的参数:
    	private File upload;//上传的文件
    	private String uploadFileName;//接收文件上传的文件名
    	private String uploadContext;//接收文件上传的文件的MIME的类型
    	
    	public void setUpload(File upload) {
    		this.upload = upload;
    	}
    
    	public void setUploadFileName(String uploadFileName) {
    		this.uploadFileName = uploadFileName;
    	}
    
    	public void setUploadContext(String uploadContext) {
    		this.uploadContext = uploadContext;
    	}
    	
    	//保存商品的方法
    	public String save() throws IOException{
    		//调用service完成保存操作
    		product.setPdate(new Date());
    		if(upload != null){
    			//获得文件上传的磁盘绝对路径:
    			String realPath = ServletActionContext.getServletContext().getRealPath("/products");
    			//创建一个文件:
    			File diskFile = new File(realPath+"//"+uploadFileName);
    			//文件上传:
    			FileUtils.copyFile(upload, diskFile);
    			product.setImage("products/"+uploadFileName);
    		}
    		//将数据保存到数据库
    		productService.save(product);
    		//页面跳转
    		return "saveSuccess";
    	}
    }

    • Service

     

    /*
     *说明:商品的业务层代码
     *作者:周丽同
     */
    @Transactional
    public class ProductService {
    	//业务层保存商品的方法
    	public void save(Product product) {
    		// TODO Auto-generated method stub
    		productDao.save(product);
    	}
    }

    • Dao

     

    /*
     * 说明:添加商品
     * 作者:周丽同
     */
    public class ProductDao extends HibernateDaoSupport {
    	//DAO层保存商品的方法
    	public void save(Product product) {
    		// TODO Auto-generated method stub
    		this.getHibernateTemplate().save(product);
    	}
    }

    • Struts.xml

    <!-- 配置添加商品的action -->
    <action name="adminProduct_*" class="adminProductAction" method="{1}">
    	<result name="saveSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>			
    	
    	<interceptor-ref name="PrivilegeInterceptor"></interceptor-ref>
    	<interceptor-ref name="defaultStack"></interceptor-ref>						
    </action>

    小结

        这些东西自己还得多多总结啊!


    感谢您的宝贵时间······

  • 相关阅读:
    Spring Boot → 08:嵌入式Servlet容器自定义
    Spring Boot → 09:使用外置Servlet容器_tomcat9.0
    Spring Boot → 07:错误处理机制
    Spring Boot → 06:项目实战-账单管理系统
    Spring Boot → 05:Web开发
    zzz Objective-C的消息传递机制
    Objective-C中的SEL、IMP和Class类型(转)
    zzzObjective-C的动态特性
    zzz KVC/KVO原理详解及编程指南
    zzzzz iOS绘图教程
  • 原文地址:https://www.cnblogs.com/zhoulitong/p/6412343.html
Copyright © 2020-2023  润新知