Как установить динамически url Pattern = & ldquo; / user_NS & rdquo; в Java-сервлете? [dубликат]

Я сделал следующее, чтобы заставить его работать (конфигурация USB HL2240D)

Загрузить драйвер из этой ссылки Откройте окно терминала и перейдите к команде «Тип загрузки»: gunzip linux-brprinter-installer-2.1.1-1.gz Команда типа: sudo sh linux-brprinter-installer-2.1.1-1
Input model name ->
HL2240D
-e 
-e You are going to install following packages.
-e    hl2240dlpr-2.1.1-1.i386.deb
-e    cupswrapperHL2240D-2.0.4-2.i386.deb
-e -n OK? [y/N] ->
y
-e 
............................
............................
is License.
=========================================
-e 
-e -n Do you agree? [Y/n] ->
y
............................
............................
-e -n Will you specify the Device URI? [Y/n] ->
n
-e 
-e -n Test Print? [y/N] ->
y
-e 
wait 5s.
lpr -P HL2240D /usr/share/cups/data/testprint
-e -n Hit Enter/Return key.

, а затем он был установлен успешно и работает нормально.

25
задан 21 January 2015 в 17:00

5 ответов

Как указывали другие, спецификация сервлета не допускает таких шаблонов; однако, вы можете рассмотреть JAX-RS, который разрешает такие шаблоны, если это подходит для вашего случая использования.

@Path("/xyz/{value}/test")
public class User { 

    public String doSomething(@PathParam("value") final String value) { ... }

}

Или:

@Path("/xyz/{value}")
public class User { 

    @Path("test")
    public String doTest(@PathParam("value") final String value) { ... }

}

(Связано с: JAX-RS .)

7
ответ дан 15 August 2018 в 16:45

Он поддерживает отображение этого URL-адреса; но не предлагает никакой проверки.

В вашем веб-xml вы могли бы сделать это ....

/xyz/*

Но это не гарантирует, что конечный test присутствует и что это последний элемент. Если вы ищете что-то более сложное, вы должны попробовать urlrewritefilter.

http://code.google.com/p/urlrewritefilter/

3
ответ дан 15 August 2018 в 16:45

Как указано выше, базовые сервлеты не поддерживают шаблоны, как вы указали в своем вопросе. Spring MVC поддерживает шаблоны. Вот ссылка на соответствующий раздел в справочном документе Spring.

0
ответ дан 15 August 2018 в 16:45

Вы не должны делать это в web.xml, а можете указать каждый запрос на свой фильтр (Patternfilter) и можете проверить URL

package com.inventwheel.filter;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/**
 * Servlet Filter implementation class PatternFilter
 */
@WebFilter("/*")
public class PatternFilter implements Filter {

    /**
     * Default constructor. 
     */
    public PatternFilter() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            String servletPath = ((HttpServletRequest)request).getServletPath();
            String requestURI = ((HttpServletRequest)request).getRequestURI();
            Pattern pattern = Pattern.compile(".*"+servletPath+"/(.*)");
            Matcher matcher = pattern.matcher(requestURI);
            if (matcher.matches())
            {
            String param = matcher.group(1);
            // do stuff with param here..
            }

        chain.doFilter(request, response);
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        // TODO Auto-generated method stub
    }

}
0
ответ дан 15 August 2018 в 16:45

Вы можете использовать эту библиотеку: http://zerh.github.io/ServletIO/, чтобы вы могли конвертировать ваши сервлеты в контроллеры MVC и использовать довольно URL-адреса

-2
ответ дан 15 August 2018 в 16:45
  • 1
    Основываясь на домене / URL-адресе вашей ссылки (-ов), которая совпадает с вашим именем пользователя или содержит ваше имя пользователя, вы, похоже, связаны с вашим собственным сайтом. Если вы это сделаете, вы должны сообщить, что это ваш сайт . Если вы не раскрываете, что это ваш собственный сайт, он часто считается спамом. См.: [D1] Что означает «Хорошо». самоопределение? и Как не спамер . – Makyen 6 October 2017 в 09:06
  • 2
    Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки , чтобы у ваших коллег было некоторое представление о том, что это такое и почему оно есть. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. Учитывайте, что не более чем ссылка на внешний сайт ] является возможной причиной . Почему и как удаляются некоторые ответы? . – Makyen 6 October 2017 в 09:07

Другие вопросы по тегам:

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