包含jsp中的变量?

问题描述:

我有一个JSP文件,其中包含另一个JSP文件。在他们两个我需要一个特殊的变量。 这是JSP的代码,其中包括其他JSP的一部分:包含jsp中的变量?

<%String logged = request.getParameter("logged"); 
out.print(
"<h3> Auftragliste </h3>" + "Eingeloggt als: " 
+ logged 
+ "<br /><hr /><br />"); 
%> 

<!-- DAS IST DIE EIGENTLICHE AUFTRAGLISTE, INNERHALB DES DIVS --> 
<div id="AutoUpdte"> 
    <jsp:include page="AuftragListe.jsp" /> 
</div> 

的此请求“登录”工作正常。现在这里是包含的JSP的一部分:

+ "<form method='POST' " 
     + "name='Auftrag" 
     + i 
     + "' action='Annehmen'>" 
     + "<input type='hidden' name='ID' value='" 
     + auftraege.get(i).ID 
     + "' />" 
     + "<input type='hidden' name='von' value='" 
     + auftraege.get(i).von 
     + "' />" 
     + "<input type='hidden' name='nach' value='" 
     + auftraege.get(i).nach 
     + "' />" 
     + "<input type='hidden' name='object' value='" 
     + auftraege.get(i).object 
     + "' />" 
     + "<input type='hidden' name='reward' value='" 
     + auftraege.get(i).reward 
     + "' />" 
     + "<input type='hidden' name='logged' value='" 
     + logged 
     + "'>" 
     + "<center>" 
     + "<input class='auftragannehmen' type='submit' value=''/> " 
     + "</center>" 
     + "</form>" 

在这个JSP中,我要求变量“logged”,就像我上面做的那样。但是,当我单击按钮并且窗体开始时,下一步无法访问“已记录”变量。

我的错误在哪里?

谢谢!

编辑:包含的JSP绝对不能访问该变量。但是它如何访问这个变量?

该请求通常用于存储处理请求的所有Servlet和JSP都必须可访问的属性。但是在这里,这是不必要的,因为变量是请求参数的值。像在父JSP中一样使用request.getParameter("logged")。这就是说,你似乎完全错过了使用JSP的点,这是为了避免使用Java代码和丑陋的字符串连接(可以直接从servlet完成)来生成HTML标记。了解JSTL和JSP EL,并避免JSP中的瘟疫等脚本。例如,你的第一个小脚本应该被改写为:

<h3> Auftragliste </h3> 
Eingeloggt als: <c:out value="${param.logged}"/> 
<br /><hr /><br /> 

注意的是,使用<c:out>这里可以确保参数正确HTML转义,从而避免各种XSS攻击。

+0

当我改变我的第一个脚本到你的代码整个页面不工作了:S – 2012-07-05 17:11:38

+0

请详细说明。究竟会发生什么?当然,就像每个taglib一样,它的实现必须位于webapp的类路径中,并且taglib必须在JSP的顶部声明。请参阅http://stackoverflow.com/tags/jstl/info,花点时间在使用它之前了解它是如何工作的。 – 2012-07-05 17:14:57

+0

父JSP不能访问已记录的变量,这当然很清楚。 但还有一个问题。我们不允许使用这个。我们的教授说,我们不允许在代码中使用需要“$”的所有东西:S – 2012-07-05 17:19:46

使用请求属性传递 '记录' 值

request.setAttribute("myLogged",logged); 

读该例在包含的JSP文件中的属性值:

String logged = request.getAttribute("myLogged"); 

或只是

${myLogged}