2011-05-20 12 views
5

Estoy usando Spring 3 y no sé cómo asignar somepage.htm a somepage.jsp sin un controlador. Es decir: si voy a somepage.htm, quiero que me muestre el jsp. Pero, por supuesto, sin redirección. Me dontw quiero que nadie vea ".jsp" sólo ".htm"Spring 3: map page.html to page.jsp

<servlet> 
    <servlet-name>Training01</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Training01</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<bean id="viewResolver" 
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
<property name="prefix"> 
    <value>/jsp/</value> 
</property> 
<property name="suffix"> 
    <value>.jsp</value> 
</property> 

Respuesta

5

La forma de hacerlo es utilizar la etiqueta <mvc:view-controller..> en combinación con una vista del resolver.

Ver here para obtener más documentación:

Los mapas de etiquetas <mvc:view-controller..> URLs a puntos de vista. Así que si desea asignar la dirección URL relativa a una vista /login nombres de usuario que lo haría al añadir la siguiente línea al archivo que webmvc-context.xml:

<mvc:view-controller path="/login" view-name="login" /> 

Por supuesto, para conseguir que esto funcione usted tiene que tener una ver resolución - algo que asigna nombres lógicos a vistas específicas - configuración en su contexto. En su caso dado que está utilizando JSP rectas para ver la capa que usted quiere añadir algo como esto a su configuración:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/WEB-INF/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

Así que con esta configuración si hubiera un login.jsp JSP que se encuentra en el directorio /WEB-INF/jsp entonces sería capaz de hacer referencia directa que JSP desde la url www.myapp.com/mycontenxtroot/login

Ver here para algunos más información sobre resolución de vista:

+0

Ah, sí, el enfoque de "añadir más XML". ;) – Anonymoose

+0

Sí, la primavera y el xml van juntos como la mantequilla de maní y el chocolate. –

0

que podría estar interesado en UrlRewriteFilter. Este es el enfoque que recomendaría. Si realmente quieres las URL limpias, es probable que las necesites en algún momento.

Por otro lado, si se trata de un hecho aislado, un controlador mínimo podría ser más fácil:

@Controller 
public class Somepage { 
    @RequestMapping("/somepage") 
    public String handler() { 
     return "somepage.jsp"; 
    } 
}