如何在Java中设置会话属性?

23

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

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

2
希望你把这段代码写在一个 .jsp 类中。 - erimerturk
5个回答

51

所谓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);
}

3
默认情况下,会话对象在jsp页面上是可用的(隐式对象)。它在普通的POJO Java类中不可用。您可以通过使用HttpServletRequest在Servlet上获取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

试试这个。

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

-3

我试图理解你的观点。希望这有所帮助......

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

-7

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);
%>

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

通过在类中使用"this.username",您可以访问Java文件中的用户名。


Pawan,长示例如何与设置“session”属性相关? - Piotr Nowicki
@PiotrNowicki 这只是实现该功能的另一种方式。 - Pawan Kumar Jha
6
我认为这不是涉及到session的操作,而是访问您的POJO并使用请求范围属性来设置其属性。 - Piotr Nowicki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接