2010-03-24 30 views
15

Quiero establecer uno de los archivos jsp en mi carpeta jsps como vista predeterminada para la aplicación. ¿Hay alguna manera de que podamos decir en <welcome-file-list> que abc.jsp debe ser predeterminado y se puede encontrar en tal y tal ruta. Además, el patrón de URL es html, por lo que hay una forma de asignarlo en Spring MVC.Configuración de la vista jsp predeterminada con spring mvc

Por ejemplo - Cuando un usuario escribe www.example.com, que desea que la aplicación directa a abc.jsp página y también cuando alguien escribe www.example.com/something, incluso entonces la aplicación se puede desviar hacia abc.jsp, pero el patrón de URL no debería ser comprometida.

Respuesta

33

Añadir

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

al archivo de configuración. Entonces la ROOT se resolverá en la vista abc. A continuación, agregue

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

al archivo de configuración. Esto resolverá la vista a /WEB-INF/view/abc.jsp.

+0

Gracias Rondd. Estoy tratando de usar la solución que mencionaste. Supongo que esto está en el archivo de configuración de seguridad de primavera ¿verdad? – Walker

+0

no, esa es una nueva configuración con la primavera 3.0. debe ir en sus archivos de configuración de primavera. –

+0

Quiero utilizar este enfoque, pero no sé cuáles son los archivos de configuración de primavera. ¿Es ese el 'app-servlet.xml'? – user2785929

16

Por ejemplo - Cuando un usuario escribe www.example.com, que desea que la aplicación directa a la página abc.jsp

configurarlo como un <welcome-file> en el web.xml Al igual que sigue:

<welcome-file-list> 
    <welcome-file>/abc.jsp</welcome-file> 
</welcome-file-list> 

y también cuando alguien escribe www.example.com/something, incluso entonces la aplicación debe dir ect a abc.jsp, pero el patrón de url no debe verse comprometido.

En otras palabras, desea reenviar los recursos no existentes (que de este modo se traduciría en una página HTTP 404 Not Found error) en el mismo archivo? A continuación, definirlo como un <error-page> en el web.xml así:

<error-page> 
    <error-code>404</error-code> 
    <location>/abc.jsp</location> 
</error-page> 

Pero su pregunta es en realidad un poco ambigua. Si realmente no quería decir lo anterior y en realidad desea utilizar /abc.jsp como el "controlador de página", entonces usted necesita para definirla como una <servlet> en web.xml lugar:

<servlet> 
    <servlet-name>controller</servlet-name> 
    <jsp-file>/abc.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>controller</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

(tanto el <welcome-file> y la <error-page> está no es necesario aquí)

Sin embargo, esto es una falla en el diseño de MVC (que utiliza una vista como controlador). Pero si en realidad estás preguntando por ella ..

+0

Gracias BalusC. Ese era el mecanismo que estaba buscando. Gracias de nuevo. – Walker

+0

Probé <-file-list de bienvenida> /abc.jsp pero este hotel no dispone iniciar el frijol asociado en servlet-contexto .xml y el uso de /abc.html en welcome-file-list, ¿tampoco ayuda – Walker

+0

'abc.html'? Necesitas JSP aquí. HTML no sabe nada sobre '' y ese tipo de cosas :) – BalusC

2

Resuelto -

un archivo de la lista de archivos de bienvenida tiene que haber un archivo real, por lo tanto, abc.htm no funcionó. La única manera de lograr era crear un index.jsp y redirigirlo usando

<jsp:forward page="abc.html" /> 

también en yourapplication-servlet.XML es necesario especificar el mapeo de frijol como

<bean name="/abc.html" class="package.mypack.someController"> 
    <property name="commandClass" value="package.mypack..something"/> 
    <property name="formView" value="abc"/> 
    <property name="successView" value="abc.htm"/> 
</bean> 

Una bienvenida de archivo debe ser un archivo real en el sistema de archivos no funciona con direcciones URL asignadas. Puede crear un index.jsp que redirija a la url mapeada, pero tiene que ser un archivo real. Nada que ver con la primavera se indica en la especificación del servlet que tiene que ser así, aunque el comportamiento puede variar en los diferentes servidores de aplicaciones, en general tiene que ser un archivo real.

espero que esto ayuda a alguien

+2

Sí, tienes razón. Menos o mas. Sin embargo, no necesariamente tiene que apuntar a ese archivo. Solo ' /abc.html 'y un archivo ** vacío **' abc.html' habrían funcionado tan bien. – BalusC

+0

Esto me ayudó con mi problema. @Walker Nunca se llamará a su redirección. Acabo de utilizar la técnica de archivo vacío que mencionó BalusC, que Spring redirige antes de que llegue a su archivo físico. –

0

Esta todo comportamiento se puede resolver mediante la adición de

<mvc:default-servlet-handler> 

a su primavera ../WEB-INF/dispatcher-servlet.xml
Este se encargará de todo para usted.

Cuestiones relacionadas