2013-08-16 57 views
0

我正在使用org.apache.commas.*,,org.apache.commas.fileupload.servlet.*用于在JSP程序中上传文件的包,并且没有必要使用Struts,而且它工作得很好,数据很容易处理,但是当我将Struts 2核心库添加到我的web项目使用MyEclipse 8.5它不工作,没有找到字段。可能是该程序与upload.parseRequest。 坦率地说,我无法理解的问题,所以我分享我的计划太为什么没有找到字段

AddCategory.jsp

<html> 
<head> 
    <meta http-equiv="refresh" content="30"> 
</head> 

<script type="text/javascript"> 
    function blank() { 


    if (document.cate.cat.value == "Enter New Category") { 
     alert(" Category must not be blanked !!!"); 
     document.cate.cat.focus(); 
     return false; 
    } 
    else if (!document.getElementById("file1").value) { 
     alert("No file selected"); 
     return false; 
    } 
    else { 
     return true; 
    } 
    } 

</script> 
<form name="cate" action="CategoryAdded.jsp" method="post" enctype="multipart/form-data" onsubmit="return blank()"> 
    <table width="100%" border="0"> 
    <tr> 
     <th colspan="2" scope="col"> 
     <div align="center">Create New Category</div> 
     </th> 
    </tr> 
    <tr> 
     <td width="50%"> 
     <div align="right">Enter New Category:</div> 
     </td> 
     <td width="50%"> 
     <input name="cat" type="text" id="cat" value="Enter New Category" 
       onFocus="if(this.value== 'Enter New Category'){ this.value='' ; this.style.background='white';}" 
       onBlur="if(this.value==''){this.value='Enter New Category'; this.style.background='lightyellow'}"> 
     </td> 
    </tr> 

    <tr> 
     <td width="50%"> 
     <div align="right">Upload photo:</div> 
     </td> 
     <td width="50%"><input name="file1" type="file" id="file1"></td> 
    </tr> 


    <tr> 
     <td colspan="2"> 
     <div align="center"> 
      <input type="submit" name="Submit" value="Add Category"> 
     </div> 
     </td> 
    </tr> 
    </table> 
</form> 
</html> 

CategoryAdded.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> 
<%@page import="java.io.*" %> 
<%@ page language="java" errorPage="" %> 
<%@ page import="java.sql.*" %> 
<%@ page import="org.apache.commons.io.*" %> 
<%@page import="java.util.Iterator,java.util.List" %> 
<%@page import="org.apache.commons.*,org.apache.commons.fileupload.disk.*,org.apache.commons.fileupload.servlet.*" %> 
<%@ page import="java.util.*" %> 
<%@page import="org.apache.commons.fileupload.FileItemFactory" %> 
<%@page import="org.apache.commons.fileupload.FileItem" %> 
<%@page import="org.apache.commons.fileupload.FileUploadException" %> 
<%@page import="p1.DBInfo" %> 
<%@page import="p1.Identy" %> 
<% 
    String path = request.getContextPath(); 
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; 
%> 
<html> 
<% 
    String pname = ""; 
    Identy id = new Identy(); 
    String cod = id.code(); 

    boolean isMultipartContent = ServletFileUpload.isMultipartContent(request); 
    if (!isMultipartContent) { 
    System.out.println("No multipart found"); 
    return; 
    } 


    FileItemFactory factory = new DiskFileItemFactory(); 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    try { 
    List<FileItem> fields = upload.parseRequest(request); 
    Iterator<FileItem> it = fields.iterator(); 

    if (!it.hasNext()) { 
     System.out.println("No fields  found"); 
     return; 
    } 


    DBInfo obj = new DBInfo(); 
    Connection cn = obj.getConn(); 
    PreparedStatement ps = cn.prepareStatement("insert into category values(?,?,?)"); 

    while (it.hasNext()) { 

     FileItem fileItem = it.next(); 

     if (fileItem.getFieldName().equals("cat")) { 
     pname = fileItem.getString(); 
     System.out.println("category name is " + pname); 
     } 

     boolean isFormField = fileItem.isFormField(); 

     if (!isFormField) { 
     String s = fileItem.getName().substring(fileItem.getName().lastIndexOf("\\") + 1); 

     fileItem.write(new File("D:\\Practice\\ShoppingCart\\WebRoot\\images\\" + s)); 
     System.out.println(s); 
     fileItem.getOutputStream().close(); 

     ps.setString(3, "D:\\Practice\\ShoppingCart\\WebRoot\\images\\" + s); 
     } 
    } 

    ps.setString(1, pname); 
    ps.setString(2, pname + cod); 

    int i = ps.executeUpdate(); 

    if (i == 1) { 
%> 
<head> 


    <script type="text/javascript"> 
    function myFunction() { 


     var r = confirm("New Category Added Successfully!!!\nIf you Want to Add more New Category then Press Ok!!!"); 
     if (r == true) { 

     window.location = "AddCategory.jsp"; 


     } 
     else { 
     window.location = "Tryy.jsp"; 
     } 

    } 
    </script> 


</head> 

<body onload="myFunction()"> 
</body> 

<% 
    } 
    cn.close(); 

    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
%> 
</html> 
+1

我无法理解你的问题。什么领域没有被发现。错误是什么,你期望会发生什么? – gerrytan

+0

当你使用Struts2时,为什么你在JSP中做这个文件上传逻辑,我建议让struts2为你处理这个透明的问题。而且你甚至在JSP中进行了DB操作,这个操作正在破坏使用任何MVC框架的全部目的。 –

+0

但我不知道struts 2这么多.....以及如何使用文件上传使用struts ...基本上如何做文件上传与struts 2 – user2685033

回答

0

的最好的事情就是重写用于删除scriptlet并将业务逻辑移至动作类的JSP。

您也可以使用Struts2 <s:if><s:else>标签有条件地呈现内容。

commons-fileUpload是在Struts2中上传文件的默认实现,为了正确使用它,你可以运行一个Struts2项目例如struts-2-upload-multiple-files-example

+0

如果我想使用文件上传使用jsp(因为我不不知道如何使用struts 2对于像我这样的新手来说非常复杂),那么我可以通过简单的方式来上传文件 – user2685033

相关问题