Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将参数从jsp传递到java类?_Java_Jsp - Fatal编程技术网

如何将参数从jsp传递到java类?

如何将参数从jsp传递到java类?,java,jsp,Java,Jsp,我正在使用Tomcat8 WebSocket构建聊天室,代码来自tomcat的示例。但我不知道如何将变量传递到java类中,下面是我的代码: <jsp:useBean id="chatannotation" scope="application" class="websocket.chat.ChatAnnotation" /> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://w

我正在使用Tomcat8 WebSocket构建聊天室,代码来自tomcat的示例。但我不知道如何将变量传递到java类中,下面是我的代码:

<jsp:useBean id="chatannotation" scope="application"
    class="websocket.chat.ChatAnnotation" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        String name = (String) session.getAttribute("realname");
    %>
    <a href="chat.jsp">Game</a>
</body>
</html>

在此处插入标题
我想将变量名放入以下java类中,在分配给player的构造函数ChatAnnotation()中:

public class ChatAnnotation {

    private static final Log log = LogFactory.getLog(ChatAnnotation.class);
    private static final Set<ChatAnnotation> connections =
            new CopyOnWriteArraySet<>();

    private final String player;

    private String username;
    private Session session;

    public ChatAnnotation() {
        player = "";
    }
}
公共类注释{
私有静态最终日志Log=LogFactory.getLog(chatnotation.class);
专用静态最终集连接=
新建CopyOnWriteArraySet();
私人最终弦乐演奏者;
私有字符串用户名;
非公开会议;
公共聊天室注释(){
player=“”;
}
}

首先,如果要调用ChatAnnotation的构造函数并更改播放器名称,则必须创建参数化构造函数

public ChatAnnotation(String player) {
    this.player = player;
}
<%
    String name = (String) session.getAttribute("realname");
    ChatAnnotation chat = new ChatAnnotation(name);
%>
现在要调用它,您必须在JSP页面中创建对象,并将值传递给构造函数

public ChatAnnotation(String player) {
    this.player = player;
}
<%
    String name = (String) session.getAttribute("realname");
    ChatAnnotation chat = new ChatAnnotation(name);
%>

首先在ChatAnnotation类中创建一个构造函数+public getPlayer()方法,如

ChatAnnotation(String name){
    player  = name;
}
public String getPlayer(){
  return player;
}
您的.jsp页面也会这样做,

<%
String name = (String) session.getAttribute("realname");
ChatAnnotation chatAnnotation = new ChatAnnotation(name);
session.setAttribute("chatAnno",chatAnnotation);
%>  
<%
ChatAnnotation chatAnno = (ChatAnnotation)session.getAttribute("chatAnno");
String playerName = chatAnno.getPlayer();
%>

在您想要使用它的另一端(otherFile.jsp),将它从会话中拉回来,就像您放置它一样,

<%
String name = (String) session.getAttribute("realname");
ChatAnnotation chatAnnotation = new ChatAnnotation(name);
session.setAttribute("chatAnno",chatAnnotation);
%>  
<%
ChatAnnotation chatAnno = (ChatAnnotation)session.getAttribute("chatAnno");
String playerName = chatAnno.getPlayer();
%>

在文件中写入jsp:

 <jsp:useBean id="chatannotation" scope="application"
class="websocket.chat.ChatAnnotation" />

    <%
    String name = (String) session.getAttribute("realname");


    //-------now pass parameter "name" to your ChatAnnotation java file
   ChatAnnotation chatAnnotation = new ChatAnnotation(name);
   session.setAttribute("name",chatAnnotation);
    %> 

你能做些什么?从JSP创建对象并将其放入会话,然后重新使用到您希望利用的另一个部分。。。明白我的意思了吗?我建议您使用
JSTL
将代码导入
JSP
谢谢!我明白你的意思。但如果我使用带参数的构造函数,我将出现以下错误:usebean类属性无效。我怎样才能解决这个问题?