运行程序时发生无限循环 [英] Infinite loop occures when run the program

查看:312
本文介绍了运行程序时发生无限循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个Java Web应用程序像无限循环一样运行。谁能告诉我的原因?需要过滤每个请求here.allowed可以使用system.other用户应该去消息登录页面。请帮助我做到这一点。



FilterRequest.java

  package com.mobitel.bankdemo.web; 

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.mobitel.bankdemo.domain.User;

public class FilterRequest implements Filter {
FilterConfig filterConfig = null;
$ b $ public FilterRequest(){
super();

$ b $ public void init(FilterConfig filterConfig)throws ServletException {
this.filterConfig = filterConfig;

$ b $ public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throws ServletException,IOException {
HttpServletRequest request =(HttpServletRequest)req;
HttpServletResponse响应=(HttpServletResponse)resp;
System.out.println(Inside the filter ..............);
HttpSession session = request.getSession(true);
用户u = null;
if(session.getAttribute(loggedUser)!= null){
u =(User)session.getAttribute(loggedUser); (u!= null)
{
System.out.println(user does exit ..+ u.getUname());


chain.doFilter(req,resp);

} else {
String message =Please Login!;
req.setAttribute(loginMsg,message);
response.sendRedirect(login2.jsp);

$ b public void destroy(){
// do cleanup stuff
}
}


web.xml过滤器映射;
< filter-name> FilterRequest< / filter-name>
< filter-class> com.mobitel.bankdemo.web.FilterRequest< / filter-class>
< / filter>
< filter-mapping>
< filter-name> FilterRequest< / filter-name>
< url-pattern> *。jsp< / url-pattern>
< / filter-mapping>

预先感谢您

解决方案

我不是java专家,但只是看看你的代码我只想说两件事情:
$ b

从这里请求的名字

  if(session.getAttribute(loggedUser)!= null){
u =(用户)session.getAttribute(loggedUser); (u!= null)
{
System.out.println(user does exit ..+ u.getUname());


chain.doFilter(req,resp);

它会再次进入子程序或方法来过滤其他的东西,但进入这个方法后,你正在做 user = null 因此,如果我们在

之前进行了整理, / b>

  if(u!= null)
{
System.out.println(user does exit。 。+ u.getUname());
chain.doFilter(req,resp);

所以在你的方法之外定义User u = null。可能会解决你的问题

This java web application run like an infinite loop. can anyone tell me the reason? need to filter every request here.allowed can use the system.other users should go to login page with a message..please help me to do this.

FilterRequest.java

package com.mobitel.bankdemo.web;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.mobitel.bankdemo.domain.User;

public class FilterRequest implements Filter{
    FilterConfig filterConfig = null;

    public FilterRequest() {
        super();
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        System.out.println("Inside the filter.............."  );
          HttpSession session = request.getSession(true);
          User u = null;
          if(session.getAttribute("loggedUser")!=null){
              u = (User) session.getAttribute("loggedUser");
          }       
          if (u!= null)
          {
              System.out.println("user does exits.." + u.getUname() );
              chain.doFilter(req, resp);

          }else{
              String message = "Please Login!";             
              req.setAttribute("loginMsg", message);
              response.sendRedirect("login2.jsp");
          }
    }
    public void destroy() {
        // do cleanup stuff
    }
}

web.xml filter mapping

<filter>
        <filter-name>FilterRequest</filter-name>
        <filter-class>com.mobitel.bankdemo.web.FilterRequest</filter-class>                 
  </filter>
  <filter-mapping>
        <filter-name>FilterRequest</filter-name>
        <url-pattern>*.jsp</url-pattern>
  </filter-mapping> 

Thank you in advance

解决方案

i am not java expert but just looking over your code i just want to say two things

(1) consider if filter gets a user name from request like here

if(session.getAttribute("loggedUser")!=null){
              u = (User) session.getAttribute("loggedUser");
          }       
          if (u!= null)
          {
              System.out.println("user does exits.." + u.getUname() );
              chain.doFilter(req, resp);

it will go again into subroutine or method to filter other things but after getting into this method you are doing user=null and due to this it will again enter into same if we have sorted out before

which is

                if (u!= null)
              {
                  System.out.println("user does exits.." + u.getUname() );
                  chain.doFilter(req, resp);

so define User u=null outside of your method. May be it will solve ur problem

这篇关于运行程序时发生无限循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