很奇怪的session问题

kulasama 2004-09-27 04:39:19
我有两个页面,一个页面存session,一个页面取session.
结果我把它放到/webapp/delete路径下运行良好。。
放到/webapp/jbb路径下就告知以下错误
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


root cause

java.lang.ClassCastException
org.apache.jsp.test_jsp._jspService(test_jsp.java:54)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


note The full stack trace of the root cause is available in the Tomcat logs.
有什么原因可以导致这样?
...全文
366 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
kulasama 2004-09-29
  • 打赏
  • 举报
回复
呵呵。。是阿。。我们做一个论坛。。不过都很没有经验的说
kulasama 2004-09-28
  • 打赏
  • 举报
回复
哦。。等等。。我发现出错的地方是error页面。。不是我做的了。。
我看看。估计是别人做的页面和我做的出现了结合问题~~
kulasama 2004-09-28
  • 打赏
  • 举报
回复
我语句里只有
if(p==0)
response.sendRedirect("error.jsp?message=2&url="+url);
if(p==1)
response.sendRedirect("success.jsp?url="+url+"&message="+s);
if(p==2)
response.sendRedirect("error.jsp?message=1&url="+url);
出现了message..
kulasama 2004-09-28
  • 打赏
  • 举报
回复
什么都没有改。。又刷了一遍。。错误变成了
C:\Tomcat\work\Catalina\localhost\JBB\org\apache\jsp\error_jsp.java:51: ')' expected
char message=Character.parseChar(request.getParameter("message");
^


An error occurred at line: 2 in the jsp file: /error.jsp
Generated servlet error:
C:\Tomcat\work\Catalina\localhost\JBB\org\apache\jsp\error_jsp.java:51: cannot resolve symbol
symbol : method parseChar (java.lang.String)
location: class java.lang.Character
char message=Character.parseChar(request.getParameter("message");
可问题是我的语句上没有这样的语句。。所以明显是jsp转化成selvlet时出的问题。。
这是在哪些语句上转化的servlet呢?
禽兽v5 2004-09-28
  • 打赏
  • 举报
回复
C:\Tomcat\work\Catalina\localhost\JBB\org\apache\jsp\error_jsp.java:75: incompatible types
found : java.lang.String
required: int

意思是message是String类,但是switch语句只能用int。检查一下message的类型。
kulasama 2004-09-28
  • 打赏
  • 举报
回复
这个。。。试一下~~~
kulasama 2004-09-28
  • 打赏
  • 举报
回复
哈。。哪里哪里。。我很菜的呀~~
禽兽v5 2004-09-28
  • 打赏
  • 举报
回复
对于jsp编程这种经常进行类型转换的程序,写很多if判断明显是不划算的。我们的方法是写一个静态转换类,例子如下:

public class Convert
{
public static String toStr(Object src, String init)
{
String dest = null;

try
{
dest = (String) src;

if (dest == null)
{
dest = init;
}
}
catch (Exception e)
{
dest = init;
}

return dest;
}
}

那么对于String类型的取值就可以这样用:

String user_right = Convert.toStr(session.getAttribute("user_right"), "");

类似可做其他发挥。
  • 打赏
  • 举报
回复
顶一下。
看来楼主的水平在我之上,我就不说了,呜呜呜
kulasama 2004-09-28
  • 打赏
  • 举报
回复
还有我里面没有用到switch语句
kulasama 2004-09-28
  • 打赏
  • 举报
回复
我电脑里运行正常
别人电脑里运行就会告知以下错误。
An error occurred at line: 17 in the jsp file: /error.jsp
Generated servlet error:
C:\Tomcat\work\Catalina\localhost\JBB\org\apache\jsp\error_jsp.java:75: incompatible types
found : java.lang.String
required: int
switch(message){
^
1 error
这个错误好像是哪个地方的数据类型匹配错误。。
什么情况下会发生一台电脑运行正常,另一台电脑上出现数据类型匹配错误?
kulasama 2004-09-28
  • 打赏
  • 举报
回复
恩。。好的。。
对了。。那个问题我用另一种方法绕过去了。。
我怀疑问题出来
response.sendRedirect("success.jsp?url="+url+"&message="+s);
因此我把代码改成了
if(user_login!=null){
if(user_right!=null){
if(user_right=="2"){
p=0;
}
if(user_right=="1"){
for(int i=0;i<editor_forum_id.length;i++){
if(editor_forum_id_int[i]==forumid_int){
stmt.executeUpdate("delete from jbb_topic where topic_id ='"+topicid_int+"'");
stmt.close();
con.close();//执行数据库操作
p=1
}
}
}
if(user_right=="0"){
stmt.executeUpdate("delete from jbb_topic where topic_id ='"+topicid_int+"'");
stmt.close();
con.close();
p=1;
}
}
}
else
p=2;
if(p==0)
response.sendRedirect("error.jsp?message=2&url="+url);
if(p==1)
response.sendRedirect("success.jsp?url="+url+"&message="+s);
if(p==2)
response.sendRedirect("error.jsp?message=1&url="+url);
%>
暂时绕开了问题。。
然后又出现了新问题。。
在我的电脑上程序执行完好。。
在别人的电脑上就老是不能使p=1,就好像上面的代码没有执行一样。。每次都跳到错误的页面。。
数据库删除操作也失败。。怀疑是哪个值为Null
我先试试你的方法看看~
禽兽v5 2004-09-28
  • 打赏
  • 举报
回复
代码太长@_@,来点安全手段

String user_right=(String)session.getAttribute("user_right");

这样是不安全的,改为:

String user_right = "";

if ( session.getAttribute("user_right") == null )
{
System.out.println("user_right null");
}
else
{
user_right = (String)session.getAttribute("user_right");
}

把request.getParameter的也改成如上格式。这样就可以检查出是哪里没收到数据。
当一个对象为null的时候,进行类型转换就会跑出异常java.lang.ClassCastException
isquare 2004-09-28
  • 打赏
  • 举报
回复
把work删掉
kulasama 2004-09-28
  • 打赏
  • 举报
回复
呵呵,没办法。。10月1号以前一定要做出来的。。
zhonghua2003 2004-09-28
  • 打赏
  • 举报
回复
为了文静,努力工作!!帮你顶!!
禽兽v5 2004-09-28
  • 打赏
  • 举报
回复
你们不是分开调试的?我倒。
CHLC 2004-09-27
  • 打赏
  • 举报
回复
up
禽兽v5 2004-09-27
  • 打赏
  • 举报
回复
很努力啊 ^_^
kulasama 2004-09-27
  • 打赏
  • 举报
回复
哈哈。。我先去睡觉了。。连着看了11个小时。。累死了。。~~
加载更多回复(19)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