实现了ProgressListener的类.主要用来实现获取上传文件进度条public class myProgressListener implements ProgressListener {
private HttpSession session; public myProgressListener(HttpServletRequest req) {
System.out.println("存入session");
session=req.getSession();
FileUploadStatus status = new FileUploadStatus();
session.setAttribute("status", status);
}
public void update(long pBytesRead, long pContentLength, int pItems) {
// TODO Auto-generated method stub
System.out.println("执行了update方法");
FileUploadStatus status = (FileUploadStatus) session.getAttribute("status");
status.setPBytesRead(pBytesRead);
status.setPContentLength(pContentLength);
status.setPItems(pItems);
}
progressServlet 在页面上用ajax调用该方法获取上传文件进度public void doPost(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
FileUploadStatus status = (FileUploadStatus) session.getAttribute("status");
try {
response.reset();
response.getWriter().write("{\"pBytesRead\":"
+status.getPBytesRead()+",\"pContentLength\":"+status.getPContentLength()+"}");
System.out.println("{\"pBytesRead\":"
+status.getPBytesRead()+",\"pContentLength\":"+status.getPContentLength()+"}");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public void doGet(HttpServletRequest request, HttpServletResponse response) {
this.doPost(request,response);

}
uploadServlet 用上来传文件..protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(2048*1024);
myProgressListener getBarListener = new myProgressListener(req);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(getBarListener);
try {
                          //在这里调用upload.parseRequest(req)获取不到文件 List formList = upload.parseRequest(req);
Iterator<Object> formItem = formList.iterator();

while (formItem.hasNext()) {
FileItem item = (FileItem) formItem.next();
if (item.isFormField()) {
System.out.println("Field Name:" + item.getFieldName());
} else {
String fileName = item.getName().substring(item.getName().lastIndexOf("\\")+1);
File file = new File("e:\\temp"
+ "\\" + fileName);
System.out.println("e:\\temp"
+ "\\" + fileName);
OutputStream out = item.getOutputStream();
InputStream in = item.getInputStream();
req.getSession().setAttribute("outPutStream", out);
req.getSession().setAttribute("inPutStream", in);
item.write(file);

}
}
} catch (FileUploadException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}WEB.XML<!-- 定义struts2 Filter -->
<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>/*</url-pattern>
</filter-mapping>
<!-- 设置字符过滤器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.anv.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>charSet</param-name>
<param-value>utf8</param-value>
</init-param>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<servlet-name>upload</servlet-name>
<servlet-class>com.anv.videoFile.uploadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>progressServlet</servlet-name>
<servlet-class>com.anv.videoFile.progressServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/upload.servlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>progressServlet</servlet-name>
<url-pattern>/getBar.servlet</url-pattern>
</servlet-mapping>
3个类单独使用的时候,完全正常.上传进度条等可以实现
当放在带有struts2的工程中使用
List formList = upload.parseRequest(req);
获取不到值..而request中上传文件的值也有.
我想应该是struts2的拦截器的问题.但是自己找了两天 还是找不到解决的方法
希望这里有高人指点一二