Struts: Problemas com inicialização

0 respostas
Rafael_Afonso

Olá:

Estou criando uma aplicação com Struts. Minha intenção é quando acesso esta aplicação seja mostrada a página order.jsp, que é a indicada pela action SolicitarAction. Esta página deve exibir certos parâmetros que foram passados pelo servlet (como “mk” e “intec”). Ao invés do ActionServlet, estou uma sub-classe desta, ActionServletBomi, que apenas sobrepõe o método init().
O arquivo web.xml é o seguinte:

<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<web-app>
  <context-param> 
    <param-name>conf</param-name> 
    <param-value>C:/java/Tomcat 4.1/webapps/bomi/WEB-INF/conf/</param-value>
    <description>Localizacao do diretorio de configuracao</description>
  </context-param> 

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>bomi.servlet.ActionServletBomi</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>consulta.do</welcome-file>
  </welcome-file-list>

  <!-- Definição dos Taglibs -->

</web-app>

O ActionServletBomi.java é o seguinte:

package bomi.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;

import org.apache.struts.action.ActionServlet;

import bomi.util.Contexto;

public class ActionServletBomi extends ActionServlet {

  public ActionServletBomi() {
    super();
  }

  public void init(ServletConfig conf) throws ServletException {
    super.init(conf);
    Contexto.getInstance().setPath(
      conf.getServletContext().getInitParameter("conf"));
  }

}

O struts-config.xml é este:

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
    <action-mappings>
    <action path="/consulta" unknown="false" type="bomi.servlet.SolicitarAction">
    	<forward name="consulta" path="/order.jsp" redirect="false" />
    </action>
    <!-- Outras Actions -->
  </action-mappings>
</struts-config>

O arquivo SolicitarAction.java, onde passo constantes como atributos:

package bomi.servlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import bomi.bean.*;
import bomi.util.*;

public class SolicitarAction extends Action {

  public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
    req.setAttribute("individual", ObjetoConsultaNota.INDIVIDUAL);
    req.setAttribute("intervalo", ObjetoConsultaNota.INTERVALO);
        
    req.getSession().setAttribute("MK", Order.MK);
    req.getSession().setAttribute("INTEC", Order.INTEC);

    return map.findForward("consulta");
  }

}

E um trecho de order.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
  <!-- -->
  <BODY bgColor=#ffffff text=#000000>
  <!-- -->
  <input type="checkbox" name="<c:out value='${MK}'/>" checked='true'><c:out value='${MK}'/>
  <!-- -->
</BODY>
</HTML>

Agora os problemas:
:frowning: Quando digito http://localhost:8080/bomi/, aparece a listagem de arquivos do diretório raiz da aplicação.
:frowning: Se eu digitar http://localhost:8080/bomi/consulta.do é exibida uma mensagem de erro:

sendo que em lugar nenhum da stack Trace é mencionada minha classe derivada de ActionServlet.
:frowning: Se eu digitar http://localhost:8080/bomi/order.jsp a página é exibida sem aparecer os parâmetros passados (como o checkbox mencionado acima).
:frowning: Se eu alterar web.xml para que o welcome-file seja order.jsp e depois digito http://localhost:8080/bomi/ no meu browser obtenho a seguinte mensagem de erro:

:?: Então, alguém tem alguma idéia de como proceder? Esta é minha primeira aplicação de Struts “para valer” e provavelmente devo estar pisando em ovos. Só que não sei que ovos são esses :? !

Grato,

Criado 13 de outubro de 2003
Respostas 0
Participantes 1