Mapeamento Struts 2

Olá pessoal, estou tentando aprender usar o Struts 2, mais já estou com um problema logo no inicio no mapeamento dele dentro do web.xml, já segui varios tutoriais ensinando como fazer mais sempre da o mesmo erro, estou adicionando ao web.xml as linhas abaixo conforme este exemplo http://struts.apache.org/2.0.6/docs/webxml.html

<filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
        	<param-name>actionPackages</param-name>
        	<param-value>com.mycompany.myapp.actions</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Já adicionei os jars necessários, mas dá esse erro estranho, alguém tem uma ídeia do que pode ser?

FAIL - Application at context path /SiteClass could not be started
C:\Users\caltech\Documents\NetbeansProjects\SiteClass\nbproject\build-impl.xml:753: 
O módulo não foi implementado.
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:187)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
	at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:390)
	at org.apache.tools.ant.Target.performTasks(Target.java:411)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:154)
FALHA NA CONSTRUÇÃO (tempo total: 33 segundos)

Dê uma olhada nesse tutorial, acho que vai te ajudar.

Flw! :thumbup:

Olá.

Amigo, que versão você está usando? Família 2.0.x ou 2.1.x ou 2.2.x?
É que da 2.1.x em diante recomenda-se usar outra classe como Filtro, no caso seria a org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter ao invés da org.apache.struts2.dispatcher.FilterDispatcher.

Quanto a esse erro ai, é o famoso “erro genérico” do Netbeans (“O módulo não foi implementado.”). Procure outras abas de saída de em alguma delas há o erro realmente.

von.juliano eu segui seu tutorial, mais deu o mesmo problema, então jyoshiriro vi aqui agora na aba de log do apache da o seguinte erro:

Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/C:/Users/caltech/Documents/NetbeansProjects/SiteClass/build/web/WEB-INF/lib/struts2-core-2.2.3.jar!/struts-default.xml:29:72
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:208)
	at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131)
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
	at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean - jar:file:/C:/Users/caltech/Documents/NetbeansProjects/SiteClass/build/web/WEB-INF/lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72 - bean - jar:file:/C:/Users/caltech/Documents/NetbeansProjects/SiteClass/build/web/WEB-INF/lib/struts2-core-2.2.3.jar!/struts-default.xml:29:72
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:193)
	... 19 more

Pela mensagem é o clássico erro de haver duplicidade de bibliotecas. Faz um “limpar e construir” no projeto e/ou verifica se não há mais de uma biblioteca do struts2 configurada para o projeto.

Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by beanIsso acontece porque você tem algum jar duplicado no seu classpath. Verifique, e coloque apenas os jars que são falados no tutorial, se você colocar todos os que vem ao baixar o struts, você terá mais problemas.

Flw! :thumbup:

Inicialmente eu realmente tinha adicionado todos os jars, mais depois removi, e fui usando os que era pedido nos tutorias, agora eu removi tudo denovo e só adicionei os do seu tutorial von.juliano a unica coisa que muda é as versões, eu baxei a ultima versão do site é a 2.2.3, fiz o Limpar e Construir para zerar tudo, mais ainda dá o mesmo, vou baixar a mesma versão usada no seu tutorial von.juliano vamos ver no que dá.

Me lembrei agora eu tinha colado todos os jars do struts dentro da pasta lib do tomCat por isso estava sendo dublicado, deletei e blz, aquele erro se resolveu, só que, agora deu outro problema

Grave: Exception starting filter struts2
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:198)
	at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:180)
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:380)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:424)
	at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
	... 20 more

O problema agora é que falta o jar commons-lang da apache.

Agora foi, obrigado pela ajuda von.juliano e jyoshiriro

Abraço.

von.juliano não estava querendo encher o saco de novo, mais ta foda, eta negocio complicado viu, não estou conseguindo listar as cidades do meu banco, eu não estou usando DAO, apenas Hibernate.

O primeiro problema é que a JSP não reconhece essa taglib <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %> e nem o <c:forEach, mais eu removi essas tags só para ver se o problema era esse, mas não é sempre dá a mensagem de erro abaixo, não consigo resolver já entrei em varios sites mais não vai, nada resolve, nao sei o que estou fazendo errado:

[code]HTTP Status 404 - There is no Action mapped for namespace /cidade and action name lista.

type Status report

message There is no Action mapped for namespace /cidade and action name lista.

description The requested resource (There is no Action mapped for namespace /cidade and action name lista.) is not available.
Apache Tomcat/7.0.14[/code]

Minha Action

[code]package action;

import hibernate.HibernateUtil;
import hibernate.entity.Cidades;
import java.util.List;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.hibernate.Session;
import outros.ManipularHQL;

@Namespace(value = “/cidade”)
public class ClientesAction {

Session sessao;

private List<Cidades> listaCidades;

private Cidades cidade;

public ClientesAction() {
    cidade = new Cidades();
}

@Action(value = "lista", results = @Result(name = "ok", location = "/lista.jsp"))
public String lista() {
    sessao = HibernateUtil.getSessionFactory().openSession();
    String hql = "from Cidades order by cidDescricao";
    listaCidades = ManipularHQL.executeHQLQuery(hql,sessao);
    return "ok";
}

public List<Cidades> getCidades() {
    return listaCidades;
}

public Cidades getCidade() {
    return cidade;
}

public void setCidade(Cidades cid) {
    this.cidade = cid;
}

}[/code]

E o JSP

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>

Tela Cadastro

Lista de carros

    </table>
    <br>
    <h5><a href="novo">Novo</a></h5>
</body>
[/code]
Id Nome