【问题标题】:How to convert web.xml to @WebServlet?如何将 web.xml 转换为 @WebServlet?
【发布时间】:2018-10-07 11:11:52
【问题描述】:

我有一个带有 servlet 3.1 的 Web 应用程序,并且有一个没有 @WebFilter 注释的 servlet 过滤器,并且它工作正常。

我想用@WebServlet 注释替换它,但使用相同的旧过滤器而不创建新过滤器类并在旧过滤器类中使用@WebFilter。下面是我的 web.xml 文件。

<web-app version="3.1"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
  <display-name>Archetype Created Web Application</display-name>
    <filter>
        <display-name>User Auth Filter</display-name>
        <filter-name>UserAuthFilter</filter-name>
        <filter-class>com.example.UserAuthFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>checkUser</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>doValidate</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
   <filter-mapping>
        <filter-name>UserAuthFilter</filter-name>
        <url-pattern>/usercount</url-pattern>
    </filter-mapping>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Services</web-resource-name>
            <url-pattern>/usercount</url-pattern>
            <http-method>GET</http-method>
        </web-resource-collection>
    </security-constraint>
    <deny-uncovered-http-methods/>
</web-app>

我尝试用下面的 servlet 替换它。

package com.example;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet
@WebFilter(displayName = "User Auth Filter",
        filterName = "UserAuthFilter",
        value = "com.example.UserAuthFilter",
        asyncSupported = true,
        initParams = {
                @WebInitParam(name = "checkUser",value = "true"),
                @WebInitParam(name = "doValidate",value = "true")
        })
public class NotificationWebsocketServlet {
    public NotificationWebsocketServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
}

我没有找到过滤器映射和安全约束的任何注释。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: jakarta-ee websphere servlet-filters weblogic12c servlet-3.1


    【解决方案1】:

    对于@WebFilter,您应该能够使用 urlPatterns 属性进行过滤器映射。此外,您应该能够将@ServletSecurity 注释用于您的安全约束。

    【讨论】:

    • 感谢@Paul,过滤器名称的值是否正确,因为 servlet 过滤器类(com.example.UserAuthFilter)?
    • @WebFilter 注释实际上应该在作为过滤器的类上。 “values”或“urlPatterns”属性可用于映射。 Oracle 有一些很好的 EE 技术教程:docs.oracle.com/javaee/7/tutorial/servlets006.htm
    猜你喜欢
    • 2016-09-08
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多