Boa noite,
Tudo bom?
Estou tentando desenvolver um código simples para poder implementar no meu tcc mas estou com alguns problemas e queria ver se alguém poderia me ajudar.
Seguinte… Preciso pegar os dados de um form composto por 3 campos de texto e um de arquivo(os campos de texto serão enviados para o banco e o arquivo para uma pasta). O problema é que se eu retirar a tag Multipart/form-data do cabeçalho do formulário ele envia os campos de texto para o banco de dados sem problemas sem problemas, mas se eu deixar esta tag no formulário aparece este seguinte erro:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
controller.Ctr.processRequest(Ctr.java:37)
controller.Ctr.doPost(Ctr.java:132)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
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/7.0.35 logs.
Segue o código:
index.jsp
[code]<%–
Document : index
Created on : 03/03/2013, 22:36:55
Author : Bruno Cesar
–%>
<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title>JSP Page</title>
</head>
<body>
<form action="Ctr" method="post" enctype="multipart/form-data" >
<label>nome do arquivo</label> <br />
<input name="nome_arquivo" type="text" id="nome_arquivo" /><br />
<label>tipo do arquivo</label><br />
<input name="tipo_arquivo" type="text" id="tipo_arquivo" /><br />
<label>area de atuacao</label><br />
<input name="area_atuacao" type="text" id="area_atuacao" /><br />
<input type="file" name="arquivo">
<input type="hidden" name="acao" value="incluir_usuario">
<input type="submit">
</form>
</body>
</html>
[/code]
Ctr.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controller;
import dao.UsuarioDao;
import info.Info;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
/**
*
* @author Bruno Cesar
*/
public class Ctr extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, FileUploadException {
String acao = request.getParameter("acao");
int retorno;
if (acao.equalsIgnoreCase("incluir_usuario")) {
Info inf = new Info();
String name = request.getParameter("nome_arquivo");
inf.setNome_arquivo(name);
String tipo = request.getParameter("tipo_arquivo");
inf.setTipo_arquivo(tipo);
String area = request.getParameter("area_atuacao");
inf.setArea_atuacao(area);
UsuarioDao dao = new UsuarioDao();
int conectar = dao.conectar();
if (conectar != 1) {
request.setAttribute("erro", "Não conectou ao banco...");
request.getRequestDispatcher("incluirUsuario.jsp").forward(request, response);
}
retorno = dao.arquivar(inf);
if (retorno != 1) {
request.setAttribute("erro", "Erro ao incluir usuário...");
request.getRequestDispatcher("index.jsp").forward(request, response);
} else {
request.getRequestDispatcher("index.jsp").forward(request, response);
}
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload();
// Set upload parameters
upload.setSizeMax(50*1024*1024); //50Mb
upload.setRepositoryPath("c:/apache");
// Parse the request
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (!item.isFormField()){
byte[] arquivo = item.get();
request.setAttribute("content", item.getContentType());
request.setAttribute("size", item.getSize());
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (FileUploadException ex) {
Logger.getLogger(Ctr.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (FileUploadException ex) {
Logger.getLogger(Ctr.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
UsuarioDao.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import info.Info;
import java.sql.*;
/**
*
* @author Bruno Cesar
*/
public class UsuarioDao {
Connection c;
Statement s;
PreparedStatement ps;
ResultSet rs;
String sql;
public UsuarioDao() {
}
public int conectar() {
try {
Class.forName("com.mysql.jdbc.Driver");
c = DriverManager.getConnection("jdbc:mysql://localhost/teste","root", "admin");
return 1;
} catch (ClassNotFoundException cnfe) {
return 2;
} catch (SQLException sqle) {
return 0;
}
}
public int arquivar(Info inf){
sql = "INSERT INTO uploadestudo (nome_arquivo, tipo_arquivo, area_atuacao) VALUES (?,?,?)";
try{
ps = c.prepareStatement(sql);
ps.setString(1,inf.getNome_arquivo());
ps.setString(2,inf.getTipo_arquivo());
ps.setString(3,inf.getArea_atuacao());
ps.executeUpdate();
return 1;
} catch (SQLException sqle) {
return 0;
}
}
}
info.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package info;
/**
*
* @author Bruno Cesar
*/
public class Info implements java.io.Serializable {
private String nome_arquivo;
private String tipo_arquivo;
private String area_atuacao;
public Info(){
}
public String getNome_arquivo(){
return nome_arquivo;
}
public String getTipo_arquivo(){
return tipo_arquivo;
}
public String getArea_atuacao(){
return area_atuacao;
}
public void setNome_arquivo(String nome_arquivo){
this.nome_arquivo = nome_arquivo;
}
public void setTipo_arquivo(String tipo_arquivo){
this.tipo_arquivo = tipo_arquivo;
}
public void setArea_atuacao(String area_atuacao){
this.area_atuacao = area_atuacao;
}
}
Alguém poderia me dar uma luz sobre o que pode ser isso?
Muito obrigado e agradeço desde já!