读书人

springMVC怎么在controller中获取serv

发布时间: 2012-12-19 14:13:14 作者: rapoo

springMVC如何在controller中获取servletContext
本帖最后由 zhoulingchuan 于 2012-11-29 10:31:16 编辑 上传文件时使用fineuploader
controller中的上传方法:


new File(FileManager.T_MAIL_ATTACHMENT_PATH + folder).mkdirs();//创建文件夹
try
{
ServletContext sc = req.getSession().getServletContext();
UploadReceiver ur = new UploadReceiver(sc);
ur.doPost(req, resp);
} catch (Exception e)
{
e.printStackTrace();
}

uploaderReceiver.java

import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.tempus.common.utils.FileManager;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

public class UploadReceiver extends HttpServlet
{
private static final long serialVersionUID = 1L;
private static File UPLOAD_DIR = new File(FileManager.T_MAIL_ATTACHMENT_PATH);
private static File TEMP_DIR = new File(FileManager.T_MAIL_TEMP_ATTACHMENT_PATH);
private static String CONTENT_TYPE = "text/html;charset=GBK";
private static String CONTENT_LENGTH = "Content-Length";
private static int RESPONSE_CODE = 200;
//private static File UPLOAD_DIR = new File("uploads");
//private static File TEMP_DIR = new File("uploadsTemp");
//private static String CONTENT_TYPE = "text/plain";
//private static String CONTENT_LENGTH = "Content-Length";
//private static int RESPONSE_CODE = 200;
final Logger log = LoggerFactory.getLogger(UploadReceiver.class);
public UploadReceiver(){}
private ServletContext reqs = null;;
public UploadReceiver(ServletContext sc){
this.reqs = sc;
}
@Override
public void init() throws ServletException
{
UPLOAD_DIR.mkdirs();
}

@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
String contentLengthHeader = req.getHeader(CONTENT_LENGTH);
Long expectedFileSize = StringUtils.isBlank(contentLengthHeader) ? null
: Long.parseLong(contentLengthHeader);
RequestParser requestParser;
try
{
resp.setContentType(CONTENT_TYPE);
resp.setStatus(RESPONSE_CODE);
req.setCharacterEncoding("UTF-8");
if (ServletFileUpload.isMultipartContent(req))
{
requestParser = RequestParser.getInstance(req,
new MultipartUploadParser(req, TEMP_DIR,this.reqs));
doWriteTempFileForPostRequest(requestParser);
writeResponse(resp.getWriter(), null);
}
else
{
requestParser = RequestParser.getInstance(req, null);
String fileName = new String(requestParser.getFilename().getBytes("ISO8859-1"),"UTF-8");
writeToTempFile(req.getInputStream(), new File(UPLOAD_DIR,
fileName), expectedFileSize);
writeResponse(resp.getWriter(), null);


}
} catch (Exception e)
{
log.error("Problem handling upload request", e);
writeResponse(resp.getWriter(), e.getMessage());
}
}

private void doWriteTempFileForPostRequest(RequestParser requestParser)
throws Exception
{
writeToTempFile(requestParser.getUploadItem().getInputStream(),
new File(UPLOAD_DIR, requestParser.getFilename()), null);
}



ie上传失败,ff可以.

调试 发现 就是servletContext有问题,请问 springMVC中如何获取它!
如下代码

requestParser = RequestParser.getInstance(req,
new MultipartUploadParser(req, TEMP_DIR,this.reqs));
doWriteTempFileForPostRequest(requestParser);
writeResponse(resp.getWriter(), null);是使用ie时调用的方法 .
[最优解释]
你这程序不是spring的MVC包的东西。


[其他解释]
引用:
你这程序不是spring的MVC包的东西。


不是阿,搞定了.结贴!
[其他解释]
请看这里:http://my.oschina.net/u/252854/blog/92965

读书人网 >Java Web开发

热点推荐