Pessoal, estou fazendo um curso super legal de JSP, que inclusive foi recomendado por um dos usuários aqui do fórum, porém, estou com algumas dúvidas.
Construí algumas classes jsp e alguns beans, e um servletcontroller.
O software deve fazer o seguinte: Receber do cliente usuário as informações relativas a uma determinada tarefa, se ela tem alta, média ou baixa importância e sua descrição. Feito isso, quando o cliente clicar em gravar, deve ser gerando um arquivo .txt que deverá ficar salvo dentro da WEB-INF. A aplicação tem a função de demonstrar o desvio de rota de uma página de erro default para uma página de erro específica criada para ser apresentada ao usuário, no caso de um erro, como por exemplo, a tentativa de escrever este arquivo.txt e ele estar sem permissão de escrita no disco, e caso dentro desse domínio vc tente acessar uma página que não existe, o sistema lhe direcionar para uma página de erro personalizada.
A questão é que eu não sei resolver os problemas que estão ocorrendo, e não sei se são problemas de digitação ou algum outro erro que eu possa estar cometendo ou se o fato de eu estar desenvolvendo no MACOS faz com que algum comportamento de alguns métodos sejam diferentes.
Problemas:
- O arquivo não está sendo gerado e gravado (já procurei por conteúdo e filename pelo SpotLight e nada…)
- Os erros não estão sendo direcionados para as páginas de erro personalizadas (mesmo após configurar o arquivo xml).
Seguem as classes:
Página de erro personalizada:
[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<jsp:include page=“cabecalho.jsp”/>
HTTP 404: Página ou arquivo não encontrado
Ops! O recurso que você tentou acessar não existe ou foi movido.
[/code]Arquivo xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>AppWebTODO</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>ServletController</display-name>
<servlet-name>ServletController</servlet-name>
<servlet-class>controle.ServletController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletController</servlet-name>
<url-pattern>/ServletController</url-pattern>
</servlet-mapping>
<error-page>
<exception-type>404</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/errorIOE.jsp</location>
</error-page>
</web-app>
ServletController:
[code]package controle;
import io.TodoIO;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modelo.Todo;
public class ServletController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.processaRequisicao(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.processaRequisicao(request, response);
}
private void processaRequisicao (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String tarefa = request.getParameter("tarefa");
String prioridade = request.getParameter("prioridade");
String prazo = request.getParameter("prazo");
Todo todo = new Todo();
todo.setTarefa(tarefa);
todo.setPrioridade(prioridade);
todo.setPrazo(prazo);
String arquivo = this.getServletContext().getRealPath("/WEB-INF/todo.txt");
TodoIO io = new TodoIO(arquivo);
io.gravarRegistro(todo);
request.setAttribute("TodoBean", todo);
RequestDispatcher view = request.getRequestDispatcher("sucesso.jsp");
view.forward(request, response);
}
}
[/code]
Classe IO:
[code]package io;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import modelo.Todo;
public class TodoIO {
private static final String DELIMITADOR = “;”;
private File arquivo;
public TodoIO(String arquivo){
this.arquivo = new File(arquivo);
}
public void gravarRegistro(Todo todo) throws IOException{
StringBuffer registro = new StringBuffer();
registro.append(todo.getTarefa());
registro.append(DELIMITADOR);
registro.append(todo.getPrioridade());
registro.append(DELIMITADOR);
registro.append(todo.getPrazo());
PrintWriter out = new PrintWriter(new FileWriter(this.arquivo, true));
out.println(registro.toString());
out.close();
System.out.println("Método executado");
}
}
[/code]