正在回答 回答被采纳积分+1
package com.imooc.filter;
import java.io.IOException;
import java.util.List;
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.imooc.entity.User;
import com.imooc.utility.LibServiceImpl;
public class LoginFilter 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 hrequest=(HttpServletRequest)request;
HttpServletResponse hresponse=(HttpServletResponse)response;
//获取参数
String username=hrequest.getParameter("username");
String password=hrequest.getParameter("password");
// System.out.println("username:"+username+"\tpassword:"+password);
LibServiceImpl serviceImpl=new LibServiceImpl();
int flag=serviceImpl.login(username, password);
System.out.println("flag:"+flag);
if(flag==1) {
//登录成功,获取用户信息并存入session
HttpSession session=hrequest.getSession();
List<User> list =serviceImpl.getDaoImpl().getUserdb();
for (User u : list) {
if(u.getUsername().equals(username)){
session.setAttribute("User", u);
}
}
chain.doFilter(request, response);
return;
}else if (username.equals("")&&password.equals("")) {
hresponse.sendRedirect(hrequest.getContextPath()+"/index.jsp?flag=4");
return;
}
else {
hresponse.sendRedirect(hrequest.getContextPath()+"/index.jsp?flag=3");
return;
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
同学你好。
如果同学想对server.jsp进行过滤器编写的一系列处理操作,那么每次刷新都会被拦截到过滤器内,进行完对应操作后才会继续。
根据作业要求,server.jsp 要求必须登录后才可以访问这个server.jsp,同学说的每次刷新server.jsp 都会被拦截是说每次刷新都需要重新登录吗? 那样同学可以看一下user是不是存到request中了?这次作业应该将它存到session中。
如果同学只是想让过滤器“放过”这个某个页面。可以将需要拦截的和不需要拦截的页面存在不同文件夹下,这个文件夹需要在WebContent下,如:

这样的目录结构情况下,只需要设置web.xml中<url-pattern>为 page/* 就可以避免index.jsp被那个过滤器拦截。
祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程

我项目中明明有啊,还看了压缩包也有的,老师那里没有吗?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星