tuser813 2013-11-05 02:38 采纳率: 0%
浏览 960

jsp session,app内置对象问题

以下是一个实例的三个页面,第二个页面中的app对象换成session对象为什么第三个页面就得不到数据了呢?
第一个页面
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
<%@page contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>


teachers and students

teachers and students platform


teacher:唐爱国

name:

header:

message:



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
第二个页面
<%@page contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@page import="java.util.*"%>


teachers and students

teachers and students platform


<%!Vector v=new Vector();
ServletContext application;
synchronized void sendMessage(String s)
{
application=getServletContext();
v.add(s);
application.setAttribute("Mess",v);
}
%>
<%
String a=session.getId();
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("peopleName");
String title=request.getParameter("title");
String messages=request.getParameter("messages");
if(name=="")
{
name="guest"+(int)(Math.random()*10000);
}
if(title=="")
{
title="no header";
}
if(messages=="")
{
messages="no message";
}
String s=name+"#"+title+"#"+messages;
sendMessage(s);
%>


congratulations!<%=a %>







》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
第三个页面
<%@page contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<%request.setCharacterEncoding("UTF-8");%>


teachers and students


<%Vector v=new Vector();
v=(Vector)application.getAttribute("Mess");
String a=session.getId();
%>

teachers and students platform


total.like below:





<%for(int i=0;i {
String message=(String)v.elementAt(i);
String[] fenxi=message.split("#");
int j=0;
%>


<%while(j {
String str=fenxi[j];
j++;
%>

<%} %>

<%} %>

number

speaker

title

body

;<%=i+1 %> <%=str %>

back


  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-09 21:54
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (讯飞星火专栏,V3.0版本,2023.10.24)


    该回答引用讯飞星火认知大模型,仅提供参考,不保证完全正确
    在第二个页面中,将app对象换成session对象后,第三个页面无法获取到数据的原因可能是以下几点:

    1. 在第一个页面中,将数据存储在了session中,但在第三个页面中,没有正确地从session中获取数据。请确保在第三个页面中使用session.getAttribute("Mess")来获取session中的数据。

    2. 在第二个页面中,使用了application.setAttribute("Mess",v)来设置session中的数据。但在第三个页面中,没有正确地从application中获取session数据。请确保在第三个页面中使用application.getAttribute("Mess")来获取application中的session数据。

    3. 在第二个页面中,使用了synchronized void sendMessage(String s)方法来发送消息。这可能导致在多线程环境下出现问题。建议使用其他同步机制,如synchronized(this)java.util.concurrent.locks.Lock

    4. 在第二个页面中,使用了ServletContext application;来声明一个全局变量。这可能导致在多个请求之间共享数据。建议使用局部变量,并在需要时通过request.getSession()获取session对象。

    5. 在第二个页面中,使用了Vector v=new Vector();来创建一个Vector对象。这可能导致在多线程环境下出现问题。建议使用线程安全的集合类,如java.util.concurrent.CopyOnWriteArrayList

    请检查以上几点,确保在第三个页面中正确地从session和application中获取数据,并使用合适的同步机制和集合类。

    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题