首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >getSession().getAttribute(“.”) -> null

getSession().getAttribute(“.”) -> null
EN

Stack Overflow用户
提问于 2017-08-15 16:13:50
回答 2查看 9.3K关注 0票数 1

我创建了一个signIn servlet:

代码语言:javascript
运行
复制
@WebServlet(
    name = "SignInServlet",
    description = "check email & pass",
    urlPatterns = {"/authorization_signin"}
    )
public class SignInServlet extends javax.servlet.http.HttpServlet {

public SignInServlet(){
}

protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    UserDataSet user = new UserDataSet();
    SignInModel modelSignIn = new SignInModel();


    user.setEmail(request.getParameter("email"));
    user.setPassword(request.getParameter("password"));

    user = modelSignIn.doSignIn(user);

    if (request.getSession().getAttribute("loggedUser") == null) {
        if (user != null) {
            request.getSession().setAttribute("loggedUser", user);             request.getRequestDispatcher("authorization.jsp").forward(request, response);
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            request.setAttribute("errorMessage", "Email or password is incorrect");
            request.getRequestDispatcher("index.jsp").forward(request, response);
            response.setStatus(HttpServletResponse.SC_OK);
        }
    }

}

@Override
 protected void doGet(HttpServletRequest request,
                  HttpServletResponse response) throws ServletException, IOException{
    response.setContentType("text/html; charset=utf-8");
    response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
}

当用户登录时,servlet将他重定向到"authorization.jsp“

代码语言:javascript
运行
复制
<body>
<%

if (request.getSession().getAttribute("loggedUser") != null){
    UserDataSet user = (UserDataSet) request.getSession().getAttribute("loggedUser");

    System.out.println("In author :" + request.getSession().getAttribute("loggedUser"));
%>
<h1> Hello <%= user.getFirstName() %> <%= user.getLastName() %>!</h1>
<h2>AUTORIZED!</h2>
 <a href="/authorization_logout">Log Out</a>
 <%
 }
else {
%>
 <h1>GO HOME</h1>
 <%
}
 %>
 </body>

然后浏览器显示此页面和数据,以便在用户中签名。

如果写入URL "localhost:8080“并转到"index.jsp",则在"authorization.jsp”上再次写入

筛选检查会话:

代码语言:javascript
运行
复制
@WebFilter(filterName = "LoginFilter")
public class LoginFilter implements Filter {
public void destroy() {
}



public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    HttpServletRequest httpRequest = (HttpServletRequest) req;
    HttpServletResponse httpResponse = (HttpServletResponse) resp;

    System.out.println("Enter filter");

    System.out.println("Filter session: " + httpRequest.getSession(false).getAttribute("loggedUser"));



    UserDataSet user = (UserDataSet) httpRequest.getSession(false).getAttribute("loggedUser");

    if (user != null) {
        System.out.println("CHAIN");
        chain.doFilter(req, resp);
    } else {
        httpResponse.sendRedirect("/");
        System.out.println("Not signin");
    }
}

public void init(FilterConfig config) throws ServletException {

}

}

getSession().getAttribute("loggedUser")返回null为什么?

下一个文本:如果我登录并servlet打开"authorization.jsp",那么尝试在任何*.jsp上抛出*.jsp,在那里将检查会话,结果将是null

怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 08:26:12

我的朋友帮我在stackoverflow上找到了这个问题的答案

如果您使用request.getSession().setAttribute在会话中放置了某些内容,则必须从会话中读取它,而不是从请求中读取。试试<%= session.getAttribute("test") %>

Link to answer

票数 1
EN

Stack Overflow用户

发布于 2020-04-28 22:43:33

我用过

代码语言:javascript
运行
复制
  <%=  request.getParameter("loggedUser") %>

由于某种原因,当我使用request.getSession().getAttribute("loggedUser")时,我在java日志中看到了1,我还在相同的代码中观察到了request.getParameter工作的情况,至少当值通过查询字符串传递并且“未检查的或不安全的操作”从日志中消失时。因此,在我看来,这是一个解决这个问题的办法。

1

代码语言:javascript
运行
复制
_index__jsp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45696968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档