javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中


javaweb上传图片

   之前写过图片上传的案例,但是时间一长就忘了,这次写的这个程序用到了图片的上传,并且能够图文显示,所以写了这篇文章来记录一下。

首先来看下我的项目结构,我写的是房屋发布的信息,图片上传只是其中一部分,但是程序绝对是完整的javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第1张图片


项目我是用Spring+SpringMVC+hibernate框架搭建的

先看下applicationContext-common.xml里面的文件配置:






	
		
		
		
		
		
		
	
	
	
	
		
			
		
		
		
			
				org.hibernate.dialect.MySQL5Dialect
				  true 
				  true 
				   update 
			             
			
		
		
           
		      
		        com.*
		      
		    

	


	
	
	
		
	
	
	
		
			
			
			
			
			
			
			
			
		
	
	
		
		
	
	
	
	
	
	
再看下springmvc-servlet.xml的配置文件:


















text/plain;charset=UTF-8















   






再来看下工具包:

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第2张图片


package com.until;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

public class to_json{
	/**
	 * 方法功能:将对象转换成JSON字符串,并响应回前台
	 * 参数:object
	 * 返回值:void
	 * 异常:IOException
	 */
	public static void writeJson(Object object,HttpServletRequest request,HttpServletResponse response) {
		PrintWriter out = null;
		try {
			String json = JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm:ss");
			response.setContentType("text/html;charset=utf-8");
			out = response.getWriter();
			//System.out.println(json);
			out.write(json);
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				out.close();
			}
		}
	}
}
再看下要导入上传图片的jar包(框架的包我就不写了)主要是突出这个功能所以我把包单独建了一个文件:


下面再来到网页:fabu.jsp的文件


				
				
新房屋信息发布
填写房屋信息
标 题:
户 型:
面 积:
价 格:
房产证日期:
位 置: 区: 街:
上传图片:
联系方式:
详细信息:
因为图片上传需要用到表单提交,所以就没有用ajex提交了。

再来看看展示的list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>



	
		

		My JSP 'list.jsp' starting page
		
		
		
		
			
				租房 - 首页
				
				
				
				
				
				


    
			
			
			
			
				
				
				
				
			
		


再来看看controller层:

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第3张图片

代码如下:

package com.controller;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import com.entity.fw;
import com.entity.json;
import com.service.fwService;
import com.until.to_json;

