Foros del Web » Programación para mayores de 30 ;) » Java »

servlet y Struts 2

Estas en el tema de servlet y Struts 2 en el foro de Java en Foros del Web. Saludos acabo de empezar a programar con struts 2 y queria añadirle un servlet para que desde una página JSP se le mande un dato ...
  #1 (permalink)  
Antiguo 21/07/2011, 01:28
Avatar de atapuerkasman  
Fecha de Ingreso: febrero-2011
Mensajes: 76
Antigüedad: 13 años, 2 meses
Puntos: 2
servlet y Struts 2

Saludos acabo de empezar a programar con struts 2 y queria añadirle un servlet para que desde una página JSP se le mande un dato mediante el metodo get y el servlet haga un acceso a la BD y devuelva ciertos resultados a otra pagina jsp.

el problema que tengo es que creo el servelt y modifico el archivo web.xml

Código:
<?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/j2ee" xmlns:javaee="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/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_9" version="2.4">
  
  
  <filter>
 <filter-name>struts2</filter-name>
 
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
 <servlet-name>servletTasksList</servlet-name>
 <servlet-class>com.nebusens.web.servletTasksList</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>servletTasksList</servlet-name>
 <url-pattern>/servlet</url-pattern>
</servlet-mapping>

 

  <welcome-file-list>
    <welcome-file>/jsp/login.jsp</welcome-file>
  </welcome-file-list>
</web-app>
Este es el servlet que creo:

Código:
@WebServlet("/servletTasksList")
public class servletTasksList extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public servletTasksList() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	    PrintWriter out = response.getWriter();

	    out.println("Hello, world!");
	    out.close();

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

y este el error que me muestra:
Código:
There is no Action mapped for namespace / and action name servlet. - [unknown location]
	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
	at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
	at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
  #2 (permalink)  
Antiguo 21/07/2011, 02:56
Avatar de atapuerkasman  
Fecha de Ingreso: febrero-2011
Mensajes: 76
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: servlet y Struts 2

creo que he encontrado de donde puede venir el problema.

Tengo configurado un filtro que pasa todo por struts2 y configuro el servlet asi:

Código:
<filter>
 <filter-name>struts2</filter-name>
 
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
 <servlet-name>testServlet</servlet-name>
 <servlet-class>mypackage.web.servlets.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>testServlet</servlet-name>
 <url-pattern>/test</url-pattern>

El problema me viene que todo pasa por struts y no llega al servlet, he probado ha poner que <url-pattern>/carpeta_para_struts/*</url-pattern>

y el servlet: <url-pattern>/test</utl-pattern>

funciona el servlet perfectamente pero struct da error.

no se puede de alguna manera decirle en el web.xml.... quiero que todas las urls se encargue struts MENOS la url del sevlet

Si alguien puede contextarme sería de mucha ayuda. gracias
  #3 (permalink)  
Antiguo 21/07/2011, 13:01
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: servlet y Struts 2

Creo que deberías leer un poco sobre struts2.

No tiene sentido lo que estás haciendo.

Has puesto un filtro con * por lo que cualquier llamada recibida se considera como llamada a un action de struts, y como no has configurado ninguno pues da error.

O bien cambias el filtro para que Struts solo atienda a unas url en concreto (típico es usar *.do), o utilizas las action, que sería lo lógico ya que para algo estás usando Struts2.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 22/07/2011, 00:37
Avatar de atapuerkasman  
Fecha de Ingreso: febrero-2011
Mensajes: 76
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: servlet y Struts 2

Ya imaginaba que el problema era algo así, lo que he hecho es dejar al struts con /*,
y en el archivo struts.xml añadir una excepción para que la url del servlet pase al servlet.

Código:
<constant name="struts.action.excludePattern" value="/servlet"/>
  #5 (permalink)  
Antiguo 25/07/2011, 07:23
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: servlet y Struts 2

Creo que no tienes muy claro el funcionamiento de los action en Struts 2 (veo q no los utilizas), a mi al principio tb me costó un poquillo pillarles el punto. Te recomiendo que le eches un vistazo a este tutorial, a mi me ayudo bastante.

http://www.vaannila.com/struts-2/str...-tutorial.html

En el que veras de manera general un poquito del funcionamieto de este Framework.

Un saludo
  #6 (permalink)  
Antiguo 26/07/2011, 00:14
Avatar de atapuerkasman  
Fecha de Ingreso: febrero-2011
Mensajes: 76
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: servlet y Struts 2

Si entiendo los action, el problema que tengo es que en este caso mi aplicación tenia que usar un servlet, ya que era muchisimo más fácil hacerlo que con un Action. Muchas gracias por aclararme las dudas sobre el tema.

Etiquetas: jsp, jsp-servlets, login, servlet, struts, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:28.