??xml version="1.0" encoding="utf-8" standalone="yes"?>最近中文字幕mv免费高清在线,久久精品国产第一区二区三区 ,久久精品国产色蜜蜜麻豆http://www.aygfsteel.com/hilor/category/25278.html我的学习案?/description>zh-cnSun, 26 Aug 2007 22:25:20 GMTSun, 26 Aug 2007 22:25:20 GMT60Struts中上传文?formfile的应?/title><link>http://www.aygfsteel.com/hilor/articles/139546.html</link><dc:creator>hilor</dc:creator><author>hilor</author><pubDate>Sun, 26 Aug 2007 10:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/hilor/articles/139546.html</guid><wfw:comment>http://www.aygfsteel.com/hilor/comments/139546.html</wfw:comment><comments>http://www.aygfsteel.com/hilor/articles/139546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hilor/comments/commentRss/139546.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hilor/services/trackbacks/139546.html</trackback:ping><description><![CDATA[今天׃Ҏ间学习了一下struts的commons-fileupload.jar,在网上找了个例子,用MyEclipse重新开发了一?大约用时两个时,是ok?下面是系l应用的部分代码:<br>UploadsActionAction.java<br><br>  </font><font color=#0000aa size=2><em>//Created by MyEclipse Struts</font></em><font color=black size=2><br></font><font color=#0000aa size=2><em>// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl</font></em><font color=black size=2><br><br><font color=blue size=2>package</font> struts.action;<br><br><font color=blue size=2>import</font> javax.servlet.http.HttpServletRequest;<br><font color=blue size=2>import</font> javax.servlet.http.HttpServletResponse;<br><br><font color=blue size=2>import</font> org.apache.struts.action.Action;<br><font color=blue size=2>import</font> org.apache.struts.action.ActionForm;<br><font color=blue size=2>import</font> org.apache.struts.action.ActionForward;<br><font color=blue size=2>import</font> org.apache.struts.action.ActionMapping;<br><br><font color=blue size=2>import</font> struts.form.UploadsActionForm;<br><font color=blue size=2>import</font> org.apache.struts.upload.FormFile;<br><font color=blue size=2>import</font> java.io.*;<br></font><font color=#0000aa size=2><em>/** <br>* MyEclipse Struts<br>* Creation date: 06-11-2006<br>* <br>* XDoclet definition:<br>* @struts.action path="/uploadsAction" name="uploadsActionForm" input="/form/uploadsAction.jsp" scope="request" validate="true"<br>*/</font></em><font color=black size=2><br><font color=blue size=2>public</font> <font color=blue size=2>class</font> UploadsActionAction <font color=blue size=2>extends</font> Action {<br><br></font><font color=#0000aa size=2><em>// --------------------------------------------------------- Instance Variables</font></em><font color=black size=2><br><br></font><font color=#0000aa size=2><em>// --------------------------------------------------------- Methods</font></em><font color=black size=2><br><br></font><font color=#0000aa size=2><em>/** <br>* Method execute<br>* @param mapping<br>* @param form<br>* @param request<br>* @param response<br>* @return ActionForward<br>*/</font></em><font color=black size=2><br></font><font color=#0000aa size=2><em>//UploadsActionForm uploadsActionForm = (UploadsActionForm) form;</font></em><font color=black size=2><br><font color=blue size=2>public</font> ActionForward execute(ActionMapping mapping,<br>            ActionForm form,<br>            HttpServletRequest request,<br>            HttpServletResponse response)<br><font color=red size=2>throws</font> Exception {<br><br><font color=red size=2>String</font> encoding = request.getCharacterEncoding();<br><font color=blue size=2>if</font> ((encoding != <font color=blue size=2>null</font>) && (encoding.equalsIgnoreCase(</font><font color=#00bb00 size=2>"utf-8"</font><font color=black size=2>)))<br>{<br>response.setContentType(</font><font color=#00bb00 size=2>"text/html; charset=gb2312"</font><font color=black size=2>);</font><font color=#0000aa size=2><em>//如果没有指定~码Q编码格式ؓgb2312</font></em><font color=black size=2><br>}<br>UploadsActionForm theForm = (UploadsActionForm ) form;<br>FormFile file = theForm.getFiles();</font><font color=#0000aa size=2><em>//取得上传的文?/font></em><font color=black size=2><br><font color=blue size=2>try</font> {<br>InputStream stream = file.getInputStream();</font><font color=#0000aa size=2><em>//把文件读?/font></em><font color=black size=2><br><font color=red size=2>String</font> filePath = request.getRealPath(</font><font color=#00bb00 size=2>"/upload"</font><font color=black size=2>);</font><font color=#0000aa size=2><em>//上传到指定的upload包中</font></em><font color=black size=2><br>ByteArrayOutputStream baos = <font color=blue size=2>new</font> ByteArrayOutputStream();<br>OutputStream bos = <font color=blue size=2>new</font> FileOutputStream(filePath + </font><font color=#00bb00 size=2>"/"</font><font color=black size=2> +<br>                               file.getFileName());</font><font color=#0000aa size=2><em>//建立一个上传文件的输出?/font></em><font color=black size=2><br></font><font color=#0000aa size=2><em>//System.out.println(filePath+"/"+file.getFileName());</font></em><font color=black size=2><br><font color=blue size=2>int</font> bytesRead = 0;<br>byte[] buffer = <font color=blue size=2>new</font> byte[8192];<br><font color=blue size=2>while</font> ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {<br>bos.write(buffer, 0, bytesRead);</font><font color=#0000aa size=2><em>//文件写入服务器</font></em><font color=black size=2><br>}<br>bos.close();<br>stream.close();<br>}<font color=blue size=2>catch</font>(Exception e){<br>System.err.print(e);<br>}<br></font><font color=#0000aa size=2><em>//request.setAttribute("dat",file.getFileName());</font></em><font color=black size=2><br><font color=blue size=2>return</font> mapping.findForward(</font><font color=#00bb00 size=2>"display"</font><font color=black size=2>);<br><br>}<br><br>}<br><br>UploadsActionForm.java<br><br></font><font color=#0000aa size=2><em>//Created by MyEclipse Struts</font></em><font color=black size=2><br></font><font color=#0000aa size=2><em>// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl</font></em><font color=black size=2><br><br><font color=blue size=2>package</font> struts.form;<br><br><font color=blue size=2>import</font> org.apache.struts.action.ActionForm;<br><font color=blue size=2>import</font> org.apache.struts.upload.FormFile;<br><br></font><font color=#0000aa size=2><em>/** <br>* MyEclipse Struts<br>* Creation date: 06-11-2006<br>* <br>* XDoclet definition:<br>* @struts.form name="uploadsActionForm"<br>*/</font></em><font color=black size=2><br><font color=blue size=2>public</font> <font color=blue size=2>class</font> UploadsActionForm <font color=blue size=2>extends</font> ActionForm {<br>  </font><font color=#0000aa size=2><em>//public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded";</font></em><font color=black size=2><br><br></font><font color=#0000aa size=2><em>// --------------------------------------------------------- Instance Variables</font></em><font color=black size=2><br><br></font><font color=#0000aa size=2><em>/** theFile property */</font></em><font color=black size=2><br><font color=blue size=2>protected</font> FormFile files;<br><br></font><font color=#0000aa size=2><em>// --------------------------------------------------------- </font></em><font color=black size=2><br><br></font><font color=#0000aa size=2><em>/** <br>* Returns files.<br>* @return FormFile<br>*/</font></em><font color=black size=2><br><font color=blue size=2>public</font> FormFile getFiles() {<br><font color=blue size=2>return</font> files;<br>}<br><br></font><font color=#0000aa size=2><em>/** <br>* Set the files.<br>* @param files The files to set<br>*/</font></em><font color=black size=2><br><font color=blue size=2>public</font> <font color=blue size=2>void</font> setFiles(FormFile file) {<br><font color=blue size=2>this</font>.files = file;<br>}<br><br>}<br><br>上传用的面:uploadFile.jsp<br><br><%@ page language=</font><font color=#00bb00 size=2>"java"</font><font color=black size=2>%><br><%@ taglib uri=</font><font color=#00bb00 size=2>"/WEB-INF/struts-html.tld"</font><font color=black size=2> prefix=</font><font color=#00bb00 size=2>"html"</font><font color=black size=2>%><br><br><html> <br><head><br><title>JSP <font color=blue size=2>for</font> uploadsActionForm <font color=blue size=2>for</font>m</title><br></head><br><body><br><html:form action=</font><font color=#00bb00 size=2>"/uploadsAction"</font><font color=black size=2> enctype=</font><font color=#00bb00 size=2>"multipart/form-data"</font><font color=black size=2>> <1><br>theFile : <html:file property=</font><font color=#00bb00 size=2>"files"</font><font color=black size=2>/><br/><br><html:submit/><html:cancel/><br></html:form><br></body><br></html><br>刚开?lt;1>处落下了</font><font color=#00bb00 size=2>"enctype="</font><font color=black size=2>multipart/form-data</font><font color=#00bb00 size=2>" 费了我不时间才搞定<br>--------------------------------------------------------------------------------------------------------------<br><br><br><br><font color=#000000 size=3>FormBean:<br>package onlyfun.caterpillar; <br><br>import javax.servlet.http.*; <br>import org.apache.struts.action.*; <br>import org.apache.struts.upload.*; <br><br>public class UploadForm extends ActionForm { <br>private FormFile file; <br><br>public void setFile(FormFile file) { <br>this.file = file; <br>} <br><br>public FormFile getFile() { <br>return file; <br>} <br><br>public void reset(ActionMapping mapping, HttpServletRequest req) { <br>file = null; <br>} <br>}<br><br>JSP:<br><html:form action="/Upload" method="post" enctype="multipart/form-data"> <br>選擇檔案:<html:file property="file" /> <br><html:submit>上傳</html:submit> <br></html:form><br><br>Action:<br>package onlyfun.caterpillar; <br><br>import java.io.*; <br>import javax.servlet.http.*; <br>import org.apache.struts.action.*; <br>import org.apache.struts.upload.*; <br><br>public class UploadAction extends Action { <br>public ActionForward execute(ActionMapping mapping, <br>ActionForm form, <br>HttpServletRequest request, <br>HttpServletResponse response) <br>throws Exception { <br>UploadForm fileForm = (UploadForm) form; <br>FormFile file = fileForm.getFile(); <br>FileOutputStream fileOutput = new FileOutputStream("/home/caterpillar/files/" + file.getFileName()); <br><br>fileOutput.write(file.getFileData()); <br>fileOutput.flush(); <br>fileOutput.close(); <br><br>return mapping.findForward("success"); <br>} <br>}</font><br><br><br> <script src="http://sc.qihoo.com/ad_bcast/spider_search_zhongxin.js?ID=7730&site=bbs1.softhouse.com.cn&type=topic&title=Re: [struts]如何生成Formfile对象?&key=fc1f900cfd735ad459d3cd438106e180&page_code=gb2312&m=161072&p=2002&a=3001"></script> <br><br></font> <img src ="http://www.aygfsteel.com/hilor/aggbug/139546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hilor/" target="_blank">hilor</a> 2007-08-26 18:26 <a href="http://www.aygfsteel.com/hilor/articles/139546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Struts里提交中文表单到ActionForm后的q问题http://www.aygfsteel.com/hilor/articles/139442.htmlhilorhilorSun, 26 Aug 2007 04:33:00 GMThttp://www.aygfsteel.com/hilor/articles/139442.htmlhttp://www.aygfsteel.com/hilor/comments/139442.htmlhttp://www.aygfsteel.com/hilor/articles/139442.html#Feedback0http://www.aygfsteel.com/hilor/comments/commentRss/139442.htmlhttp://www.aygfsteel.com/hilor/services/trackbacks/139442.html׃Struts框架直接把表单数据发送给了ActionFormQ所以这里面没有对HttpRequestServletq行SetCharacterEncoding,所以默认是按照ISO-8859-1(参见Tomcat 源代码中的org.apache.catalina.connector.HttpRequestBase中的protected void parseParameters()Ҏ)Q?/div>

