Est-il possible d'ajouter dans les paramètres de la requête (HttpServletRequest)
Je veux intercepter une requête dans un filtre/servlet et ajouter un peu de paramètres pour cela. Toutefois, la demande n'est pas d'exposer une "setParameter" méthode " et le paramètre de la carte lors des manipulations renvoie une erreur indiquant qu'il est verrouillé. Est-il une autre solution que je peux essayer?
OriginalL'auteur Vivek Kodira | 2008-10-10
Vous devez vous connecter pour publier un commentaire.
Sous-classe
HttpServletRequestWrapper
et remplacer legetParameter
méthodes. La description de cette classe se lit comme suit:Dans le filtre, enveloppez-la demande d'une instance de votre sous-classe.
Pouvez-vous me donner un exemple?
public class CustomHttpServletRequestWrapper s'étend HttpServletRequestWrapper { private Map<String, String> customParameters; public CustomHttpServletRequestWrapper(HttpServletRequest request) { super(demande); } public void addCustomParameter(String name, String value) { customParameters.mettre(nom, valeur); } @Override public String getParameter(String nom) { String originalParameter = super.getParameter(nom); if (originalParameter != null) { return originalParameter; } else { return customParameters.get(nom); } } }
OriginalL'auteur Bruno De Fraine
Je ussualy envelopper l'original HttpServletRequest dans une nouvelle CustomHttpServletRequest qui agit comme un proxy de la demande d'origine et ensuite passer cette nouvelle CustomHttpServletRequest de la chaîne de filtrage.
Dans ce CustomHttpServletRequest vous pouvez annuler la getParameterNames, getParameter, getParameterMap méthodes de revenir les paramètres de votre choix.
C'est un exemple de filtre:
OriginalL'auteur Panagiotis Korros
D'abord, vous devez recevoir la demande et de lire tous ses paramètres.
Puis de construire une autre demande avec les paramètres de l'original + la de nouveaux et de les envoyer à nouveau.
Le HttpServletRequest est immuable et il n'y a aucun moyen de le changer.
OriginalL'auteur m_pGladiator
Vous pouvez envelopper HttpServletRequest dans de nouveaux HttpServletRequestWrapper objet et de remplacer certaines méthodes.
Le code suivant est à partir de http://www.ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ .
D'ajouter le paramètre de filtre:
OriginalL'auteur kolobok
Pourquoi ne pas simplement stocker des variables, comme la Demande de la portée des attributs au lieu d'essayer de les ajouter aux paramètres de la requête?
OriginalL'auteur bpapa
Sinon, vous pouvez utiliser la méthode setAttribute() qui est fortement typé. Par conséquent, la getAttribute() méthode peut être utilisée ...
OriginalL'auteur