我正在尝试将值存储在会话中,但它向我显示“字符串未正确关闭”错误。
我正在使用此代码存储值:
<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));
String str=(String)session.getAttribute("emailvalue"); %>
它是否是正确的systax?
答案 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或操作),因为它似乎不应该是视图应该执行的操作。