坐上坟头看鬼哭 2020-06-12 16:33 采纳率: 0%
浏览 268

tomcat6换7之后为什么在jsp页面session.setAttribute( ),后端java代码怎么都获取不到这个属性?

tomcat6换7之后为什么在jsp页面session.setAttribute( ),后端java代码怎么都获取不到这个属性?图片说明

后端代码:
package com.cdc.core.filter;

import java.io.IOException;
import java.security.interfaces.RSAPrivateKey;
import java.util.HashMap;

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.HttpSession;

import com.cdc.core.util.RsaUtil;

/**

  • 验证码验证过滤器及防止CSRF攻击
  • @author SnoopyChen (ceo@vmeitime.com)
    *
    */
    public class CodeFilter implements Filter {

    public void destroy() {

    }

    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest)request;
    HttpSession session = req.getSession();

    RSAPrivateKey privateKey = (RSAPrivateKey)session.getAttribute("privateKey");
    String random = req.getParameter("random");
    String username = req.getParameter("j_username");
    String tokenStr = req.getParameter("tokenStr");
    
    try{
        String sessionTokenStr = req.getSession().getAttribute("tokenStr").toString();
    
        String sRand = (String)session.getAttribute("rand");
    
        if( null != sRand && null!=random && sessionTokenStr.equals(RsaUtil.decryptStringByJs(privateKey, tokenStr))) {
            if(sRand.equalsIgnoreCase(RsaUtil.decryptStringByJs(privateKey,random.trim()))){
                session.removeAttribute("rand");
    
                HashMap<Object,Object> map=new HashMap(request.getParameterMap());  
                String password = request.getParameter("j_password").toString();
                password = RsaUtil.decryptStringByJs(privateKey, password);
                map.put("j_password", password);
                map.put("j_username", RsaUtil.decryptStringByJs(privateKey, username));
    

    // // System.out.println(password);

                ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(req,map);      
                chain.doFilter(wrapRequest, response);  
    

// chain.doFilter(request, response);
}else{
request.setAttribute("codeError","验证码输入不正确!");
request.setAttribute("username",RsaUtil.decryptStringByJs(privateKey, username));
//request.getRequestDispatcher("/user/login.jsp").forward(request,response);
request.getRequestDispatcher("/").forward(request,response);
}
}else{
request.getRequestDispatcher("/").forward(request,response);
}
}catch (Exception e){
e.printStackTrace();
request.setAttribute("codeError","登录失败,请重试!");
request.getRequestDispatcher("/").forward(request,response);
}

}

public void init(FilterConfig arg0) throws ServletException {

}

}

  • 写回答

1条回答 默认 最新

  • Timor_D 2020-06-12 17:13
    关注

    把代码贴出来

    评论

报告相同问题?

悬赏问题

  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端