之前写过图片上传的案例,但是时间一长就忘了,这次写的这个程序用到了图片的上传,并且能够图文显示,所以写了这篇文章来记录一下。
首先来看下我的项目结构,我写的是房屋发布的信息,图片上传只是其中一部分,但是程序绝对是完整的
项目我是用Spring+SpringMVC+hibernate框架搭建的
先看下applicationContext-common.xml里面的文件配置:
org.hibernate.dialect.MySQL5Dialect
true
true
update
com.*
再看下springmvc-servlet.xml的配置文件:
text/plain;charset=UTF-8
再来看下工具包:
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层:
代码如下:
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
再来service层:
接口层代码:
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层
接口层程序为:
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;
}
}
接下来再来看看实体:
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;
}
}
这是发布的界面
数据库看看:
好了今天的程序就到这,这也是为了做个笔记,欢迎大家一起讨论。