我可以在scriptlet中设置session属性,但是当我尝试在java类中设置session属性时,它会显示错误,例如“session无法解析”。 那么如何在java中设置会话?
<%String username = (String)request.getAttribute("un");
session.setAttribute("UserName", username);%>
答案 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)
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) {
}
}
<%@ 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”