Использование подкласса GuiceServletContextListener аналогично примеру из проекта Guice здесь и web.xml здесь .
Я обнаружил, что index.jsp веб-приложения никогда не доступен при просмотре в корне (например, localhost: 8080). Это правильно, учитывая конфигурацию web.xml :
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
(см. web.xml ниже)
Возможно, вы заметили отсутствие суффикса .jsp для файла index.jsp . Это связано с ограничениями безопасности, добавленными в web.xml в соответствии с рекомендациями документации Struts2 здесь . Если суффикс добавлен или список файлов приветствия пропущен, ограничение безопасности вступит в силу.
Итак, мне пришлось настроить Struts2 (как это выглядит) и каким-то странным образом заставить приложение работать:
<action name=""/>
(см. struts.xml ниже)
Вопросы
Корректна ли конфигурация Struts2? Или я должен настраивать Struts2 по-другому? Если да, то что?
Любая помощь с благодарностью получена.
Настройка
- Java 8
- Tomcat 9
- Распорки 2.5.20
- Guice 4.2.2
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_3_0.xsd" version="3.0">
<display-name>PVS Web Application</display-name>
<listener>
<listener-class>org.veary.pvs.web.guice.GuiceListener</listener-class>
</listener>
<filter>
<filter-name>guice</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guice</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>No direct JSP access</display-name>
<web-resource-collection>
<web-resource-name>No-JSP</web-resource-name>
<url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>no-users</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>Don't assign users to this role</description>
<role-name>no-users</role-name>
</security-role>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"https://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<constant name="struts.ui.theme" value="simple" />
<package name="pvs-base" namespace="/" extends="struts-default">
<interceptors>
<interceptor-stack name="pvsDefault">
<interceptor-ref name="validationWorkflowStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="pvsDefault" />
<global-results>
<result>/themes/default/layout.jsp</result>
</global-results>
<action name=""/>
</package>
</struts>