如何解决出现错误页面,上周上传了文件,但我没有做任何更改
|| 这是我的JSF / HTML页面<?xml version=\'1.0\' encoding=\'UTF-8\' ?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\"
xmlns:ui=\"http://java.sun.com/jsf/facelets\"
xmlns:f=\"http://java.sun.com/jsf/core\"
xmlns:h=\"http://java.sun.com/jsf/html\"
xmlns:c=\"http://java.sun.com/jsp/jstl/core\">
<body>
<ui:composition template=\"./templates/template.xhtml\">
<ui:define name=\"content\">
<c:choose>
<c:when test=\"#{controls.designAuth}\">
Welcome Report Designer!<br /><br />
<div id=\"fileUpload\">
<form name=\"myForm\" action=\"../UploadServlet\" enctype=\"multipart/form-data\" method=\"POST\">
<b>Make sure your filename is meaningful (eg. WasteByMachineReport.jrxml)</b><br /><br />
Please specify a file:<input type=\"file\" name=\"file\" size=\"40\"/><br /><br />
Number of parameters: <select name=\"numSelect\" id=\'numSelect\' onchange=\"draw_param_dropdowns();\">
<option selected=\"selected\" >0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
</select><br />
<br /><br />
<table border=\"0\">
<tr style=\"background-color:#dddddd;color:black;\"><td><span id =\"tabletitles\" style =\"display: none;\">Parameter Name</span></td><td><span width=\"200\" id =\"tabletitles2\" style =\"display: none;\">Data Type</span></td></tr>
<tr style=\"background-color:#dddddd;color:black;\"><td>
<input type=\"text\" name=\"P1\" id=\"P1\" style=\"display:none;\"></input></td><td><select id=\"Ptype1\" name=\"Ptype1\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr>
<tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P2\" id=\"P2\" style=\"display:none;\"></input></td><td><select id=\"Ptype2\" name=\"Ptype2\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr> <tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P3\" id=\"P3\" style=\"display:none;\"></input></td><td><select id=\"Ptype3\" name=\"Ptype3\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P4\" id=\"P4\" style=\"display:none;\"></input></td><td><select id=\"Ptype4\" name=\"Ptype4\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P5\" id=\"P5\" style=\"display:none;\"></input></td><td><select id=\"Ptype5\" name=\"Ptype5\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P6\" id=\"P6\" style=\"display:none;\"></input></td><td><select id=\"Ptype6\" name=\"Ptype6\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr> <tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P7\" id=\"P7\" style=\"display:none;\"></input> </td><td><select id=\"Ptype7\" name=\"Ptype7\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P8\" id=\"P8\" style=\"display:none;\"></input></td><td><select id=\"Ptype8\" name=\"Ptype8\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P9\" id=\"P9\" style=\"display:none;\"></input></td><td><select id=\"Ptype9\" name=\"Ptype9\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P10\" id=\"P10\" style=\"display:none;\"></input></td><td> <select id=\"Ptype10\" name=\"Ptype10\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P11\" id=\"P11\" style=\"display:none;\"></input></td><td> <select id=\"Ptype11\" name=\"Ptype11\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P12\" id=\"P12\" style=\"display:none;\"></input> </td><td><select id=\"Ptype12\" name=\"Ptype12\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td><input type=\"text\" name=\"P13\" id=\"P13\" style=\"display:none;\"></input> </td><td><select id=\"Ptype13\" name=\"Ptype13\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P14\" id=\"P14\" style=\"display:none;\"></input></td><td><select id=\"Ptype14\" name=\"Ptype14\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr><tr style=\"background-color:#dddddd;color:black;\"><td> <input type=\"text\" name=\"P15\" id=\"P15\" style=\"display:none;\"></input></td><td><select id=\"Ptype15\" name=\"Ptype15\" style=\"display:none;\">
<option>Date</option>
<option>String</option>
<option>Number</option></select>
</td></tr></table>
<script type=\"text/javascript\" language=\"Javascript\">
function draw_param_dropdowns(){
for (var x = 1; x <= 15; x++) {
document.getElementById(\'Ptype\' + x).style.display=\'none\';
document.getElementById(\'P\' + x).style.display=\'none\';
document.getElementById(\"tabletitles\").style.display = \'none\';
document.getElementById(\"tabletitles2\").style.display = \'none\';
}
if (document.getElementById(\"numSelect\").selectedindex >=1)
{document.getElementById(\"tabletitles\").style.display = \'block\';
document.getElementById(\"tabletitles2\").style.display = \'block\';}
for (var y = 1; y <= document.getElementById(\"numSelect\").selectedindex; y++) {
document.getElementById(\'Ptype\' + y).style.display = \'block\';
document.getElementById(\'P\' + y).style.display = \'block\';
}
}
</script>
<input type=\"submit\" value=\"Upload\"/>
</form>
</div>
</c:when>
<c:otherwise>
Not Authorized
</c:otherwise>
</c:choose>
</ui:define>
</ui:composition>
</body>
这是一个Java Servlet,就像我所说的一周左右上传文件一样
/*\\_________________________________________________
* To change this template,choose Tools | Templates
* and open the template in the editor.
\\*///-----------------------------------------------
package DBFunctions;
// Import required java libraries
import java.io.*;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.servletexception;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.diskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.output.*;
public class UploadServlet extends HttpServlet {
private boolean isMultipart;
private String filePath;
private int maxFileSize = 200 * 1024;
private int maxMemSize = 4 * 1024;
private File file ;
private String name;
private String reportTitle;
@Override
public void init(){
// Get the file location where it would be stored.
filePath = \"c:\\\\Projects\\\\WebApplication8\\\\web\\\\uploads\\\\\";
}
@Override
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws servletexception,java.io.IOException {
// Check that we have a file upload request
isMultipart = ServletFileUpload.isMultipartContent(request);
request.getParameter(null);
response.setContentType(\"text/html\");
java.io.PrintWriter out = response.getWriter( );
if( !isMultipart ){
out.println(\"<html>\");
out.println(\"<head>\");
out.println(\"<title>Servlet upload</title>\");
out.println(\"</head>\");
out.println(\"<body>\");
out.println(\"<p>No file uploaded</p>\");
out.println(\"</body>\");
out.println(\"</html>\");
return;
}
diskFileItemFactory factory = new diskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File(\"c:\\\\temp\"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try{
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
out.println(\"<html>\");
out.println(\"<head>\");
out.println(\"<title>Servlet Upload</title>\");
out.println(\"</head>\");
out.println(\"<body><div style=\'position:absolute;width:500px;height:700px;left:35%;background-color:#d2d2d2;\'><center><br /><br /><br /><br /><br />\");
//out.println(filePath);
while ( i.hasNext () )
{
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () )
{
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// Write the file
name = fileName;
if( fileName.lastIndexOf(\"\\\\\") >= 0 ){
file = new File( filePath +
fileName.substring( fileName.lastIndexOf(\"\\\\\")));
}else{
file = new File( filePath +
fileName.substring(fileName.lastIndexOf(\"\\\\\")+1));
}
fi.write( file );
out.println(\"<br /><br />Uploaded Filename: \" + fileName + \"<br>\");
}
}
out.println(\"<br /><br /><a href=\'/WebApplication8/faces/it.xhtml\'>Add New File to / Edit Menu Tree</a><br /><br /><br />\");
out.println(\"<a href=\'/WebApplication8/faces/designer.xhtml\'>Back</a></center></div>\");
//-------------------------------------------------------------------------
// String params =request.getParameter(\"numParams\");
//
//
// int numParams = Integer.parseInt(params);
//
// out.println(numParams);
DBConnect db = new DBConnect();
boolean result = db.DBConnectAndUpdate(\"INSERT INTO PLANT.APPLIC VALUES (9999,\'\" + name + \"\',\'R\',\'\" + \"\',\'eng\')\");
//-------------------------------------------------------------------------
out.println(\"</body>\");
out.println(\"</html>\");
}catch(Exception ex) {
System.out.println(ex.getMessage());
}
}
@Override
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws servletexception,java.io.IOException {
throw new servletexception(\"GET method used with \" +
getClass( ).getName( )+\": POST method required.\");
}
}
这是错误
我查看了该错误,并查看了整个servlet中是否缺少分号或愚蠢的东西,但是自上次运行以来,我并未进行任何字面上的更改
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
java.util.Hashtable.get(Hashtable.java:334)
org.apache.tomcat.util.http.Parameters.getParameterValues(Parameters.java:195)
org.apache.tomcat.util.http.Parameters.getParameter(Parameters.java:240)
org.apache.catalina.connector.Request.getParameter(Request.java:1066)
org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
org.netbeans.modules.web.monitor.server.MonitorRequestWrapper.getParameter(MonitorRequestWrapper.java:199)
DBFunctions.UploadServlet.doPost(UploadServlet.java:54)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
解决方法
从您的servlet代码中:
request.getParameter(null);
调用此方法的几个步骤将调用java.util.Hashtable.get(null),这将引发NPE。这是预期的行为,请参见java.util.Hashtable.get(Object),因为Hashtable不允许将null作为键。这正是Stacktrace告诉您的。如果以前可以使用,则代码必须进行某种更改,因为此行将始终失败,并且几周或几个月前也将失败。 (首先,这没有太大意义)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。