- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 article尝试在现有的最小 Dropwizard 项目之上添加一层基本审核功能。
本文还包含关联的 repository .
gradle.build在该存储库中,除了核心 DW 之外,似乎没有任何额外的依赖项:
dependencies {
compile(
'io.dropwizard:dropwizard-core:' + dropwizardVersion
)
testCompile(
'junit:junit:4.11',
'org.hamcrest:hamcrest-core:1.3',
'org.mockito:mockito-all:1.9.5',
'org.unitils:unitils-core:3.4.2'
)
}
我的构建是在 Maven 中,并且似乎包含等效的依赖项列表:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-bom</artifactId>
<version>${dropwizard.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
</dependency>
</dependencies>
当我尝试构建与 this 等效的内容时,无法识别 RequestDispatcher/HttpContext 的导入。 :
IntelliJ IDEA 似乎可以识别类路径上的这些:
但是需要的是对 com.sun.jersey.api.core.HttpContext
instead 的引用.
有人可以指出我这里可能缺少哪些额外的 jar 文件,或者可能是一些对 DW 之上审计功能的工作演示的引用。
提前谢谢您。
最佳答案
那篇文章使用的是较旧的 Dropwizard 版本,当时它仍在使用 Jersey 1.x。由于您使用的是 2.x 的较新版本,因此现在的方法是使用 ContainerRequestFilter
。您可以通过注入(inject)ResourceInfo
来获取资源信息。在 Jersey 1.x 中,使用了 RequestDispatcher
,因为当时有 ResourceInfo
这样的东西,所以这是一种获取资源类和资源方法的方法。
@Provider
public class AuditRequestFilter implements ContainerRequestFilter {
@Context
private ResourceInfo info;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
Class<?> resourceClass = info.getResourceClass();
Method resourceMethod = info.getResourceMethod();
}
}
只需使用 Dropwizard 注册过滤器即可
env.jersey().register(AuditRequestFilter.class);
再次查看您链接到的代码,最好使用ContainerResponseFilter
,因为您想在审核之前检查状态代码。另外,要获取远程地址,您可以注入(inject)HttpServletRequest
。您还可以从 UriInfo
@Provider
public class AuditRequestFilter implements ContainerResponseFilter {
@Context
private HttpServletRequest request;
@Context
private ResourceInfo info;
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) throws IOException {
int status = responseContext.getStatus();
String remoteAddr = request.getRemoteAddr();
UriInfo uriInfo = requestContext.getUriInfo();
Class<?> resourceClass = info.getResourceClass();
Method resourceMethod = info.getResourceMethod();
}
}
另请参阅:
关于java - 在 Dropwizard 中启用 Jersey RequestDispatcher 需要哪些 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638067/
我观察到虽然 RequestDispatcher.forward(request, response) 可以抛出 IllegalStateException(如果响应已提交),但 RequestDis
我已经阅读了很多类似的问题并尝试了所有建议的方法来解决问题,但是没有成功。现在我真的不知道如何处理这个 (localhost:8080/testWebApp/home): HTTP Status 50
使用 servletContext 而不是使用 request 来获取 requestDispatcher 有什么好处? servletContext.getRequestDispatcher(dis
处理RequestDispatcher时和资源路径,是主要基于 构建的路径元素?即使资源位于不同的包中 例如:我在 servlet 下定义了: /handlers/FrontHandler 以及
当我们使用请求调度程序方法 forward 将请求从一个 servlet 转发到另一个 servlet 时,以便另一个 servlet 生成响应,或者当我们希望另一个 servlet 的响应返回到一个
String fn=request.getParameter("fn"); request.setAttribute("eno",eno); RequestDispatcher rd = reques
我有这个搜索表单。 String search = request.getParameter("search"); if (search != null) {
我在 2 个桌面上安装了 2 个 apache tomee。第一个在 Windows 7 上,第二个在 Windows 8 上。当我部署我的应用程序(带有业务组件)时,发生了一些奇怪的事情。 我在我的
在 servlet 中,我们可以使用 requestdispatcher,它将从 servlet 转发到 servlet 或 html 文件。但是我在其余服务中尝试了这个 requestdispatc
我在学习 RequestDispatcher 时正在编写一些基本代码。我知道当调用 rd.forward() 时,控制(和响应处理)被转发到路径中命名的资源——在本例中是另一个 servlet。但是,
我正在尝试创建一个 HttpServlet,它将所有传入请求按原样转发到在不同域上运行的另一个 serlvet。 如何做到这一点? RequestDispatcher 的 forward() 仅在同一
如何在同一工作空间中将 RequestDispatcher 用于外部网络应用 在第一个网络应用程序中,我是这样使用它的 RequestDispatcher rd =request.getReques
在变量 search_for 中,我得到了我正在搜索的值的字符串值。但我无法通过 RequestDispatcher 将其传递给 jsp。我做错了什么? RequestDispatcher rd =
我正在使用 JAVA Servlet 开发网络应用程序。我正在尝试制作一个登录表单,我只想让用户设置用户名和密码,如果有效,则打开 mainPage.html代码运行时没有错误或异常,但是当此函数运行
我在 jsp 中遇到重定向问题,页面仍然存在并且不会抛出任何错误。 当我直接在 login.jsp 中编写脚本时,我可以进行重定向,例如 .......... 但是,当我将文件分成三个并包含它时
我正在使用 /* 将所有请求映射到一个 sevlet,我在其中完成所有身份验证工作。但我想跳过一些静态内容(如 css 文件)。所以我尝试从该 sevlet 到资源文件所在的位置 if(isResou
使用 RequestDispatcher 的主要目的是什么,例如当它在 Filter 中执行时,如下例所示: public void doFilter(ServletRequest request,
我有以下代码: RequestDispatcher dispatcher = request.getRequestDispatcher(viewName); // while viewName is
我正在阅读的所有在线引用资料和 head first JSP&Servlet 书都说明了 RequestDispatcher 和 Redirect(即 resoponse.sendRedirect()
如果我有一个 servlet,我可以毫无问题地转发到 WebContent 文件夹中的 jsp: request.getRequestDispatcher("page.jsp").forward(re
我是一名优秀的程序员,十分优秀!