@@ -185,6 +185,15 @@ private static Selector single() {
185185 */
186186 Value flash (@ NonNull String name );
187187
188+ /**
189+ * Get a flash attribute.
190+ *
191+ * @param name Attribute's name.
192+ * @param defaultValue Default's value. Value won't be persisted to flash context.
193+ * @return Flash attribute.
194+ */
195+ Value flash (@ NonNull String name , @ NonNull String defaultValue );
196+
188197 /**
189198 * Find a session or creates a new session.
190199 *
@@ -201,6 +210,16 @@ private static Selector single() {
201210 */
202211 Value session (@ NonNull String name );
203212
213+ /**
214+ * Find a session attribute using the given name. If there is no session or attribute under that
215+ * name a missing value is returned.
216+ *
217+ * @param name Attribute's name.
218+ * @param defaultValue Default's value. Value won't be persisted to session context.
219+ * @return Session's attribute or missing.
220+ */
221+ Value session (@ NonNull String name , @ NonNull String defaultValue );
222+
204223 /**
205224 * Find an existing session.
206225 *
@@ -216,6 +235,15 @@ private static Selector single() {
216235 */
217236 Value cookie (@ NonNull String name );
218237
238+ /**
239+ * Get a cookie matching the given name.
240+ *
241+ * @param name Cookie's name.
242+ * @param defaultValue Default's value. Value won't be persisted to response context.
243+ * @return Cookie value.
244+ */
245+ Value cookie (@ NonNull String name , @ NonNull String defaultValue );
246+
219247 /**
220248 * Request cookies.
221249 *
@@ -366,6 +394,25 @@ default String getContextPath() {
366394 */
367395 Value query (@ NonNull String name );
368396
397+ /**
398+ * Get a query parameter that matches the given name.
399+ *
400+ * <pre>{@code
401+ * {
402+ * get("/search", ctx -> {
403+ * String q = ctx.query("q").value();
404+ * ...
405+ * });
406+ *
407+ * }
408+ * }</pre>
409+ *
410+ * @param name Parameter name.
411+ * @param defaultValue Default value.
412+ * @return A query value.
413+ */
414+ Value query (@ NonNull String name , @ NonNull String defaultValue );
415+
369416 /**
370417 * Query string with the leading <code>?</code> or empty string. This is the raw query string,
371418 * without decoding it.
@@ -417,6 +464,15 @@ default String getContextPath() {
417464 */
418465 Value header (@ NonNull String name );
419466
467+ /**
468+ * Get a header that matches the given name.
469+ *
470+ * @param name Header name. Case insensitive.
471+ * @param defaultValue Default value.
472+ * @return A header value or missing value, never a <code>null</code> reference.
473+ */
474+ Value header (@ NonNull String name , @ NonNull String defaultValue );
475+
420476 /**
421477 * Header as single-value map.
422478 *
0 commit comments