针对JSP-如何在session.setAttribute中传递JavaScript变量?[重复]和jsp用session传值这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展3.11、@Se
针对JSP-如何在session.setAttribute中传递JavaScript变量?[重复]和jsp用session传值这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展3.11、@SessionAttribute 和 @RequestAttribute、Javascript / JSP:如何将一页上的JSP变量值传递给下一页上的javascript变量?、JavaScript dom中的attributes [0]和attributes.item(0)有什么区别?、Javascript setAttribute Vs jquery多个属性setter等相关知识,希望可以帮助到你。
本文目录一览:- JSP-如何在session.setAttribute中传递JavaScript变量?[重复](jsp用session传值)
- 3.11、@SessionAttribute 和 @RequestAttribute
- Javascript / JSP:如何将一页上的JSP变量值传递给下一页上的javascript变量?
- JavaScript dom中的attributes [0]和attributes.item(0)有什么区别?
- Javascript setAttribute Vs jquery多个属性setter
JSP-如何在session.setAttribute中传递JavaScript变量?[重复](jsp用session传值)
是学习JSP的新手,它尝试在两个页面之间传递数据。
我想知道是否可以将javascript变量传递给 session.setAttribute()
目前,我可以通过2个jsp文件传递文本字符串,如下所示:
JSP1:
<% String text = "hello";session.setAttribute("test", text);%>
JSP2:
var someText = "<%=session.getAttribute("test")%>"
效果很好。
然而,是否有可能通过一个var
进入session.setAttribute
呢?我将一些数据存储在javascript变量中,并希望将其发送到第二个JSP文件。
因此,例如:
var number = 7;<%session.setAttribute("test", number);%>
我已经尝试过了,但出现错误“数字无法解析为变量”
谢谢!
答案1
小编典典您无法执行此操作,因为javascript在客户端执行,而JSP在服务器端执行。
如果要将javascript变量设置为JSP会话,则可以通过如下所示通过URL传递此变量
var number = 7;window.location="http://example.com/index.jsp?param="+number;
现在像这样在您的JSP页面中接收此var
String var = request.getParameter("param");
现在在会话中进行设置
session.setAttribute("test", var);
编辑:
var number = 7;<%session.setAttribute("test", number);%>
在上面的代码中,服务器将仅在<%%>内部执行代码。它不知道JSP标记之外的任何内容。因此,它也不知道您的javascript变量number
。
服务器执行该代码,结果将发送到浏览器,然后您的浏览器将执行该javascript代码var number=7;
。
希望,现在对您来说很清楚。
3.11、@SessionAttribute 和 @RequestAttribute
本篇示例见这个项目的 mvc 分支下的 SesAndReqAttrController.java
① 使用@SessionAttribute来访问预先存在的全局会话属性
如果你需要访问预先存在的、以全局方式管理的会话属性的话,比如在控制器之外(比如通过过滤器)可能或不可能存在在一个方法参数上使用注解@SessionAttribute
:
/**
* 在处理请求 /helloWorld/jump 的时候,会在会话中添加一个 sessionStr 属性。
* <p/>
* 这里可以通过@SessionAttribute 获取到
*/
@RequestMapping("/sesAttr")
public String handleSessionAttr(@SessionAttribute(value = "sessionStr") String sessionStr, Model model)
{
System.out.println("--> sessionStr : " + sessionStr);
model.addAttribute("sth", sessionStr);
return "/examples/targets/test1";
}
为了使用这些需要添加或移除会话属性的情况,考虑注入org.springframework.web.context.request.WebRequest
或javax.servlet.http.HttpSession
到一个控制器方法中。
对于暂存在会话中的用作控制器工作流一部分的模型属性,要像“使用 @SessionAttributes 存储模型属性到请求共享的HTTP会话”一节中描述的那样使用SessionAttributes。
② 使用@RequestAttribute访问请求属性
就像@SessionAttribute
一样,注解@RequestAttribute
可以被用于访问由过滤器或拦截器创建的、预先存在的请求属性:
@RequestMapping("/reqAttr")
public String handle(@RequestAttribute("reqStr") String str, Model model)
{
System.out.println("--> reqStr : " + str);
model.addAttribute("sth", str);
return "/examples/targets/test1";
}
可以使用下面的过滤器进行测试:
@WebFilter(filterName = "myFilter", description = "测试过滤器", urlPatterns = { "/*" })
public class MyFilter implements Filter
{
@Override
public void init(FilterConfig filterConfig) throws ServletException
{}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
System.out.println("--> MyFilter Do.");
request.setAttribute("reqStr", "万万没想到,啦啦啦啦啦!");
chain.doFilter(request, response);
}
@Override
public void destroy()
{}
}
Javascript / JSP:如何将一页上的JSP变量值传递给下一页上的javascript变量?
目前,我正在尝试将JSP值发送给javascript。可能吗?我的情况如下:
在页面abc.jsp上,用户以表格形式输入数据。该信息将在下一页xyz.jsp中发送。我想在xyz.jsp页面javascript中使用此数据。可能吗?是的,该怎么做?
还想知道,如果我自动刷新此页面(或页面的一部分),即xyz.jsp,那么有可能在没有JavaScript失败或崩溃的情况下进行吗?
谢谢。
JavaScript dom中的attributes [0]和attributes.item(0)有什么区别?
除item
是方法调用外,没有其他人。结果是相同的,除了element.attributes[0]
会为您提供undefined
的不存在的属性,而element.item(0)
会给您null
。
const ex = document.querySelector("span");
console.log(ex.attributes[0]);
console.log(ex.attributes.item(0));
<span>x</span>