el表达式我获取不到session 我只能使用Java表达式 也就是这样<%= session.getId() %> 但是请求发出去以后是这样的gmsOaoProtocolList?jsessionid=%3C%=session.getId()%20%%3E
时间: 2023-09-18 07:15:49 浏览: 141
在js文件中写el表达式取不到值的原因及解决方法
你可以使用以下代码来获取 session ID 并拼接到表单的 action 属性后面:
```jsp
<form action="someAction.jsp;jsessionid=<%= session.getId() %>">
<!-- 表单元素 -->
</form>
```
在这个例子中,我们使用 Java 表达式 `<%= session.getId() %>` 来获取 session ID,并使用字符串拼接符 `+` 将其拼接到表单的 action 属性后面,生成完整的 URL。需要注意的是,表单的 action 属性值需要使用双引号 `"` 包含起来,否则编译器会报错。
另外,如果你在使用这个方法时,发现拼接出来的 URL 中包含了 `%3C` 和 `%20%%3E` 这样的编码字符,可能是因为 JSP 编译器将 `<%= session.getId() %>` 解析为了字符串 `"<%= session.getId() %>"`,而不是表达式的值。你可以尝试在 JSP 页面中使用以下语句来输出 session ID:
```
<%
String sessionId = session.getId();
response.encodeURL("someAction.jsp;jsessionid=" + sessionId);
%>
```
在这个例子中,我们使用 Java 代码获取 session ID,然后使用 `response.encodeURL()` 方法将其编码成 URL 格式。然后,你可以将编码后的 URL 作为表单的 action 属性值。需要注意的是,`response.encodeURL()` 方法需要在 JSP 页面中使用 `page` 对象调用,所以你需要在 JSP 页面的开头加上以下语句:
```
<%@ page import="javax.servlet.http.HttpServletResponse" %>
```
这样就可以正确生成带有 session ID 的 URL 了。
阅读全文