Java 如何使用request.setAttribute()通过单击链接来设置和传递值
每当用户单击链接时,我想使用request.setAttribute()和request.getAttribute()将rowNo的值从一个jsp文件传递到另一个jsp文件(以在该行上显示图像) 但当我尝试在第二个jsp页面上使用request.getAttribute()时,会出现以下异常:Java 如何使用request.setAttribute()通过单击链接来设置和传递值,java,jsp,servlets,Java,Jsp,Servlets,每当用户单击链接时,我想使用request.setAttribute()和request.getAttribute()将rowNo的值从一个jsp文件传递到另一个jsp文件(以在该行上显示图像) 但当我尝试在第二个jsp页面上使用request.getAttribute()时,会出现以下异常: org.apache.jasper.jaspereException:java.lang.NumberFormatException:null 在Index.jsp页面上,我有: <%! int
org.apache.jasper.jaspereException:java.lang.NumberFormatException:null 在Index.jsp页面上,我有:
<%!
int temp = 1;
%>
<a href="single.jsp" onclick="<%= request.setAttribute("val", temp) %>" >
<i class="glyphicon glyphicon-menu-right icon"></i> </a>
在single.jsp页面上:
<%
dbConnect con = new dbConnect();
ResultSet r = con.getConnection().executeQuery("select * from tblpic ");
String tp = (String) (request.getAttribute("val"));
int i = Integer.parseInt(tp);
r.absolute(i);
%>
<div class="thumb-image"> <img src="<%= r.getString(2) %>" data-imagezoom="true" class="img-responsive"> </div>
“data imagezoom=“true”class=“img响应”>
r、 绝对值(i)用于移动到表中的特定行
我在两个jsp页面上都添加了这个文件(我不知道是否有必要)
我正在研究NetBeans和struts框架。我更喜欢
session.setAttribute()
而不是request.setAttribute()
将值从一个jsp传递到另一个jsp
因此,您的代码将是:
<a href="single.jsp" onclick="<%= session.setAttribute("val", temp) %>" >
我更喜欢
session.setAttribute()
而不是request.setAttribute()
将值从一个jsp传递到另一个jsp
因此,您的代码将是:
<a href="single.jsp" onclick="<%= session.setAttribute("val", temp) %>" >
您将服务器端代码和客户端代码混合在一起。“请求”是一个java对象,是servlet请求处理的一部分。它仅在服务器端工作,同时在servlet容器中呈现jsp “onclick”是在浏览器端运行的java脚本单击触发器 一旦页面显示,“请求”无效。单击提交新请求。将创建新的请求对象 对于您来说,可以很容易地将参数参数传递给jsp,如下所示 在第一个jsp上:
在第二个jsp上:
您将服务器端代码和客户端代码混合在一起。“请求”是一个java对象,是servlet请求处理的一部分。只有在servlet容器中呈现jsp时,它才能在服务器端工作
“onclick”是在浏览器端运行的java脚本单击触发器
一旦页面显示,“请求”无效。单击提交新请求。将创建新的请求对象
对于您来说,可以很容易地将参数参数传递给jsp,如下所示
在第一个jsp上:
在第二个jsp上:
您正在请求范围中设置值。请求范围属性仅可在同一请求中访问。只要最终用户单击链接(由提供),就会生成一个新请求,因此您失去了在上一个请求中设置的属性
要解决这个问题,你可以这样做
1) Piyush Aghera解释的URL转发
2) 您可以将该值存储在会话中,如PVR所述
3) 如果您希望仅将值存储在请求属性中,那么我建议您使用RequestDispatcher转发请求。这将起作用,因为下一页上的请求将保持不变。您正在请求范围中设置值。请求范围属性仅可在同一请求中访问。只要最终用户clic在链接(由提供)上,将生成一个新请求,因此您将失去在上一个请求中设置的属性 要解决这个问题,你可以这样做 1) Piyush Aghera解释的URL转发 2) 您可以将该值存储在会话中,如PVR所述
3) 如果您只希望将值存储在请求属性中,那么我建议您使用RequestDispatcher转发请求。这将起作用,因为您在下一页上的请求将保持不变。Kashi让一个jsp将数据发送到一个servlet。然后将数据从该servlet转发到第二个jsp。此外,编写java非常不鼓励在servlet中执行逻辑操作,并且只显示“JSP中的数据。不,那是not NECCASARY中的import语句。@FarazDurrani谢谢,你能给我举个例子吗?Kashi让一个jsp向servlet发送数据。然后将数据从该servlet转发到第二个jsp。而且,在JSP中编写java是非常不受鼓励的。在servlet中执行逻辑操作,只在JSP中“显示”数据。不,那是not NECCASARY中的导入语句。@FarazDurrani谢谢,你能在我的例子中给我举个例子吗。我写了这个,但它给出了以下错误:接口HttpSession中的方法setAttribute不能应用于给定的类型。。。。必需:字符串,找到的对象:无参数在JSP中,会话是HttpSession类型的隐式对象,因此我们可以直接使用它。更新了my answer.org.apache.jasper.jaspereException:PWC6033:JSP的Javac编译错误PWC6199:生成的servlet错误:源值1.5已过时,将在未来版本中删除PWC6199:生成的servlet错误:目标值1.5已过时,将在未来版本中删除PWC6199:生成的servlet错误:To抑制有关过时选项的警告,请使用-Xlint:-options。PWC6197:jsp文件:/index.jsp PWC6199中的第421行发生错误:生成的servlet错误:“此处不允许使用void”类型我写了这篇文章,但它给出了以下错误:接口HttpSession中的方法setAttribute无法应用于给定的类型。。。。必需:字符串,找到的对象:无参数在JSP中,会话是HttpSession类型的隐式对象,因此我们可以直接使用它。更新了my answer.org.apache.jasper.jaspereException:PWC6033:JSP的Javac编译错误PWC6199:生成的servlet错误:源值1.5已过时,将在未来版本中删除PWC6199:生成的servlet错误:目标值1.5已过时,将在未来版本中删除PWC6199:生成的servlet错误:To抑制有关过时选项的警告,请使用-Xlint:-options。PWC6197:jsp文件的第421行发生错误:/index.jsp PWC6199:生成的servlet错误:“此处不允许使用void”类型我尝试了此操作,并出现了此异常:javax.servlet.ServletException:java.sql.SQLException:无法绝对定位到行