struts2 stream.xml中<result type="stream"></result>中的中文乱码问题

Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
I am using struts 2 json plugin for using the autocomplete. I have write an action
in struts.xml
&package name="example" extends="json-default"&
&result-types&
&result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/&
&/result-types&
&action name="searchIndustryaction"
class="com.sample.action.GetStartedAction"
method="searchIndustry"&
&result name="success" type="json"&&/result&
&/package&
it shows error in the response when i see through the firebug
&title&Struts Problem Report&/title&
margin: 0;
padding: 0;
&h2&Struts Problem Report&/h2&
Struts has detected an unhandled exception:
&div id="exception-info"&
&td&&strong&Messages&/strong&:&/td&
&li&No result defined for action com.cpt.fundation.action.GetStartedAction and result input&/li&
&td&&strong&File&/strong&:&/td&
&td&file:/D:/eclipse-indigo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/Fundation/WEB-INF/classes/struts.xml&/td&
&td&&strong&Line number&/strong&:&/td&
&td&70&/td&
&td&&strong&Column number&/strong&:&/td&
&td&119&/td&
&div id="snippet"&
&/result-types&&/pre&
&pre style="background:yellow"&
&action name=&searchIndustryaction&
class=&com.cpt.fundation.action.GetStartedAction&
method=&searchIndustry&&span style="background:red"&&&/span&&/pre&
&result name=&success& type=&json&&&/result&&/pre&
&/action&&/pre&
&div id="stacktraces"&
&h3&Stacktraces&/h3&
&div class="stacktrace" style="padding-left: 0em"&
&strong&No result defined for action com.cpt.fundation.action.GetStartedAction and result input - action - file:/D:/eclipse-indigo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/Fundation/WEB-INF/classes/struts.xml:70:119&/strong&
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:350)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:662)
&div class="footer"&
You are seeing this page because development mode is enabled.
Development mode, or devMode, enables extra
debugging behaviors and reports to assist developers.
To disable this mode, set:
struts.devMode=false
in your &code&WEB-INF/classes/struts.properties&/code& file.
Any ideas to resolve this?
&result name="success" type="json"&You need to specify result here&/result&
you did not specify any thing as result
15.5k103972
Did you find this question interesting? Try our newsletter
Sign up for our newsletter and get our top new questions delivered to your inbox ().
You are getting a validation or type conversion exception, so it looks for the "input" result.
Fix the validation/type conversion exception.
97k11114149
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Stack Exchange
Post as a guest
required, but not shown
Post as a guest
required, but not shown
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabledStruts2的迭代标签,在迭代标签中如果访问外部的变量及在struts2的配置文件中如果在action之间传值_百度知道
Struts2的迭代标签,在迭代标签中如果访问外部的变量及在struts2的配置文件中如果在action之间传值
1、在迭代一个List的时候如何去访问弗耿缔际郫宦惦为定力不属于这个List里面的一个基本属性如何获取2、在struts2的配置文件struts.xml中如何在action之间传递参数
谢谢你的回答,但都不对,第一个是使用循环时每次从集合中读取一个对象后显示的只能是该对象的属性,例如,UserAction中放着一个集合List&User& list和一个基本属性String rid ,值为0,集合中放的是User用户类,用户类有ID、姓名两个属性,在页面中循环显示:&s:iterator value=&list& var=&user&&&s:property value=&&id/&&s:property value=&&name/&//我想在这个地方根据rid的怎么写,&s:property value=&cid&/&这样不行&/s:iterator&第二个是struts2的返回值我有需要在struts.xml中进行传弗耿缔际郫宦惦为定力递,只是有时候可以用有时不可以用就像这样&result type=&redirectionAction&&/actionname?rid=${rid}&/result&
如果要获取不属于List里面的属性 如果action中有cid 这个属性可以考虑用EL表达式 $弗耿缔际郫宦惦为定力{cid} 把这个值放在你要放的地方如果想要在两个action之间传值 可以考虑用&result type=&chain&&&param name=&actionName&&a2&/param&&param name=&namespace&&/&/param&/result& 这个a2是另外你要传递的配置文件中action的name属性还有 前面request里面的值可以被后面的action取到还有一种就是重定向了 &action name=&delReply& class=&Action1& method=&dy&&
&result name=&success& type=&redirect& &xx.html?cid=${fcid}&/result&&/action&根据你的需求 你可以试试
其他类似问题
按默认排序
其他3条回答
1.&s:iterator value=&list& var=&user&&&s:property value=&&id/&&s:property value=&&name/&这个写错了 你当前的Action的属性useruser的属性是一个id和一个name用user,id 和user.name2. 你如果要传递参数配置&param name=&&&&/param& 这样一个玩意到&lt弗耿缔际郫宦惦为定力;action&中
这个真的没有错
第一个问题不是很明白,你变量放的范围是什么,就可以从什么范围内取到这个值,不管是不是迭代第二个问题,action传参应该是你从一个action跳到另一个action,你的参数不应该在配置文件里面写,首先需要搞清楚的是这两个action是不是在一个类里面,如果是,则在这个类里面直接声明一个参数变量,提供get、set方法,你跳到另一个action时就可以直接拿这个变量了,如果不在一个action,那就有点困难了,你可以在这个action的返回页面里面继续包一个iframe,iframe里面请求那个action
你说的不对吧,迭代List集合只能的到List中对象的属性,不可能拿到不属于List的属性&s:iterator value=&empList& var =&emp&&
&s:property value=&salary&/&&/s:iterator迭代的出的对象是emp,放在ValueStack的CompudRoot的栈顶,可以用&s:property/ value=&&&取出当前emp中的所有属性。
你的这个不可能是针对List,但我想拿到当前Action里面的基本属性,这个属性和List是同级的,虽然迭代的是List但跟取基本属性的值没有什么冲突
迭代的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁my java learning_小组_ThinkSAAS
my java learning
my java learning
1,首先是html页面(imgTest.jsp)
&span class="htgl_addpro_content_high_content"style="margin-left: 10"&
&img id="imgsrc"src="&%=basePath%&images/nopic.gif"width="131"height="180"&&/p&
&input type="text"id="imageUrlTmp"name="htglBookInfo.imageName"disabled value=""style="width: 220 height: 28 float:"class="txt1 isChanged"&&input type="hidden"id="imageUrl"name="htglBookInfo.imageName"value=""style="width: 400 height: 28 float:"class="txt1 isChanged"&&input id="chooseImg"type="button"class="darkBtn"value="浏览"style="height: 34 width: 100 margin-left: 45 float:"size="10"&&!-- &label style="color:red"&(*. *.)&/label& --&&input type="file"id="fileField1"style=""name="file"&&input type="text"style=""value="&%=basePath%&"id="imgPath"&&input type="text"style=""id="imgUrlToDb"name="htglBookInfo.imageUrl"value="${htglBookInfo.imageUrl }"&&/p&
2,struts配置(struts.xml)
&?xml version="1.0"encoding="UTF-8"?&&struts&&!-- &interceptor-stack name="fileUploadStack"&
&interceptor-ref name="fileUpload"/&
&interceptor-ref name="defaultStack"/&
&/interceptor-stack& --&&constant name="struts.devMode"value="true"&&/constant&&constant name="struts.xwork.chaining.copyErrors"value="true"&&/constant&&constant name="struts.xwork.chaining.copyFieldErrors"value="true"&&/constant&&constant name="struts.xwork.chaining.copyMessages"value="true"&&/constant&&constant name="struts.multipart.maxSize"value=""&&/constant&&include file="struts-default.xml"&&/include&&!-- &interceptor-stack name="fileUploadStack"&
&interceptor-ref name="fileUpload"/&
&interceptor-ref name="defaultStack"/&
&/interceptor-stack& --&&package name="wxcm"extends="json-default"&&!-- &interceptors&
&interceptor-stack name="fileUploadStack"&
&interceptor-ref name="fileUpload"/&
&interceptor-ref name="defaultStack"/&
&/interceptor-stack&
&/interceptors& --&&!-- 图片文件上传 --&&action name="imgUpLoad"class="imageUpload"method="imgUpLoad"&&!-- &interceptor-ref name="defaultStack"&
&param name="fileUpload.maximumSize"&&/param&
&param name="fileUpload.allowedTypesSet"&image/jpeg,application/octet-stream,image/bmp,image/gif&/param&
&/interceptor-ref& --&&interceptor-ref name="fileUploadStack"&&/interceptor-ref&&result type="json"name="success"&&param name="root"&htglImgUrl
&param name="contentType"&text/html
&param name="bufferSize"&40960
&!-- &param name="contentType"&image/jpeg,image/gif,image/bmp&/param& --&
&/result&&result type="json"name="error"&&param name="contentType"&
&/result&&/action&&!-- 图片文件预览--&&action name="showImg"class="imageUpload"method="showImg"&&result name="imgReadSuccess"type="stream"&&param name="contentType"&image/jpeg,image/gif,image/bmp
&param name="inputName"&imageStream
&param name="bufferSize"&4096
&/result&&/action&&!-- 图片文件显示--&&!-- &action name="toShowImage"class="imageDownload"method="toShowImage"&
&result name="imgReadSuccess"type="stream"&
&param name="contentType"&image/jpeg,image/gif&/param&
&param name="inputName"&imageStream&/param&
&param name="bufferSize"&4096&/param&
&/action& --&&/package&&/struts&
3,图片上传action(ImageUpload.java)
package xtyl.
import java.awt.image.BufferedI
import java.io.BufferedInputS
import java.io.ByteArrayInputS
import java.io.ByteArrayOutputS
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.IOE
import java.io.InputS
import java.io.UnsupportedEncodingE
import java.text.SimpleDateF
import java.util.D
import javax.imageio.ImageIO;
import jcifs.smb.SmbF
import jcifs.smb.SmbFileInputS
import net.coobird.thumbnailator.T
import net.sf.json.JSONA
import net.sf.json.JSONO
import mons.io.FileU
import org.apache.struts2.ServletActionC
import com.opensymphony.xwork2.ActionS
import common.util.SmbU
public class ImageUpload extends ActionSupport {
private static final long serialVersionUID = 0652521L;
* 图片文件
protected File file =
protected String fileFileName =
private static String rootPath =
rootPath = ServletActionContext.getServletContext().getRealPath("/");
* 返回图片在服务器的路径
private JSONArray htglImgU
* 编辑时需要显示的图片的名称
private String imgPath =
private ByteArrayInputStream imageS
* 预览图片
* @return String
public String imgUpLoad() {
LOG.debug("method imgUpLoad start!");
// 复制到指定目录
//String fileName ="thisImgName"+ fileFileName.substring(fileFileName.lastIndexOf("."));
String templatePath = rootPath +"uploadImgFile/"+ fileFileN
FileUtils.copyFile(file, new File(templatePath));
toGenerateThumbnailImage(templatePath, 0.2f);
} catch (IOException e) {
LOG.error("图片复制失败");
File file0 = new File(templatePath);
SmbUtil.smbPut(SmbUtil.remoteUrl, file0, file0.getName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
String newImgName = toGetImgName(templatePath, 0.2f);
File fileThumb = new File(rootPath +"uploadImgFile/"+newImgName);
SmbUtil.smbPut(SmbUtil.remoteUrl, fileThumb, fileThumb.getName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
JSONObject url = new JSONObject();
htglImgUrl = new JSONArray();
String toShowImgPath = rootPath +"uploadImgFile/"+ toGetImgName(rootPath +"uploadImgFile/"+fileFileName, 0.2f);
url.put("htglImgUrl", toGetImgName(rootPath +"uploadImgFile/"+fileFileName, 0.2f));
htglImgUrl.add(url);
return SUCCESS;
* 生成缩略图
* @param srcImgPath
* @param scale
private void toGenerateThumbnailImage(String srcImgPath, Float scale) {
if (srcImgPath == null || srcImgPath.isEmpty()) {
String newImgName = toGetImgName(srcImgPath, scale);
String rootPath = ServletActionContext.getServletContext().getRealPath("/");
String newImgPath = rootPath +"uploadImgFile/";
SmbFile sfile = new SmbFile(SmbUtil.remoteUrl);
if (!sfile.exists()) {
sfile.mkdirs();
} catch (Exception e) {
Thumbnails.of(srcImgPath).scale(scale).toFile(newImgPath+newImgName);
} catch (Exception e) {
e.printStackTrace();
* 获取指定比例的图片名称
* @param srcImgPath
* @param scale
private String toGetImgName(String srcImgPath, Float scale) {
if (srcImgPath == null || srcImgPath.isEmpty()) {
File srcImgFile = new File(srcImgPath);
Long imgWidth = 0L;
Long imgHeight = 0L;
Long imgLength = 0L;
FileInputStream fis = new FileInputStream(srcImgFile);
BufferedImage buff = ImageIO.read(srcImgFile);
BufferedImage buff1 = ImageIO.read(new SmbFileInputStream(SmbUtil.serverUrl + imageUrl));
imgWidth = buff.getWidth() * 1L;
imgHeight = buff.getHeight() * 1L;
imgLength = srcImgFile.length();
fis.close();
} catch (FileNotFoundException e) {
System.err.println("所给的图片文件"+ srcImgFile.getPath() +"不存在!计算图片尺寸大小信息失败!");
} catch (IOException e) {
System.err.println("计算图片"+ srcImgFile.getPath() +"尺寸大小信息失败!");
System.out.println("imgWidth ="+ imgWidth +"
imgHeight ="+ imgHeight +"
imgLength ="+ imgLength);
return toGetImgName(srcImgPath) +"_"
+ Integer.parseInt(new java.text.DecimalFormat("0").format(imgWidth * scale)) +"x"
+ Integer.parseInt(new java.text.DecimalFormat("0").format(imgHeight * scale))
+ srcImgPath.substring(srcImgPath.length() - 4, srcImgPath.length());
// System.out.println("newImgName ="+ newImgName);
* 获取图片名称
* @param imgPath
private String toGetImgName(String imgPath) {
String str[] = imgPath.split("[\/]");
if (str == null || str.length == 0) {
String tmpStr = str[str.length - 1];
return tmpStr.substring(0, tmpStr.length() - 4);
* 显示图片
* @throws UnsupportedEncodingException
public String showImg() throws UnsupportedEncodingException {
if (imgPath != null && !imgPath.isEmpty()) {
String rootPath = ServletActionContext.getServletContext().getRealPath("/");
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String timeStr = formatter.format(new Date());
String imgSavePath = SmbUtil.remoteUrl +"/"+ timeStr +"/"+ imgP
imageStream = SmbUtil.smbGet(imgSavePath);
} catch (Exception e) {
LOG.error("图片显示出错!");
return"imgReadSuccess";
public File getFile() {
public void setFile(File file) {
this.file =
public String getFileFileName() {
return fileFileN
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileN
public JSONArray getHtglImgUrl() {
return htglImgU
public void setHtglImgUrl(JSONArray htglImgUrl) {
this.htglImgUrl = htglImgU
public String getImgPath() {
return imgP
public void setImgPath(String imgPath) {
this.imgPath = imgP
public ByteArrayInputStream getImageStream() {
return imageS
public void setImageStream(ByteArrayInputStream imageStream) {
this.imageStream = imageS
4,spring配置文件(application.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:task="http://www.springframework.org/schema/task"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.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
"&&!-- &bean id="propertyConfigurer"
class="com.mon.util.WxcmPropertyPlaceholderConfigurer"&
&property name="locations"&
&value&/WEB-INF/conf/DB.properties&/value&
&value&/WEB-INF/conf/Mail.properties&/value&
&/property&
&/bean& --&&bean id="dataSource"class="com.mchange.boPooledDataSource"destroy-method="close"&&property name="driverClass"&&value&${driverClassName}&/value&&/property&&property name="jdbcUrl"&&value&${url}&/value&&/property&&property name="user"&&value&${username}&/value&&/property&&property name="password"&&value&${password}&/value&&/property&&property name="minPoolSize"value="5"&&/property&&property name="maxPoolSize"value="15"&&/property&&property name="initialPoolSize"value="10"&&/property&&property name="maxIdleTime"value="60"&&/property&&property name="acquireIncrement"value="10"&&/property&&property name="maxStatements"value="0"&&/property&&property name="acquireRetryAttempts"value="5"&&/property&&property name="idleConnectionTestPeriod"value="60"&&/property&&property name="breakAfterAcquireFailure"value="false"&&/property&&property name="testConnectionOnCheckout"value="false"&&/property&&/bean&&!--
&property name="defaultAutoCommit"value="true"&&/property&
&property name="validationQuery"value="select 1 from dual"&&/property&
--&&!-- Database initializer. If any of the script fails, the initialization
stops. --&&!--As an alternative, for embedded databases see &jdbc:embedded-database/&.
&jdbc:initialize-database data-source="dataSource"& &jdbc:script location="${location}"
encoding="UTF-8"/& &/jdbc:initialize-database& --&&bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&&property name="dataSource"ref="dataSource"&&/property&&property name="hibernateProperties"&&props&&prop key="hibernate.dialect"&org.hibernate.dialect.OracleDialect&/prop&&!-- &prop key="hibernate.default_schema"&wxcm&/prop& --&&prop key="hibernate.show_sql"&true&/prop&&prop key="hibernate.autoReconnect"&true&/prop&&/props&&/property&&!-- &property name="mappingResources"&
&value&com/usi/wxcm/entity/User.hbm.xml &/value&
&value&com/usi/wxcm/entity/DataDict.hbm.xml &/value&
&value&com/usi/wxcm/entity/Role.hbm.xml&/value&
&value&com/usi/wxcm/entity/ProjectCode.hbm.xml&/value&
&/property& --&&/bean&&bean id="hibernateTemplate"class="org.springframework.orm.hibernate4.HibernateTemplate"&&property name="sessionFactory"ref="sessionFactory"&&/property&&/bean&&bean id="daoTemplate"abstract="true"&&property name="hibernateTemplate"&&ref bean="hibernateTemplate"&&/ref&&/property&&/bean&&!-- 定义事务管理器(声明式的事务) --&&bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"&&property name="sessionFactory"ref="sessionFactory"&&/property&&/bean&&!-- use declarative transaction management --&&annotation-driven transaction-manager="transactionManager"&&/annotation-driven&&!-- 图片显示 --&&bean id="imageUpload"class="xtyl.action.ImageUpload"scope="prototype"&&/bean&&/beans&
5,web.xml配置
&?xml version="1.0"encoding="UTF-8"?&&web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemalocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"&&context-param&&param-name&contextConfigLocation&/param-name&&param-value&/WEB-INF/applicationContext.xml&/param-value&&/context-param&&filter&&filter-name&struts2&/filter-name&&filter-class&org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&/filter-class&&/filter&&filter-mapping&&filter-name&struts2&/filter-name&&url-pattern&*.action&/url-pattern&&/filter-mapping&&listener&&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&/listener&&welcome-file-list&&welcome-file&imgTest.jsp&/welcome-file&&/welcome-file-list&&session-config&&session-timeout&30&/session-timeout&&/session-config&&/web-app&
6,需要相关的js插件
jquery-1.11.1.min.js 和 ajaxfileupload.js
7,自己写的相关图片上传js代码(imgUpload.js)
function changeUrl(){
var path = $('#fileField1').val();
//alert("path==="+path);
var post = path.lastIndexOf("\");
//alert("post==="+post);
$('#imageUrl').val(path.substring(post + 1, path.length));
$('#imageUrlTmp').val(path.substring(post + 1, path.length));
alert(path.substring(post + 1, path.length));
var imgup = document.getElementById("imageUrl");
if (imgup.value =="") {
// 判断是否是图片格式
var imgname = imgup.value.substring(imgup.value.lastIndexOf("."), imgup.value.length);
imgname = imgname.toLowerCase();
// 显示图片
$.ajaxFileUpload({
url : 'imgUpLoad.action?'+new Date().getTime(),
secureuri : false,
fileElementId : 'fileField1',
dataType : 'json',
error:function (data, status, e)//服务器响应失败处理函数
alert("errrrrrrr");
alert(data.msg);
alert(status);
success : function(result) {
$("#imgsrc").attr("src","showImg.action?"+new Date().getTime()+"&imgPath="+result[0].htglImgUrl);
//忽略大小写比较字符串是否相等
function equalsIgnoreCase(str1, str2){
if(str1.toUpperCase() == str2.toUpperCase()){
8,pox.xml文件配置
&project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&&modelversion&4.0.0&/modelversion&&groupid&com.XtylImage&/groupid&&artifactid&XtylImage&/artifactid&&version&0.0.1-SNAPSHOT&/version&&packaging&war&/packaging&&properties&&project.build.sourceencoding&UTF-8&/project.build.sourceencoding&&struts.version&2.3.1.2&/struts.version&&spring.version&4.0.2.RELEASE&/spring.version&&hibernate.version&4.3.6.Final&/hibernate.version&&/properties&&build&&resources&&resource&&directory&src/main/resources&/directory&&filtering&true&/filtering&&/resource&&/resources&&pluginmanagement&&plugins&&plugin&&artifactid&maven-compiler-plugin&/artifactid&&version&2.3.2&/version&&inherited&true&/inherited&&configuration&&source&1.7&/source&&target&1.7&/target&&encoding&UTF-8&/encoding&&/configuration&&/plugin&&/plugins&&/pluginmanagement&&/build&&dependencymanagement&&dependencies&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-core&/artifactid&&version&${struts.version}&/version&&exclusions&&exclusion&&groupid&javassist&/groupid&&artifactid&javassist&/artifactid&&/exclusion&&/exclusions&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-json-plugin&/artifactid&&version&${struts.version}&/version&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-spring-plugin&/artifactid&&version&${struts.version}&/version&&exclusions&&exclusion&&artifactid&spring-web&/artifactid&&groupid&org.springframework&/groupid&&/exclusion&&exclusion&&artifactid&spring-beans&/artifactid&&groupid&org.springframework&/groupid&&/exclusion&&exclusion&&artifactid&spring-context&/artifactid&&groupid&org.springframework&/groupid&&/exclusion&&exclusion&&artifactid&spring-core&/artifactid&&groupid&org.springframework&/groupid&&/exclusion&&/exclusions&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-convention-plugin&/artifactid&&version&${struts.version}&/version&&/dependency&&dependency&&groupid&log4j&/groupid&&artifactid&log4j&/artifactid&&version&1.2.14&/version&&/dependency&&dependency&&groupid&org.slf4j&/groupid&&artifactid&slf4j-api&/artifactid&&version&1.6.1&/version&&/dependency&&dependency&&groupid&org.slf4j&/groupid&&artifactid&slf4j-log4j12&/artifactid&&version&1.6.0&/version&&/dependency&&dependency&&groupid&junit&/groupid&&artifactid&junit&/artifactid&&version&4.10&/version&&scope&test&/scope&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-core&/artifactid&&version&${hibernate.version}&/version&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-entitymanager&/artifactid&&version&${hibernate.version}&/version&&/dependency&&dependency&&groupid&net.sf.ehcache&/groupid&&artifactid&ehcache&/artifactid&&version&1.6.2&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-core&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-context&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-jdbc&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-orm&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-tx&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-web&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-test&/artifactid&&version&${spring.version}&/version&&scope&test&/scope&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-validator&/artifactid&&version&4.3.0.Final&/version&&/dependency&&dependency&&groupid&commons-dbcp&/groupid&&artifactid&commons-dbcp&/artifactid&&version&1.4&/version&&/dependency&&dependency&&groupid&commons-pool&/groupid&&artifactid&commons-pool&/artifactid&&version&1.5.6&/version&&/dependency&&dependency&&groupid&commons-codec&/groupid&&artifactid&commons-codec&/artifactid&&version&1.5&/version&&/dependency&&dependency&&groupid&net.sf.json-lib&/groupid&&artifactid&json-lib&/artifactid&&version&2.4&/version&&classifier&jdk15&/classifier&&/dependency&&dependency&&groupid&javax.mail&/groupid&&artifactid&mail&/artifactid&&version&1.4&/version&&/dependency&&dependency&&groupid&junit&/groupid&&artifactid&junit&/artifactid&&scope&test&/scope&&version&4.4&/version&&/dependency&&/dependencies&&/dependencymanagement&&dependencies&&dependency&&groupid&javax.servlet&/groupid&&artifactid&servlet-api&/artifactid&&version&2.5&/version&&scope&provided&/scope&&/dependency&&dependency&&groupid&javax.servlet&/groupid&&artifactid&jstl&/artifactid&&version&1.2&/version&&/dependency&&dependency&&groupid&javax.servlet.jsp&/groupid&&artifactid&jsp-api&/artifactid&&version&2.2&/version&&scope&provided&/scope&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-core&/artifactid&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-spring-plugin&/artifactid&&/dependency&&dependency&&groupid&org.apache.struts&/groupid&&artifactid&struts2-json-plugin&/artifactid&&/dependency&&dependency&&groupid&log4j&/groupid&&artifactid&log4j&/artifactid&&/dependency&&dependency&&groupid&org.slf4j&/groupid&&artifactid&slf4j-api&/artifactid&&/dependency&&dependency&&groupid&org.slf4j&/groupid&&artifactid&slf4j-log4j12&/artifactid&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-core&/artifactid&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-entitymanager&/artifactid&&/dependency&&dependency&&groupid&net.sf.ehcache&/groupid&&artifactid&ehcache&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-core&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-context&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-jdbc&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-orm&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-tx&/artifactid&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-web&/artifactid&&/dependency&&dependency&&groupid&org.hibernate&/groupid&&artifactid&hibernate-validator&/artifactid&&/dependency&&dependency&&groupid&commons-dbcp&/groupid&&artifactid&commons-dbcp&/artifactid&&/dependency&&dependency&&groupid&com.oracle&/groupid&&artifactid&ojdbc6&/artifactid&&version&11.2.0.1&/version&&/dependency&&dependency&&groupid&commons-codec&/groupid&&artifactid&commons-codec&/artifactid&&/dependency&&dependency&&groupid&org.apache.poi&/groupid&&artifactid&poi&/artifactid&&version&3.9&/version&&/dependency&&dependency&&groupid&org.apache.poi&/groupid&&artifactid&poi-ooxml&/artifactid&&version&3.9&/version&&/dependency&&dependency&&groupid&org.apache.poi&/groupid&&artifactid&poi-scratchpad&/artifactid&&version&3.9&/version&&/dependency&&dependency&&groupid&org.apache.poi&/groupid&&artifactid&poi-ooxml-schemas&/artifactid&&version&3.9&/version&&/dependency&&dependency&&groupid&net.sf.jxls&/groupid&&artifactid&jxls-core&/artifactid&&version&1.0.3&/version&&/dependency&&dependency&&groupid&net.sf.jxls&/groupid&&artifactid&jxls-reader&/artifactid&&version&1.0.3&/version&&/dependency&&dependency&&groupid&net.sf.json-lib&/groupid&&artifactid&json-lib&/artifactid&&classifier&jdk15&/classifier&&/dependency&&dependency&&groupid&mons&/groupid&&artifactid&commons-compress&/artifactid&&version&1.8.1&/version&&/dependency&&dependency&&groupid&commons-validator&/groupid&&artifactid&commons-validator&/artifactid&&version&1.4.0&/version&&/dependency&&dependency&&groupid&javax.mail&/groupid&&artifactid&mail&/artifactid&&/dependency&&dependency&&groupid&jcifs&/groupid&&artifactid&jcifs&/artifactid&&version&1.3.17&/version&&/dependency&&!-- 缩略图配置 begin --&&dependency&&groupid&thumbnailator&/groupid&&artifactid&thumbnailator&/artifactid&&version&0.4.5&/version&&/dependency&&!-- 缩略图配置 end --&&dependency&&groupid&com.mchange&/groupid&&artifactid&c3p0&/artifactid&&version&0.9.5-pre10&/version&&/dependency&&dependency&&groupid&junit&/groupid&&artifactid&junit&/artifactid&&scope&test&/scope&&/dependency&&dependency&&groupid&org.quartz-scheduler&/groupid&&artifactid&quartz&/artifactid&&version&1.8.4&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-webmvc&/artifactid&&version&${spring.version}&/version&&/dependency&&dependency&&groupid&org.springframework&/groupid&&artifactid&spring-context-support&/artifactid&&version&${spring.version}&/version&&/dependency&&/dependencies&&/project&
9,远程图片服务器相关参数文件(smbConfig.properties)
hostIP=172.17.2.23
#远程图片服务器ip
loginUser=wxcm
#登陆用户名
loginPwd=Overseas123
imagePath=wxcm2/xtylTest/images/xtylImages
#存储图片文件夹
10,上传及预览用到的相关方法(SmbUtil.java)
package common.
import java.io.BufferedInputS
import java.io.BufferedOutputS
import java.io.ByteArrayInputS
import java.io.ByteArrayOutputS
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.text.SimpleDateF
import java.util.D
import java.util.P
import jcifs.smb.SmbE
import jcifs.smb.SmbF
import jcifs.smb.SmbFileInputS
import jcifs.smb.SmbFileOutputS
import mons.logging.L
import mons.logging.LogF
public class SmbUtil {
private static final Log LOG = LogFactory.getLog(SmbUtil.class);
* 加载配置文件
public static String serverU
public static String remoteU
public static String imageZipRemoteU
public static String gysUploadImagRemoteU
public static String gysUploadFileRemoteU
public static String compareResultFileU
Properties prop = new Properties();
InputStream in = SmbUtil.class.getResourceAsStream("/smbConfig.properties");
prop.load(in);
String hostIP = prop.getProperty("hostIP").trim();
String loginUser = prop.getProperty("loginUser").trim();
String loginPwd = prop.getProperty("loginPwd").trim();
String imagePath = prop.getProperty("imagePath").trim();
serverUrl ="smb://"+ loginUser +":"+ loginPwd +"@"+ hostIP;
remoteUrl ="smb://"+ loginUser +":"+ loginPwd +"@"+ hostIP +"/"+ imageP
} catch (Exception e) {
e.printStackTrace();
* 把文件上传到局域网共享文件下
* @param remoteUrl 共享电脑路径 如:smb//administrator:.16.10.136/smb
* @param localFile File对象
* @param fileName 保存的文件名
public static String smbPut(String remoteUrl, File localFile, String fileName) throws IOException {
if (localFile == null || !localFile.exists()) {
InputStream in =
OutputStream out =
String remoteFileName =
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String timeStr = formatter.format(new Date());
* SmbFile sfile = new SmbFile(remoteUrl + File.separator + timeStr + File.separator); if (!sfile.exists()) { sfile.mkdirs(); }
String imgSavePath = SmbUtil.remoteUrl +"/"+ timeStr +"/";
SmbFile sfile = new SmbFile(imgSavePath);
if (!sfile.exists()) {
sfile.mkdirs();
} catch (Exception e) {
SmbFile remoteFile = new SmbFile(remoteUrl + File.separator + timeStr + File.separator + fileName);
in = new BufferedInputStream(new FileInputStream(localFile));
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
byte[] buffer = new byte[1024];
while ((in.read(buffer)) != -1) {
out.write(buffer);
buffer = new byte[1024];
remoteFileName = remoteFile.getName();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
if (in != null) {
in.close();
} catch (IOException e) {
e.printStackTrace();
return remoteFileN
* 把文件上传到局域网共享文件下(编辑书目时,如果图片被替换,则删除原图片保存新图片)
* @param remoteUrl 共享电脑路径 如:smb//administrator:.16.10.136/smb
* @param localFile File对象
* @param fileName 保存的文件名
* @param fileNameBeforeUpd 被编辑前保存的图片名称
* public static String smbPut(String remoteUrl, File localFile, String fileName, String fileNameBeforeUpd) throws IOException { // 删除原图片 SmbFile remoteFileDel = new SmbFile(remoteUrl + File.separator + fileNameBeforeUpd); // 路径为文件且不为空则进行删除 if (remoteFileDel.isFile() && remoteFileDel.exists()) { remoteFileDel.delete(); }
用户评论(0)
开发技术学习小组列表
PHP开发框架
缓存Memcache
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。
iphone扫码下载客户端

我要回帖

更多关于 struts result 的文章

 

随机推荐