ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaEE(Session与Filter)

2021-11-28 23:01:34  阅读:186  来源: 互联网

标签:session HttpServletRequest return getContextPath JavaEE request uri Filter Sessi


Session (会话)

  • 访问这个用户的全部菜单都可以访问到 跨越了多个请求

  • request.setCharacterEncoding("utf-8");  // 数据库中接收到中文 这里处理乱码
// 1.创建会话
HttpSession session = request.getSession();
//2.将用户信息放到会话中
session.setAttribute("username", inputUsername);
  • 会话的保存机制

Filter(过滤器)

  • 上一个环节完成后,要交互到下一个环节。

 

//配置路径
@WebFilter("/*")
public class SecurityFilter implements Filter{
@Override
  public void doFilter(ServletRequest servletRequest ,ServletRespons servletRepone,FilterChain filterChain){
  HttpServletRequest request = (HttpServletRequest)ServletRequest;
  HttpServletResponse response = (HttpServletResponse)ServletResponse
  if(isLoginRequest(request) || LoginAlready(request) || isHomeRequest(request)){
  //放行
  filterChain.doFilter(ServletRequest,ServletResponse)
  }else{
  //重定向登录页
  response.sendRedirect(request.getContextPath()) //request.getContextPath() 拿到登录页
  }
}
 
//判断当前的请求是否是登录请求,登录请求的Servlet地址:/login,判断当前的请求uri是否是/login,如果是login就放行。
private boolean isLoginRequest(HttpServletRequest reqeust){
System.out.println(reqeust.getContextPath());
String uri = request.getRuquestURI(); //uri虚拟地址
if(uri.equals(request.getContextPath) + "/login"){
return turn;
}
return false;
}
//判读用户是否登录
private boolean LoginAlready(HttpServletRequest reqeust){
//得到session 因为登录成功后 我们在session里放了一个值
HttpSession session = request.getSession();
Object username = session.getAttribute("username");
}
if(username != null{
  return ture;
}
return flase;
}
// 判断当前请求是否是请求的项目首页,如果是项目首页,就放行
private boolean isHomeRequest(HttpServletRequest request){
  String contextPath = request.getContextPath();
  String uri = request.getRequestURI();
 
  contextPath = contextPath.replaceAll)("/","");
  uri = uri.replaceAll("/","");
  if(contextPath.equals(uri)){
  return true;
  }
  return flase;
}

 

标签:session,HttpServletRequest,return,getContextPath,JavaEE,request,uri,Filter,Sessi
来源: https://www.cnblogs.com/cqhec/p/15617096.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有