解决的方法,是在表单提交到ActionForm之前对requestq行~码?br>W一U方法,是写一个过滤器Q对所有请求进行过?br>


qo器代码:
package jp.co.ricoh.gtis.others.profile.filters;

 

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {
 private String encoding;
 public void init(FilterConfig filterConfig) throws ServletException {
  // TODO Auto-generated method stub
  this.encoding=filterConfig.getInitParameter("encoding");
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  request.setCharacterEncoding(this.encoding);
  chain.doFilter(request,response);
 }

 public void destroy() {
  // TODO Auto-generated method stub

 }

}


 

配置文gweb.xml
  <filter>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <filter-class>jp.co.ricoh.gtis.others.profile.filters.SetCharacterEncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
  </filter>

   <filter-mapping>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern> 
  </filter-mapping>


 

W二U方法是替换默认的控制器org.apache.struts.action.ActionServlet

 


子类代码Q?br>package jp.co.ricoh.gtis.others.profile.controllers;

 

import java.io.IOException;

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

import org.apache.struts.action.ActionServlet;

public class SetEncodingActionServlet extends ActionServlet {

 protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  // TODO Auto-generated method stub
  String encoding = getInitParameter("encoding");
  request.setCharacterEncoding(encoding);
  super.process(request, response);
 }

}


 

配置文gweb.xml
  <servlet>
    <servlet-name>testAction</servlet-name>
    <servlet-class>jp.co.ricoh.gtis.others.profile.controllers.SetEncodingActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>testAction</servlet-name>
    <url-pattern>*.testdo</url-pattern>
  </servlet-mapping>

此例Q凡是通过*.testdo来请求的数据Q都会经q参数encoding讑֮的值来~码?/p>



hilor 2007-08-26 12:33 发表评论
]]>
վ֩ģ壺 ũ| | | | | | ƽ| | | | | ϲ| ¡| ɽ| ͼ| ³ƶ| | | | ͤ| | | ԭ| ϰˮ| | | Դ| ư| | пǰ| ˮ| | ̨| | Խ| | Ұ| ̶| ؿ˹| ɽ| ɽ|