由网页输入返回的对象的java类型
我试图将一个文件上传到jsp中,然后在其他代码中使用该文件。我的问题是,它通过请求作为对象进入servlet。getAttribute()调用,因此我不知道将其转换为什么
到目前为止,我有这段代码来尝试测试它是什么,但是我得到了一个NullPointerException
测试。jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Input Test</title>
</head>
<body>
<form action="InputServlet" method="POST">
<input type="file" name="file1">
<input type="submit" value="submit">
</form>
</body>
</html>
inputservlet。爪哇
public class InputServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(request.getAttribute("file1").getClass());
}
}
我对正在发生的事情的理解是有缺陷的还是我只是把它编错了
另外,我希望类型是Object,所以如果有人知道我也应该将其转换为什么,这也会非常有用
# 1 楼答案
它可能是空的,因为它涉及一个全新的、不同的
request
。您可能向servlet发送了重定向而不是转发无论如何,您不应该在JSP文件中处理文件上载,而应该在真正的servlet类中处理文件上载。因为它是一种视图技术,所以它会带来麻烦
另请参见:
更新:根据您的代码更新,这将不起作用。您需要将表单的
enctype
设置为multipart/form-data
,并使用Commons FileUpload在servlet中处理它。另请参见给定的链接至此,3.0之前的Servlet API不支持
multipart/form-data
编码,并且request.getParameter()
和consorts不支持输入值。这里使用request.getAttribute()
是一种误解。这不是给你的。您需要根据RFC2388自己解析request.getInputStream()
。然而,您希望使用ApacheCommonsFileUpload来实现这一点,而不是多年来重新发明和维护一个轮子。ApacheCommons已经为您做了,好好利用它吧如果您已经在Servlet 3.0(Glassfish v3)上,那么可以使用内置的^{} 来收集项目。大多数servletcontainers都会在引擎盖下使用Commons FileUpload,只有在
/WEB-INF/lib
或导入中看不到它,如果由于某种原因而使您感到不安的话另请参见: