如何在JSP上使用嵌套查询字符串?

时间:2012-11-26 19:11:13

标签: jsp scriptlet

我正在尝试将值存储在会话中,但它向我显示“字符串未正确关闭”错误。

我正在使用此代码存储值:

<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));
               String str=(String)session.getAttribute("emailvalue"); %>

它是否是正确的systax?

2 个答案:

答案 0 :(得分:3)

而不是

<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));String str=(String)session.getAttribute("emailvalue"); %>

将从request.getQueryString()获取的值存储在另一个变量中。你拥有的代码有一个jsp systemout标签&lt;%= ...%&gt;在另一个jsp java标记内&lt;%...%&gt;这是jsp编译器不支持的。

相反,使代码更简单,使其像下面的

一样工作
<% String queryString = request.getQueryString(); session.setAttribute("emailvalue",queryString ); String str=(String)session.getAttribute("emailvalue");%>

答案 1 :(得分:2)

你已经进入了一个scriptlet,因此无需再次使用<%=来获取Java字符串:

<% session.setAttribute("emailvalue", request.getQueryString());
   String str = (String) session.getAttribute("emailvalue"); %>

调用request.getParameter(request.getQueryString())也没有任何意义。

最后,你不应该使用scriptlet。使用JSP EL和JSTL:

<c:set var="emailValue" value="${pageContext.request.queryString}" scope="session"/>

甚至更好,在控制器中执行此操作(即调度到JSP的首选MVC框架的servlet或操作),因为它似乎不应该是视图应该执行的操作。