今天碰到一个冷僻的需求,需要在Filter里增加request的parameter,类似于
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
...
req.setParameter(paramName, paramValue);
chain.doFilter(req, resp);
}
可是发现ServletRequest可以get/set Attribute但是对Paramter只能get,后来google了半天才
明白,按照j2ee的标准,Paramter是只读的,Attribute才可以读写,要想添加Parameter必须通
过ServletRequestWrapper。具体的做法是,继承ServletRequestWrapper实现自己的类,然后
重载getParameter方法,在其中加入新的Parameter,最后在doFilter中传递自己的RequestWrapper。
以下是相关的代码,是用的HttpServletRequestWrapper。代码是删减过的,只是表示个意思。
public class MyFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
...
FilteredRequest filteredReq = new FilteredRequest(slingReq);
filteredReq.setLabel(label);
filteredReq.setDestName(destName);
chain.doFilter(filteredReq, resp);
}
public void init(FilterConfig conf) throws ServletException {
}
class FilteredRequest extends HttpServletRequestWrapper {
private String label;
private String destName;
public FilteredRequest(HttpServletRequest request) {
super(request);
}
public void setLabel(String id) {
label = id;
}
public void setDestName(String id) {
destName = id;
}
public String getParameter(String paramName) {
if ("label".equals(paramName)) {
return label;
} else if ("destName".equals(paramName)) {
return destName;
} else {
return super.getParameter(paramName);
}
}
}
}
分享到:
相关推荐
- 在传统的Java Web项目中,通常将`javax.servlet.jar`和`javax.servlet.jsp.jar`添加到项目的类路径中,这可以通过在`WEB-INF/lib`目录下放置这两个jar包实现。 - 使用Maven或Gradle等构建工具时,可以在pom.xml...
javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
javax.servlet JAR包,解决找不到 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; jar包问题
赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
在Java编程环境中,`javax.servlet.jar` 是一个非常重要的库,它包含了Servlet和JSP(JavaServer Pages)的核心API,是开发Web应用程序的基础组件。这个包由Java EE(Enterprise Edition)标准提供,允许开发者创建...
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...
赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...
在Java Web开发中,`javax.servlet.jar`和`javax.servlet.jsp.jar`是两个非常重要的库文件,它们分别提供了Servlet和JSP(JavaServer Pages)的核心API。这两个库是开发基于Java的Web应用程序不可或缺的部分,特别是...
开发者可以通过实现`javax.servlet.Filter`接口来创建过滤器,并通过`web.xml`部署描述符配置过滤规则。 Listener则是在特定事件发生时被调用的类,比如session创建、销毁或请求初始化等。它们通过实现不同的监听器...
因此,"javax.servlet.jar"和"javax.servlet.jsp.jar"这两个JAR文件在EJB中是默认不包含的,需要单独引入。这两个库是Java Servlet和JavaServer Pages(JSP)技术的基础,对于构建基于Java的Web应用程序至关重要。 ...
在IT行业中,尤其是在Java Web开发领域,`javax.servlet-api`和`javax.el`库是至关重要的组件。这些库主要用于实现Servlet规范和表达式语言(EL)功能,它们为开发人员提供了与服务器交互以及处理HTTP请求的能力。...
在实际开发中,将javax.servlet.jar和javax.servlet.jsp.jar添加到项目的类路径中,就可以编写和运行Servlet和JSP应用程序了。 为了确保Servlet和JSP的正常工作,还需要一个Servlet容器,如Tomcat。容器负责加载...
在Java服务器页面(JSP)技术中,`javax.servlet.jsp.tagext`包是核心组件之一,它提供了用于创建自定义标签库(Tag Libraries)的接口和类。自定义标签是JSP的一种强大特性,允许开发者将复杂的逻辑封装到可重用的...
javax.servlet.jsp_2.0.0.v201101211617.jar,javax.,servlet,jsp
下地址https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.1.0/ 各个版本都有 javax.servlet-api-3.1.0-sources.jar
文件中包含javax.servlet-api-3.0.1.jar,javax.servlet-api-3.1.0.jar,javax.servlet-api-4.0.0.jar,用来处理java项目运行中找不到servlet JAR的问题,需要的朋友可以下载