struts2+Hibernate上传图片,如何实现图片可以放在服务器上;数据库保存图片路径。

struts2+Hibernate上传图片,如何实现图片可以放在服务器上;数据库保存图片路径。,第1张

楼主

struts2

上传代码会写吗?

1.

struts2本身提供了上传

拦截器

,用struts2实现上传功能,并获得保存地址

配置fileUpload的拦截器

2.

获得文件存储地址(上传时指定)+文件名

3.

调用保存方法(

Hibernate

),将文件路径存入数据库

在一个事务中完成即可!

如:有哪块有难点,及时追问。good

luck!

图片不是保存到数据中,在struts.xml文件里加个<constant name="struts.multipart.maxSize" value="100000000" />

struts.xml中

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="sruts.il8n.encoding" value="UTF-8" />

<!--<constant name="struts.multipart.maxSize" value="1024102400" />

<constant name="struts.multipart.saveDir" value="d:/upload" /> -->

<constant name="struts.ui.theme" value="simple"></constant>

<package name="struts" extends="struts-default" namespace="/">

<action name="add2" class="DomeWeb2">

<!-- 限制图片的格式和图片的大小 -->

<interceptor-ref name="fileUpload">

<param name="allowedTypes">

image/bmp,image/png,image/gif,image/jpeg,image/pjpeg

</param>

</interceptor-ref>

<!-- 默认的拦截器,必须要写 -->

<interceptor-ref name="defaultStack" />

<result name="input">add2.jsp</result>

<result name="success">showUpload1.jsp</result>

</action> </package>

</struts>

applicationContext.xml中

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName"

value="com.microsoft.sqlserver.jdbc.SQLServerDriver">

</property>

<property name="url" value="jdbc:sqlserver://localhost:1433databaseName=bookshop">

</property>

<property name="username" value="sa"></property>

<property name="password" value="chen"></property>

</bean>

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">

<ref bean="dataSource" />

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">

org.hibernate.dialect.SQLServerDialect

</prop>

<prop key="hibernate.show_sql">true</prop>

</props>

</property>

<property name="mappingResources">

<list>

<value>entity/Dome.hbm.xml</value></list>

</property></bean>

<bean id="DomeDAO" class="dao.impl.DomeDaoImpl">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<bean id="DomeWeb2" class="web.UploadOneAction">

<property name="domeBiz" ref="DomeBiz"></property>

</bean>

<!-- 配置事务 -->

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory" />

</bean>

<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>

<tx:method name="get*" propagation="REQUIRED"

read-only="true" />

<tx:method name="find*" propagation="REQUIRED"

read-only="true" />

<tx:method name="search*" propagation="REQUIRED"

read-only="true" />

<tx:method name="query*" propagation="REQUIRED"

read-only="true" />

<tx:method name="add*" propagation="REQUIRED" />

<tx:method name="submit*" propagation="REQUIRED" />

<tx:method name="save*" propagation="REQUIRED" />

<tx:method name="insert*" propagation="REQUIRED" />

<tx:method name="del*" propagation="REQUIRED" />

<tx:method name="remove*" propagation="REQUIRED" />

<tx:method name="update*" propagation="REQUIRED" />

<tx:method name="modify*" propagation="REQUIRED" />

<tx:method name="check*" propagation="REQUIRED" />

<tx:method name="do*" propagation="REQUIRED" />

<tx:method name="*" propagation="REQUIRED" read-only="true" />

</tx:attributes>

</tx:advice>

<aop:config>

<aop:pointcut id="serviceMethod"

expression="execution(* biz.impl.*.*(..))" />

<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />

</aop:config>

</beans>

UploadOneAction.java类中

package web

import java.io.BufferedInputStream

import java.io.BufferedOutputStream

import java.io.File

import java.io.FileInputStream

import java.io.FileOutputStream

import java.io.InputStream

import java.io.OutputStream

import java.util.Date

import org.apache.struts2.ServletActionContext

import biz.DomeBiz

import com.opensymphony.xwork2.ActionSupport

import entity.Dome

public class UploadOneAction extends ActionSupport {

private static final long serialVersionUID = 572146812454l

private static final int BUFFER_SIZE = 16 * 1024

private File myFile//文件流

private String contentType //内容类型

private String fileName//文件名

private String imageFileName //新文件名

private String caption //标题

DomeBiz domeBiz

public void setDomeBiz(DomeBiz domeBiz) {

this.domeBiz = domeBiz

}

private static void copy(File src, File dst) {

try {

InputStream in = null

OutputStream out = null

try {

in = new BufferedInputStream(new FileInputStream(src),

BUFFER_SIZE)

out = new BufferedOutputStream(new FileOutputStream(dst),

BUFFER_SIZE)

byte[] buffer = new byte[BUFFER_SIZE]

while (in.read(buffer) >0) {

out.write(buffer)

}

} finally {

if (null != in) {

in.close()

}

if (null != out) {

out.close()

}

}

} catch (Exception e) {

e.printStackTrace()

}

}

private static String getExtention(String fileName) {

int pos = fileName.lastIndexOf(".")

return fileName.substring(pos)

}

public String execute() {

if (myFile == null)

return INPUT

System.out.println(this.getMyFileFileName()+"123")

imageFileName=new Date().getTime()+ getExtention(this.getMyFileFileName())

//得到图片保存的位置(根据root来得到图片保存的路径在tomcat下的该工程里)

File imageFile = new File(ServletActionContext.getServletContext().getRealPath("images")+ "/" + imageFileName)

copy(myFile, imageFile) //把图片写入到上面设置的路径里

Dome dome = new Dome()

dome.setPicture(this.getImageFileName())

domeBiz.save(dome)

return SUCCESS

}

//得到原文件名称

public String getMyFileFileName() {

return fileName

}

public void setMyFileFileName(String fileName) {

this.fileName = fileName

}

public File getMyFile() {

return myFile

}

public void setMyFile(File myFile) {

this.myFile = myFile

}

public String getContentType() {

return contentType

}

public void setContentType(String contentType) {

this.contentType = contentType

}

public String getFileName() {

return fileName

}

public void setFileName(String fileName) {

this.fileName = fileName

}

public String getImageFileName() {

return imageFileName

}

public void setImageFileName(String imageFileName) {

this.imageFileName = imageFileName

}

public String getCaption() {

return caption

}

public void setCaption(String caption) {

this.caption = caption

}

}

add2.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<%

String path = request.getContextPath()

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>上传</title>

</head>

<body>

<s:form action="add2.action" method="POST"

enctype="multipart/form-data">

<s:fielderror />

<s:file name="myFile" label="Image File1" />

<s:textfield name="caption" label="Caption" />

<s:submit />

</s:form>

</body>

</html>

showUpload1.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<%

String path = request.getContextPath()

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>显示图片</title>

</head>

<body>

<div

style="padding: 3pxborder: solid 1px #cccccctext-align: center">

<img src='images/<s:property value ="imageFileName" />' />

<br />

<s:property value="caption" />

</div>

<s:property value="caption" />

</body>

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9650561.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存