Я действительно ломаю голову над Struts2 - я могу получить доступ к страницам JSP, пропустив часть пути. Обратите внимание на путь, который предполагается включить pages/welcome_user.jsp. Ключ - смотреть на слово pages в пути.

Вот файл 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>

    <package name="default" namespace="/User" extends="struts-default">
        <action name="Login">
            <result>pages/login.jsp</result>
        </action>
        <action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction">
            <result name="SUCCESS">pages/welcome_user.jsp</result>
        </action>
    </package>
</struts>

Я могу получить доступ к login.jsp через: http://localhost/Struts2Example/User/Login
и welcome_user.jsp через: http://localhost/Struts2Example/User/Welcome
Обратите внимание, что в обоих URL я могу опустить pages, почему?

Источник: http://www.mkyong.com/misc/how-to- use-mkyong-tutorial /

Может ли кто-нибудь пройти через вышеприведенное руководство и сказать мне, что не так?

2
user3769040 19 Авг 2014 в 05:21
Ничего страшного. Вы должны получать доступ к страницам через действия, а не напрямую.
 – 
Aleksandr M
19 Авг 2014 в 12:16
Вы не «получаете доступ к страницам JSP», вы обращаетесь к действиям, которые используют JSP в качестве своих результатов. Точно так же вы можете получить доступ к сервлету, который пересылает JSP-файл или передает файл обратно из файловой системы - с точки зрения клиента это просто URL-адрес.
 – 
Dave Newton
19 Авг 2014 в 16:03

1 ответ

Лучший ответ

Во-первых, вы использовали URL-адреса, которые сопоставлены действиям в struts.xml.

Метод действия выполняется и возвращает код результата SUCCESS. Этот результат вы можете найти в файле config. Затем выполняется результат, если тип результата не установлен, по умолчанию используется dispatcher, и запрос перенаправляется в место, указанное в конфигурации результата.

Если местоположение является относительным, окончательное абсолютное местоположение будет определяться пространством имен пакета, используемого для этого действия.

Более подробный пример использования пространств имен и объяснение вы можете найти в примере Пример и объяснение конфигурации пространства имен Struts 2.

Вы не можете отбрасывать страницы, если используете результат dispatcher, который пересылается в JSP. В этом случае URL-адрес был переписан, и вы не можете увидеть конечный URL-адрес.

1
Roman C 31 Мар 2016 в 18:05
1
Единственное, что помогло мне разобраться в моей проблеме, это то, что я перешел по ссылке, предоставленной Романом С .: mkyong.com/struts2/… Очень полезно, и теперь я это понимаю. Спасибо.
 – 
user3769040
20 Авг 2014 в 02:51