【问题标题】:How to set session attribute in java? [duplicate]如何在java中设置会话属性? [复制]
【发布时间】:2012-01-07 17:46:42
【问题描述】:

我可以在 scriptlet 中设置会话属性,但是当我尝试在 java 类中设置会话属性时,它会显示类似“会话无法解析”的错误。 那么如何在java中设置session呢?

<%String username = (String)request.getAttribute("un");
session.setAttribute("UserName", username);%>

【问题讨论】:

  • 我希望你把这段代码写在一个 .jsp 类中。

标签: java jsp


【解决方案1】:

对于 Java 类,我假设您的意思是 Servlet 类,因为在任意 Java 类中设置会话属性没有意义。您可以在 servlet 的 doGet/doPost 方法中执行类似的操作

public void doGet(HttpServletRequest request, HttpServletResponse response) {

    HttpSession session = request.getSession();
    String username = (String)request.getAttribute("un");
    session.setAttribute("UserName", username);
}

【讨论】:

    【解决方案2】:

    默认情况下,会话对象在 jsp 页面上可用(隐式对象)。它在普通 POJO java 类中不可用。 可以使用 HttpServletRequest 获取 HttpSession 对象在 Servelt 上的引用

    HttpSession s=request.getSession()
    s.setAttribute("name","value");
    

    您可以在基于 ActionSupport 的 Action POJO 类上获取会话,如下所示

     ActionContext ctx= ActionContext.getContext();
       Map m=ctx.getSession();
       m.put("name", value);
    

    看看: http://ohmjavaclasses.blogspot.com/2011/12/access-session-in-action-class-struts2.html

    【讨论】:

      【解决方案3】:

      试试这个。

      <%@page language="java" session="true" %>
      

      【讨论】:

        【解决方案4】:

        我试图抓住你的意思。我希望它会有所帮助.....

        if (session.isNew()){
             title = "Welcome to my website";
             session.setAttribute(userIDKey, userID);
        

        【讨论】:

          【解决方案5】:

          Java 文件:Jclass.java

          package Jclasspackage
          
          public class Jclass {
          
              public String uname ;
              /**
               * @return the uname
               */
              public String getUname() {
                  return uname;
              }
          
              /**
               * @param uname the uname to set
               */
              public void setUname(String uname) {
                  this.uname = uname;
              }
          
              public Jclass() {
                  this.uname = null;
              }
          
              public static void main(String[] args) {
          
              }
          }
          

          JSP 文件:sample.jsp

              <%@ page language="java"
              import="java.util.*,java.io.*"
              pageEncoding="ISO-8859-1"%>
          
          <jsp:directive.page import="Jclasspackage.Jclass.java" />   
          <% Jclass jc = new Jclass();
          String username = (String)request.getAttribute("un")
          jc.setUname(username);
          %>
          

          -----------------

          通过这种方式,您可以使用以下方式访问 java 文件中的用户名 类中的“this.username”

          【讨论】:

          • Pawan,长示例与设置 session 属性有什么关系?
          • @PiotrNowicki 这只是实现功能的另一种方式。
          • 我不认为这是 - 它正在访问您的 POJO 并使用 request scoped 属性来设置它的属性。它与 session 无关。
          猜你喜欢
          • 2015-09-03
          • 2018-08-26
          • 1970-01-01
          • 1970-01-01
          • 2016-04-20
          • 2014-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多