登录过滤器的问题,输入分类管理和图书管理的地址可以直接访问,新建分量或者图书点提交就返回了登录界面

登录过滤器的问题,输入分类管理和图书管理的地址可以直接访问,新建分量或者图书点提交就返回了登录界面

package com.imooc.filter;


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 com.imooc.user.User;


public class JspFilter implements Filter {


@Override

public void destroy() {

// TODO Auto-generated method stub

}


@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest req=(HttpServletRequest)request;

HttpServletResponse res=(HttpServletResponse)response;

String user=(String)req.getSession().getAttribute("ex");

String uri=req.getRequestURI();

String[] urls= {"/KaptchaServlet","/LoginServlet",".js",".css",".ico",".jpg",".png"};

boolean flag=false;

for(String str:urls) {

if(uri.indexOf(str)!=-1) {

flag=true;

break;

}

}

if(flag||user!=null) {

chain.doFilter(request, response);

return;

}else {

res.sendRedirect(req.getContextPath()+"/login.jsp");

}

}


@Override

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}


}

<filter>

  <filter-name>JspFilter</filter-name>

  <filter-class>com.imooc.filter.JspFilter</filter-class>

  </filter>

<filter-mapping>

<filter-name>JspFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2020-06-18 16:54:07

同学你好,问一下同学现在是登陆还是没有登陆。登陆后的用户信息是否存在session中,名称是否为ex。

同学是没有登陆,输入分类管理和图书管理的地址可以直接访问。还是登陆后,访问新建分类或者图书点提交就返回了登录界面。建议同学详细描述一些,并将具体的访问路径贴一下。

祝:学习愉快~

  • 提问者 我有一个梦而已 #1
    就没登录的状态,所有的页面都能直接访问,但是在新建分类点提交后会返回登录页面,用户信息的传值没有问题。 String username=request.getParameter("username"); String password=request.getParameter("password"); User user=new User(); user.setUserName(username); user.setPassword(password); UserService userService= new UserServicempl(); List<User> userList=(List<User>)getServletContext().getAttribute("userList"); User ex=userService.login(userList,user); if(ex==null) { request.setAttribute("msg", "登录失败"); request.getRequestDispatcher("/login.jsp").forward(request, response); }else { request.getSession().setAttribute("ex", ex); response.sendRedirect(request.getContextPath()+"/bookList.jsp"); } }
    2020-06-18 17:03:06
  • 提问者 我有一个梦而已 #2
    问题已解决
    2020-06-18 17:38:26
  • 同学自己解决了问题,棒棒哒,继续加油。祝:学习愉快~
    2020-06-18 18:12:35
好帮手慕阿满 2020-06-18 14:40:03

同学你好,如下判断有些问题:

http://img1.sycdn.imooc.com//climg/5eeb0abb09fc8df005700243.jpg

这里应该先对flag进行判断,如果是true,则直接doFilter(),如果是false,则对user进行判断。如果user不为null,则doFilter(),否则返回登陆页面。

祝:学习愉快~

  • 提问者 我有一个梦而已 #1
    if(flag==true) { chain.doFilter(request, response); return; }else { if(user!=null) { chain.doFilter(request, response); return; }else { res.sendRedirect(req.getContextPath()+"/login.jsp"); } } 这样吗,也不行哎
    2020-06-18 15:23:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师