我试图将值存储在会话中,但它向我显示“字符串未正确关闭”错误。
我正在使用此代码来存储值:
<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));
String str=(String)session.getAttribute("emailvalue"); %>
它是正确的系统税吗?
代替
<% session.setAttribute("emailvalue",request.getParameter("<%=request.getQueryString() %>"));String str=(String)session.getAttribute("emailvalue"); %>
将从 request.getQueryString() 获得的值存储在另一个变量中。您的代码在另一个 jsp java 标记 <%...%> 中有一个 jsp systemout 标记 <%=...%>,jsp 编译器不支持该标记。
而是使代码更简单,使其像下面这样工作
<% String queryString = request.getQueryString(); session.setAttribute("emailvalue",queryString ); String str=(String)session.getAttribute("emailvalue");%>
您已经在 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 或操作),因为它似乎不是视图应该执行的操作。