Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Struts 2: фильтр за запросы к урлам вида ...*.jsp


Автор: MaxPayneC 3.7.2009, 22:20
Требуется сделать так, чтобы на запросы к любым jsp напрямую стратс выдавал некий экшн, назовем его дефолтным, а жсп использовались только как резалт стратсового экшна.

Мой web.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <filter>
        <filter-name>struts2</filter-name>
        <!--<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
        <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>
</web-app>


struts.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!--TODO: Если получится, сделать так чтобы находил пакет struts-default, если нет - забить.-->
    <package name="com.vc.graduates" extends="struts-default">
        <action name="RegistrationForm">
            <result>/Registration/Registration.jsp</result>
        </action>
        <action name="RegisterGraduate" class="com.vc.graduates.actions.RegisterGraduate">
            <result name="input">/Registration/Registration.jsp</result>
            <result name="error">/Registration/Registration.jsp</result>
            <result>/Registration/Success.jsp</result>
        </action>
        <action name="LoginForm">
            <result>/Login.jsp</result>
        </action>
        <action name="Login" class="com.vc.graduates.actions.Login">
            <result name="input">/Login.jsp</result>
            <result name="error">/Login.jsp</result>
            <result>/index.jsp</result>
        </action>
        <action name="Logout" class="com.vc.graduates.actions.Logout">
            <result>/index.jsp</result>
        </action>
<!--тут идут остальные экшны, не очень интересно-->
    </package>
</struts>

Автор: MisterCleric 6.7.2009, 09:24
Код

<default-action-ref name="..."/>


Не пробовал?

Автор: MaxPayneC 6.7.2009, 11:01
Пробовал:
Код

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!--TODO: Если получится, сделать так чтобы находил пакет struts-default, если нет - забить.-->
    <package name="com.vc.graduates" extends="struts-default">
        <default-action-ref name="ShowGraduate" />


жсп при непосредственном запросе из браузера возвращается.

Автор: MisterCleric 6.7.2009, 11:30
Так, кажись я начинаю просыпаться и рулить, чего же тебе надо.
В общем я бы:
1. Написал фильтр, который поставил бы перед стратсовским.
2. Это фильтр проверял бы УРИ на присутствие суфикса ".jsp" и редиректил бы на твой желаемый action "по-умолчанию"
Да вроде й все.  smile 

Автор: MaxPayneC 6.7.2009, 13:26
В общем да, но загвоздка в том, что я не знаю как это сделать smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)