如何在java中设置session属性?

时间:2011-11-28 08:03:35

标签: java jsp

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

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

5 个答案:

答案 0 :(得分:44)

通过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);
}

答案 1 :(得分:3)

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

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

答案 2 :(得分:-2)

试试这个。

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

答案 3 :(得分:-2)

我试着抓住你的观点。我希望它有所帮助......

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

答案 4 :(得分:-6)

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”