您说JSP中的代码是这样的:
if(response=="existsnoadmin"){ alert(response); alert("The value obtained by the admin.java is " +request.getAttribute("rest")); out.println("The value obtained by the admin.java is " +request.getAttribute("rest")); alert("we have done in index.jsp");}我在理解这到底意味着什么时遇到了问题。
如果上面的代码是出现在scriptlet标签
<%…
内的Java代码
%>,那么我不明白该如何
alert(response);显示任何内容。实际上,它应该给您JSP中的编译错误。
另一方面,如果以上是JSP生成的页面中嵌入的Javascript代码,则
request.getAttribute("rest")可能无法工作…因为您设置属性的请求对象在Web浏览器中不存在,并且out.println(...)
无法使用,因为Web浏览器中不存在JspWriter。
您可能没有准确地抄录JSP摘录,或者您的Java和/或Javascript没有意义。
根据您的评论,我认为您需要以下内容。
if(response=="existsnoadmin"){ alert(response); alert('The value obtained by the admin.java is ' + '<% request.getAttribute("rest") %>'); // The value obtained by the admin.java is <% request.getAttribute("rest") %>}或者,如果您想摆脱小本票的东西…
if(response=="existsnoadmin"){ alert(response); alert('The value obtained by the admin.java is ' + '${requestScope.rest"}'); // The value obtained by the admin.java is ${requestScope.rest"}}如果您希望将我已经变成
//JS注释的内容显示在页面上,则可以将其移至HTML的某些内容部分。当前(假设)在
<script>元素内部,因此将不会显示。
所有这些黑魔法的关键是要了解JSP的哪些部分可以通过以下方式查看/评估:
- JSP指令例如
<@ import ...>
由JSP编译器评估。 - 当“运行” JSP时,会评估脚本集标记(例如
<% ... %>
EL表达式)${...}或JSTL标记(例如<c:out ...>
)内的内容。 - 收到HTTP响应后,由JSP生成的任何内容(HTML内容,嵌入式Javascript)都会在用户浏览器中显示/执行。
现在有必要在admin.java中使用request.dispatcher .... forward命令。
您的主Servlet可以执行以下两项操作之一。
它可以使用请求分派器将请求转发到您的JSP。如果这样做,则可以通过设置请求属性来转发其他值。
它可以打开响应输出流并向其中写入内容。
它 不应该 尝试同时做!(我不确定会发生什么,但是很可能会导致500内部错误。)



