当前位置:编程学习 > JAVA >>

struts2 相同的页面,直接访问,提交form能获得对象,但如果是通过其他页面的连接跳转到上述页面,再提交对象就为空了

使用ssh开发的菜鸟

从地址栏输入一个页面地址a.jsp,打开页面A,从这个页面A提交form,执行action,能获得A页面中的对象值.

但中地址栏中输入页面地址b.jsp,打开页面B,在这B页面中有个连接跳转到a.jsp,点击这个连接显示A页面,这时再从这个页面提交form,相同的action却不能获取对象值

请高手指导一下 --------------------编程问答-------------------- 不可能出现这种情况,应该是你的代码写的有问题,把代码贴出来看看。 --------------------编程问答-------------------- 问题源头找到了,是在b.jsp的页面中增加了一段获取登录用户信息的script
<%
String auth = request.getHeader("Authorization");
if (auth == null)
{
  response.setStatus(response.SC_UNAUTHORIZED);
  response.setHeader("WWW-Authenticate", "NTLM");
  response.flushBuffer();
  return;
}
if (auth.startsWith("NTLM "))
{
  byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
  int off = 0, length, offset;
  if (msg[8] == 1)
  {
    byte z = 0;
    byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S', (byte)'S', (byte)'P', z,(byte)2, z, z, z, z, z, z, z,(byte)40, z, z, z, (byte)1, (byte)130, z, z,z, (byte)2, (byte)2, (byte)2, z, z, z, z, z, z, z, z, z, z, z, z};
    response.setHeader("WWW-Authenticate", "NTLM " + new sun.misc.BASE64Encoder().encodeBuffer(msg1));
    response.sendError(response.SC_UNAUTHORIZED);
    return;
  }
  else if (msg[8] == 3)
  {
    off = 30; 

    length = msg[off+17]*256 + msg[off+16];
    offset = msg[off+19]*256 + msg[off+18];
    String remoteHost = new String(msg, offset, length);

    length = msg[off+1]*256 + msg[off];
    offset = msg[off+3]*256 + msg[off+2];
    String domain = new String(msg, offset, length);

    length = msg[off+9]*256 + msg[off+8];
    offset = msg[off+11]*256 + msg[off+10];
    String username =new String(msg, offset, length);

    out.println("Username:"+username+"<BR>");
    out.println("RemoteHost:"+remoteHost+"<BR>");
    out.println("Domain:"+domain+"<BR>");
    
    String tempString="";
    //整理username,去掉中间的空字符
    String str=username;
for (int i=0;i<str.length();i++){
if ((int)str.charAt(i)>0){
tempString+=str.charAt(i);
}
}
    session.setAttribute("userCode", tempString);
tempString="";    
    str=remoteHost;
for (int i=0;i<str.length();i++){
if ((int)str.charAt(i)>0){
tempString+=str.charAt(i);
}
}

session.setAttribute("hostName", tempString);
    str=domain;
    tempString="";
for (int i=0;i<str.length();i++){
if ((int)str.charAt(i)>0){
tempString+=str.charAt(i);
}
}
session.setAttribute("domainName", tempString);
//response.sendRedirect("AuthUser");
  }
}
%>
</head>
如果去掉这段代码,就没问题了.但是这段代码是必须的,应该怎么处理呢? --------------------编程问答-------------------- 冒个泡,请高手指导
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,