以下是各个文件代码及配置:Register.java代码package controller;import java.io.File;
import java.io.IOException;import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;
public class Register extends ActionSupport{

private String username;

private File uploadFile;

private String uploadFileFileName;

@Override
public void validate(){

}

public String getUsername(){
return username;
}

public void setUsername(String username){
this.username=username;
}

public File getUploadFile(){
return uploadFile;
}

public void setUploadFile(File uploadFile){
this.uploadFile=uploadFile;
}

public String getUploadFileFileName(){
return uploadFileFileName;
}

public void setUploadFileFileName(String uploadFileFileName){
this.uploadFileFileName=uploadFileFileName;
}

public String execute() throws IOException {

System.out.println("username的值是:"+username);

String targetDirectory=ServletActionContext.getServletContext().getRealPath("/upload");


File target = new File(targetDirectory,uploadFileFileName);

FileUtils.copyFile(uploadFile,target);

return "register";
}
}struts.xml 配置<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="struts3.1" extends="struts-default" > <action name="register" class="controller.Register">
<result name="register">showregister.jsp</result>
<result name="input">register.jsp</result>
</action>
</package><constant name="struts.ui.theme" value="simple"></constant>
</struts>
register.jsp代码:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   
  <body> 
 
<s:form action="register" method="post" enctpye="multipart/form-data">
username:<s:textfield name="username"></s:textfield>
<br/>
<s:file name="uploadFile"></s:file>
<br/>
<s:submit value="提交"></s:submit>
</s:form>

  </body>
</html>struts.properties文件配置:struts.multipart.maxSize=2048000000
struts.multipart.SaveDir=/temUploadFile
在地址栏输入:http://localhost:8080/struts2.1/register.jsp
浏览器一直处于打开状态,但就是访问不到要访问的jsp页面项目结构如下:

解决方案 »

  1.   

    没有,我上面的url打错了,我访问的地址是:http://localhost:8080/struts2.5/register.jsp
      

  2.   

    已经部署了啊,我用的myeclipse,而且我把jsp代码改为纯粹显示一段文字后,还是该jsp页面还是不能打开
      

  3.   

    现在这个问题是解决了,但是点击提交按钮后,会报错:
    ognl.MethodFailedException: Method "setUploadFile" failed for object controller.Register@804a77
    即提示public void setUploadFile(File uploadFile){
    this.uploadFile=uploadFile;}
    这段代码有问题,但是uploadFile本身就声明为File类型,不知道怎么错了
      

  4.   

    这个问题嘛,其实很简单但是却也很愁人。
    不过要先确定你的file后台是否能打印出其值;再者设置断点后是否进入了控制器。
    如果两者都没有,那么恭喜你,你的struts程序是没有问题的。因为在没有进入控制器之前就出现了问题,
    那问题在哪呢?就是你上传的图片。struts默认上传是2M,如果图片上传的是20M将不会进入控制器进行图片的upload处理。那为什么不报错呢?因为你没有定义拦截器的异常。
      

  5.   

    this.uploadFile是本身的属性,你传参也叫uploadFile,那重复了嘛。
      

  6.   

    this.uploadFile是本身的属性,你传参也叫uploadFile,那重复了嘛。形参跟实参是可以同名的
    网上查了下资料,出现这种问题大概有三种原因:
    1、form表单的method方法设置问题,应该为post;
    2、enctype的设置问题,一般为"multipart/form-data",表示二进制;
    3、Action类的setXXX方法的形参类型问题,这个问题出现得很普遍;
    按照上面三种问题,我居然发现原谅我的enctype写成了enctpye,真冤枉,浪费了好多时间
      

  7.   

    this.uploadFile是本身的属性,你传参也叫uploadFile,那重复了嘛。形参跟实参是可以同名的
    网上查了下资料,出现这种问题大概有三种原因:
    1、form表单的method方法设置问题,应该为post;
    2、enctype的设置问题,一般为"multipart/form-data",表示二进制;
    3、Action类的setXXX方法的形参类型问题,这个问题出现得很普遍;
    按照上面三种问题,我居然发现原谅我的enctype写成了enctpye,真冤枉,浪费了好多时间哈哈,这种时间不冤枉,自己没有好好排错,我当初一个逗号还不是和你一样。不过同名我真不知道,原来还可以这样。