@Controller
@RequestMapping("fw")
public class fwController {
	@Autowired
	private fwService fs;
	public fwService getFs() {
		return fs;
	}
	public void setFs(fwService fs) {
		this.fs = fs;
	}
	/*******************开始添加房屋信息******************************/
	@SuppressWarnings("deprecation")
	@RequestMapping("/addfw")
	@ResponseBody
	public  void infor_insert(@RequestParam("file")CommonsMultipartFile file,HttpServletRequest request,HttpServletResponse response,fw f){
		try {
			String url = request.getRealPath("/upload");
			System.out.println(url);
			InputStream is1 = file.getInputStream();
			OutputStream os = new FileOutputStream(new File(url, file
					.getOriginalFilename()));
			String path = file.getOriginalFilename();
			System.out.println(path);
			f.setUrl(path);
			
			
			fs.addfw(f);
			int length = 0;
			byte[] buffer = new byte[400];
			while ((length = is1.read(buffer)) != -1) {
				os.write(buffer, 0, length);
			}
			os.close();
			is1.close();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			response.sendRedirect("../list.jsp");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/***********************开始查询所有房屋*************************************/
	@RequestMapping("/selectfw")
	@ResponseBody
	public void selectfw(HttpServletRequest request,HttpServletResponse response){
		System.out.println("asda");
		List> list=new ArrayList>();
		try {
			  list=fs.selectfw();
		} catch (Exception e) {
			e.printStackTrace();
		}
		to_json.writeJson(list, request, response);
	}
	
	@RequestMapping("/fenye")
	@ResponseBody
	public void fenye(HttpServletResponse response,HttpServletRequest request,int page){
		System.out.println("come in");
		List> list=new ArrayList>();
		list=fs.selectall();
		int pages=list.size()%5==0?list.size()/5:list.size()/5+1;//计算总页数
	    if(page==0){
		   page=1;	
		}
		List> list1=fs.count(page);
		System.out.println(list1.get(0));
		json json=new json();
		
		json.setList(list1);
		json.setPage(page);
		json.setPages(pages);
		to_json.writeJson(json, request, response);
	}
}
再来service层:

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第4张图片

接口层代码:

package com.service;
import java.util.List;
import java.util.Map;

import com.entity.fw;

public interface fwService {
	public int addfw(fw f);
	public List> selectfw();
	public List> count(int page);
	public List> selectall();
}
实现层代码:

package com.service.imp;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.dao.fwDao;
import com.entity.fw;
import com.service.fwService;
@Service("fwservice")
public class fwServiceImp implements fwService{
	@Autowired
	private fwDao fd;
	public fwDao getFd() {
		return fd;
	}
	public void setFd(fwDao fd) {
		this.fd = fd;
	}

	/**************添加房屋*************************/
	public int addfw(fw f) {
		System.out.println("asd");
		int a=fd.addfw(f);
		if(a>0){
			System.out.println("添加房屋成功");
		}
		return a;
	}
	/************查询所有房屋********************************/

	public List> selectfw() {
		String sql="select *from fw ";
		List> list=fd.selectfw(sql);
		return list;
	}

	public List> count(int page) {
		String sql="select * from fw";
		List> list=fd.count(sql,page);
		return list;
	}

	public List> selectall() {
		String sql="select * from fw";
		List> list=fd.selectall(sql);
		return list;
	}

}
再来到dao层

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第5张图片

接口层程序为:

package com.dao;

import java.util.List;
import java.util.Map;

import com.entity.fw;

public interface fwDao {
	public int addfw(fw f);
	public List> selectfw(String sql);
	public List> count(String sql,int page);
	public List> selectall(String sql);
}
实现层程序:

package com.dao.imp;

import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.dao.fwDao;
import com.entity.fw;
@Repository("fwDao")
public class fwDaoImp implements fwDao{
	@Autowired
	private SessionFactory sessionFactory;
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	public Session getCurrentSession() {
		return sessionFactory.openSession();//如果开启事务,要与事务配置的命名规则相符合
	}
	/************************添加房屋*****************************************/
	public int addfw(fw f) {
		System.out.println("来到dao层");
		getCurrentSession().save(f);
		int a=1;
		return a;
	}
	/*************************查询房屋******************************************/
	@SuppressWarnings("unchecked")
	public List> selectfw(String sql) {
		   Query query=getCurrentSession().createSQLQuery(sql);
		   query.setMaxResults(5);//显示当前最大行数
		   query.setFirstResult(0);//起始行数
		   List> list=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
		return list;
	}
	@SuppressWarnings("unchecked")
	
	public List> count(String sql,int page) {
		 Query query=getCurrentSession().createSQLQuery(sql);
		 query.setMaxResults(5);
		 query.setFirstResult((page-1)*5);
		 List> list=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
		 return list;
	}
	@SuppressWarnings("unchecked")
	public List> selectall(String sql) {
		 Query query=getCurrentSession().createSQLQuery(sql);
		 List> list=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
		 return list;
	}

}
接下来再来看看实体:

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第6张图片

fw.java字段:

package com.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class fw {
private int fwid;
private String title;
private String floorage;
private String price;
private String houseDate;
private String contact;
private String description;
private String url;

@Id
@GeneratedValue
public int getFwid() {
	return fwid;
}
public void setFwid(int fwid) {
	this.fwid = fwid;
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public String getFloorage() {
	return floorage;
}
public void setFloorage(String floorage) {
	this.floorage = floorage;
}
public String getPrice() {
	return price;
}
public void setPrice(String price) {
	this.price = price;
}
public String getHouseDate() {
	return houseDate;
}
public void setHouseDate(String houseDate) {
	this.houseDate = houseDate;
}
public String getContact() {
	return contact;
}
public void setContact(String contact) {
	this.contact = contact;
}
public String getDescription() {
	return description;
}
public void setDescription(String description) {
	this.description = description;
}
public String getUrl() {
	return url;
}
public void setUrl(String url) {
	this.url = url;
}
}
这是发布的界面

javaweb上传图片,并且从数据库中查出,在页面显示,同时保存图片到数据库中_第7张图片
展示的界面:



数据库看看:


好了今天的程序就到这,这也是为了做个笔记,欢迎大家一起讨论。












你可能感兴趣的:(ssh框架,javaweb上传图片)