Как скрыть .jsp расширение в моих URL веб-сервера

Вы используете макет Bootstrap (fluidPage, fluidRow, column), и вся идея такого макета заключается в отзывчивости.

Страница считается шириной 12, и превышение ее элементов приведет к переносу в новые строки. Это предполагаемое поведение Bootstrap.

Одним из способов решения вашей проблемы является использование flexbox .

Решение : (Отказ от ответственности: работает только на Chrome и Firefox)

Я внес два изменения в ваш код:

  1. Изменил column на div с пользовательским классом CSS под названием custom-column.

column(4,x) - div(class = "custom-column", x)})

  1. Добавлен класс flex-nowrap в fluidRow.

fluidRow(class="flex-nowrap", lapply(alld$ui,function(x){div(class = "custom-column", x)}))

С этими изменениями макет работает, как вы и предполагали, в chrome и firefox , но не работает в IE или браузере в RStudio.

Полный код, включая классы CSS flex-nowrap и custom-column:

library(shiny)

ui <- fluidPage(
  fluidRow(
    tags$head(tags$style("
      .flex-nowrap {
        display: inline-flex;
        -webkit-flex-wrap: nowrap !important;
        -ms-flex-wrap: nowrap !important;
        flex-wrap: nowrap !important;
        flex-direction: row;
      }

      .custom-column {
        width: 200px;
        margin: 0px 10px;
      }      
      "
    )),
    actionButton("addCol","Add New Column"),
    div(style="overflow-x: auto;",
        uiOutput("myUI")
    )
  )
)

server <- function(input, output, session) {
  alld <- reactiveValues()
  alld$ui <- list()

  observeEvent(input$addCol,{

    alld$ui[[length(alld$ui)+1]] <- verbatimTextOutput("aaa", placeholder = T)

    output$myUI <- renderUI({
      fluidRow(class="flex-nowrap", lapply(alld$ui,function(x){div(class = "custom-column", x)}))
    })})
}

shinyApp(ui, server)

Выходные данные :

output [ 1116] [тысяча сто тридцать два]

16
задан 20 January 2009 в 06:43
поделиться

6 ответов

Можно создать сервлет, отображающийся как это:

<servlet-mapping>
   <servlet-name>MappingServlet</servlet-name>
   <url-pattern>path/*</url-pattern>
 </servlet-mapping>

Шаблон URL должен быть отредактирован для удовлетворения потребностям. Необходимо, конечно, создать сервлет для отображения URL на фактический jsp. Эта техника используется большинством платформ MVC.

10
ответ дан 30 November 2019 в 21:46
поделиться

UrlRewrite является хорошим гибким основанным на Java независимым от платформы решением.

Это лучше, чем Сервлет, отображающийся в web.xml, потому что это слишком ограничено в том, что можно сделать, и лучше, чем основанное на Apache решение, потому что это - часть веб-приложения, таким образом, Вы не должны помещать Apache перед своим сервером приложений.

5
ответ дан 30 November 2019 в 21:46
поделиться

Отобразите .jsp как сервлет, но используйте <jsp-файл> тег вместо <отображающего URL> тега.

<servlet>
  <servlet-name>myjsp</servlet-name>
  <jsp-file>/myjsp.jsp</jsp-file>
</servlet>
2
ответ дан 30 November 2019 в 21:46
поделиться
RewriteEngine On

RewriteRule ^([0-9a-zA-Z]+)$  $1.jsp

В Вашем .htaccess должен переписать все URL к .jsp. Таким образом, search.jsp просто будет поиском, как Вы описали.

0
ответ дан 30 November 2019 в 21:46
поделиться

Если Вы выбираете Apache, переписывают правило, а не отображение/фильтр сервера приложений (как я сделал), Вы могли бы также хотеть сделать, больше, чем просто ищут "^ ([0-9a-zA-Z] +) $"

Можно хотеть подтвердить, что URL не является каталогом или файлом, который действительно существует, если апач выходит и служит non-jsp ресурсам. И подтвердите, что JSP существует, и сделайте передачу через, а не перенаправьте и добавьте любую возможную строку запроса.

RewriteCond %{REQUEST_URI} !^/.*\.(jsp)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.jsp -f
RewriteRule ^(.+)$ /$1.jsp [PT,QSA,L]

И удостоверяться, что пользователи только видят это через поиск/, не/search.jsp затем, Вы хотите переписать реверс также

RewriteRule ^(.+)\.jsp$ $1 [R=301,QSA,L]
RewriteRule ^(.+)index$ $1 [R=301,QSA,L]

Это - хорошая идея в целях SEO так, чтобы поисковые системы не звенели Вы для дублирования содержания в нескольких URL.

1
ответ дан 30 November 2019 в 21:46
поделиться

Я не эксперт JSP, но я думаю, что можно определить отображения URL в web.xml для обеспечения псевдонимов для сервлетов и jsps.

0
ответ дан 30 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: