当前位置: 首页 > 面试题库 >

在Filter bean类中使用一些bean?

常永怡
2023-03-14
问题内容

在我的filter bean类中,我添加了一些bean依赖关系(带有@Autowired注释)。但是在该方法doFilter(),我所有的依赖项bean都为null。

public class FacebookOAuth implements Filter
{
@Autowired
private BusinessLogger logger;

@Autowired
private IUserSessionInfo userSessionInfo;

@Autowired
private FacebookOAuthHelper oAuthHelper;

public void init(FilterConfig fc) throws ServletException
{
    // Nothing to do
}

public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc) throws   IOException, ServletException
{
    // HttpServletRequest req = (HttpServletRequest)sr;
    HttpServletResponse res = (HttpServletResponse) sr1;

    String code = sr.getParameter("code");

    if (StringUtil.isNotBlankStr(code))
    {
        String authURL = this.oAuthHelper.getAuthURL(code);

this.oAuthHelper等于null(和其他依赖项bean)…

你可以帮帮我吗 ?

实际上,我不在服务器端(Spring)上使用MVC概念。对于我的副客户端,我使用Flex技术,并且BlazeDS servlet吨与服务器通信。

因此,这就是原因,我使用了Filter bean的概念。

因此,如何在Filter bean中处理会话bean的概念?

Skaffman,

我实现了你的想法,因此我使用以下命令更新了application.xml:

<bean id="FacebookOAuthHandler" class="com.xx.FacebookOAuthHandler" />
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
    <props>
       <prop key="/fbauth">FacebookOAuthHandler</prop>         
    </props>
   </property>
</bean>

和我的FacebookOAuthHandler类:

public class FacebookOAuthHandler extends AbstractController
{
@Autowired
private BusinessLogger logger;

@Autowired
private IUserSessionInfo userSessionInfo;

@Autowired
private FacebookOAuthHelper oAuthHelper;

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    // TODO

    return null;
}

但是,当我的URL为:http://xx.xx.xx.xx/MyApp/fbauth时,永远不会调用此方法handleRequestInternal


问题答案:

我遇到了同样的问题,我的第一个想法是手动强制Spring将@Autowired注释应用于此处建议的过滤器

但是我不喜欢在Java类中对bean名称进行硬编码的想法。

我发现了一种更有效的方法:

public void init(FilterConfig filterConfig) throws ServletException {
    SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
            filterConfig.getServletContext());
}


 类似资料:
  • 我想使用java代码编辑以下首选项 Eclipse首选项通用工作区文本文件编码-Others-UTF-8 我需要有一个方法,调整4件事时,它被调用,所以我想调整上面的首选项使用java而不是manualyy...我怎么能这样做?

  • 我需要包括一些必须在许多tmpls中重复的php代码。我怎么能做到这一点,可能是因为类包括?我怎么能写PHP文件与我的类在一个正确的方式?换句话说,我需要像 视图/类别/胎压监测/默认值。php 视图/文章/TPM/默认值。php 我的班级。php ... 更新:@Guilherme谢谢你!所以现在看起来 文件/mytemplate/html/com\u content/article/defau

  • 我安装了来自Oracle的Java SE8U25 JDK(64位),其中应该包括JavaFX。 我试图复制本教程中的代码:http://docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm 当尝试使用时,Eclipse显示“无法解析类型javafx.scene.control.Control。在尝试创建对象时也会出

  • 我真的希望有人能帮我弄清楚我到底错过了什么。我已经将我的安装从PHP5.6升级到7.0,这迫使我从Mysql更新到Mysqli。由于某种原因,我的安装被破坏了。 我研究并遵循了“在其他类使用MySQLi”指南:在其他类使用MySQLi 我写作为最后的手段,也看了其他网站,但似乎问题来自其他地方。 首先,我有一个数据库类: 然后我有一个API类,我想在其中访问这个连接,它看起来像 最后我试着从一个函

  • 我刚开始使用Java,到处搜索,但无论出于何种原因都无法找到解决方案。我的问题对我来说似乎很简单:我在同一个文件夹中有两个类,该文件夹是我的包,为了说明: 我需要在第2类中创建第1类的实例,但它就是不起作用。这是一个示例: 文件路径: 文件路径: 我得到这个错误 根据要求,完整的源代码:注:class1=ClientIndividual,class2=涉众 第一个文件 第二个文件 第三个文件(接口

  • 我使用protobuf3来表示数据,虽然我们需要hbase来存储数据,但hbase似乎依赖于protobuf2。 当我编写以下行来创建我们的hbase表时 然后我得到了一个例外: