Преобразование в datetime64[D]
:
df.dates.values.astype('M8[D]')
Хотя повторное назначение этого в DataFrame col вернет его обратно к [ns].
Если вы действительно хотите datetime.date
:
dt = pd.DatetimeIndex(df.dates)
dates = np.array([datetime.date(*date_tuple) for date_tuple in zip(dt.year, dt.month, dt.day)])
javax.servlet.Filter
. doFilter()
введите входящий ServletRequest
to HttpServletRequest
. HttpServletRequest#getRequestURI()
, чтобы захватить путь. java.lang.String
, такие как substring()
, split()
, concat()
и т. д., чтобы извлечь часть интереса и составить новый путь. ServletRequest#getRequestDispatcher()
, а затем RequestDispatcher#forward()
, чтобы перенаправить запрос / ответ на новый URL-адрес (перенаправление на стороне сервера , не отражается в адресной строке браузера), или передайте входящий ServletResponse
в HttpServletResponse
, а затем HttpServletResponse#sendRedirect()
, чтобы перенаправить ответ к новому URL-адресу (переадресация на стороне клиента, отображаемая в адресной строке браузера). web.xml
на url-pattern
в /*
или /Check_License/*
, в зависимости от пути контекста, или если вы уже на Servlet 3.0, используйте вместо него @WebFilter
. Не забудьте добавить проверку кода, если для URL необходимо изменить , и если нет t , а затем просто вызовите FilterChain#doFilter()
, иначе он будет вызывать себя в бесконечном цикле.
В качестве альтернативы вы также можете просто использовать существующий сторонний API для выполнения вся работа для вас, такая как UrlRewriteFilter Tuckey , который можно настроить так же, как и с mod_rewrite
Apache.
Простой фильтр JSF Url Prettyfier, основанный на шагах ответа BalusC . Фильтр пересылает все запросы, начинающиеся с пути / ui (предположим, что у вас есть все ваши файлы xhtml, хранящиеся там) по одному и тому же пути, но добавляя суффикс xhtml.
public class UrlPrettyfierFilter implements Filter {
private static final String JSF_VIEW_ROOT_PATH = "/ui";
private static final String JSF_VIEW_SUFFIX = ".xhtml";
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = ((HttpServletRequest) request);
String requestURI = httpServletRequest.getRequestURI();
//Only process the paths starting with /ui, so as other requests get unprocessed.
//You can register the filter itself for /ui/* only, too
if (requestURI.startsWith(JSF_VIEW_ROOT_PATH)
&& !requestURI.contains(JSF_VIEW_SUFFIX)) {
request.getRequestDispatcher(requestURI.concat(JSF_VIEW_SUFFIX))
.forward(request,response);
} else {
chain.doFilter(httpServletRequest, response);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
Обратите внимание, что если ваш исходный URL содержит параметры, то есть http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123 ? param1 = A & amp; param2 = B, то эти параметры также будут перенаправлены на следующий сервлет / jsp. Я не нашел способ избавиться от исходных параметров или заменить их (только с помощью HttpServletRequestWrapper). Любые идеи? ..
Обновление: кажется, что http://ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ решает эту проблему.
Вы можете использовать готовый для использования Url Rewrite Filter с правилом, подобным этому:
<rule>
<from>^/Check_License/Dir_My_App/Dir_ABC/My_Obj_([0-9]+)$</from>
<to>/Check_License?Contact_Id=My_Obj_$1</to>
</rule>
RequestDispatcher#forward()
выполняется, остальные фильтры не будут выполнены. Значит, не лучший способ сделать это как сервлет? – lucasvc 17 January 2014 в 10:32<dispatcher>FORWARD</dispatcher>
для фильтрации отображения. – BalusC 17 January 2014 в 12:23