jsp问题!高分!org.apache.jasper.JasperException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp问题!高分!org.apache.jasper.JasperException相关的知识,希望对你有一定的参考价值。

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*" %>

<jsp:useBean id="connDbBean" scope="page" class="student.Conn"/>
<html>
<head>
<title>test db connection</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<table width="60%" border="1">
<tr bgcolor="#CCCCFF">
<td width="50%">
<div align="center"><font color="#FF0033"><b>姓名</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>性别</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>分数</b></font></div>
</td>
</tr>
<%
ResultSet RS_result=connDbBean.executeQuery("select * from table");

String studentname = "";
String studentsex = "";
int studentscore = 0;

while(RS_result.next())

String studentname = RS_result.getString("name");
String studentsex = RS_result.getString("sex");
int studentscore = RS_result.getInt("score");
%>
<tr>
<td width="50%" bgcolor="#FFFFFF">
<div align="center"><%= studentname %></div>
</td>

<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%= studentsex %></div>
</td>

<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%= studentscore %></div>
</td>
</tr>
<%

RS_result.close();
%>
</table>
</div>
</body>
</html>
编译后出现下面的情况

org.apache.jasper.JasperException: Exception in JSP: /javabean/conn_db.jsp:26

23: <%
24: ResultSet RS_result=connDbBean.executeQuery("select * from table");
25:
26: while(RS_result.next())
27:
28: String studentname = RS_result.getString("name");
29: String studentsex = RS_result.getString("sex");

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

谢谢大家了

我觉得是你连接数据库的问题,是这样的,你已经有了javabean了,为什么还要再执行数据库的操作呢?bean中应该也已经定义过获取name,sex,studentscore的方法了,那么就直接对数据库进行操作就好了,String name=connDbBean.getName();//这个里面的getName()是我定义的,具体的要看你的bean中所定义的方法了,然后再进行相应的修改,下面的getSex(),getScore()的方法也一样;
String sex=connDbBean.getSex();
String studentscore=connDbBean.getScore();
然后在你需要显示这些的地方加上<%=name%><%=sex%><%=studentscore%>另外,如果你需要引进javabean的话,需要在文件头部加上<%@ import ="student.Conn"%>这个是引入你的javabean包中的类,没有这个你的bean是不能应用的,将scope="page"修改为scope="session",希望你成功哦。加油~~~
参考技术A while(RS_result.next())
这句应该改为:
while(RS_result.hasnext())这样才是boolean表达式
参考技术B 把语句写在页面里注意应该try catch起来 参考技术C 我觉得是你出现异常了 你需要捕获一下异常
try
catch

SKScene 识别 GameScene 的高分

【中文标题】SKScene 识别 GameScene 的高分【英文标题】:The SKScene recognizes the high score of the GameScene 【发布时间】:2015-06-19 12:36:41 【问题描述】:

我希望我的SKScene (MedalScene) 能够识别出GameScene 的高分,因为如果高分例如为“20”,那么它将显示为一枚奖牌。我该怎么做?

我在 GameScene 中获得高分的代码:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:[NSString stringWithFormat:@"%d",_score] forKey:SCORE_OVER];

int scoreString=[[ud objectForKey:BEST_SCORE] intValue];
if(scoreString < _score)
    [ud setObject:[NSString stringWithFormat:@"%d",_score] forKey:BEST_SCORE];
    scoreString = _score;

这是我的 MedalScene 奖牌的当前代码:

if(scoreString >= 20)
    SKSpriteNode *medal1 = [SKSpriteNode spriteNodeWithImageNamed:@"medal_1"];
    medal1.position = CGPointMake(CGRectGetMaxX( self.frame )*1/4 + 8, CGRectGetMidY(self.frame) + 21);
    [self addChild:medal1];


My GameScene 显示 GameOver 的得分和最高分。这是代码:

-(void)showGameOver

NSUserDefaults *hud = [NSUserDefaults standardUserDefaults];
[hud setObject:[NSString stringWithFormat:@"%d",_score] forKey:SCORE_OVER];

int scoreString = [[hud objectForKey:BEST_SCORE] intValue];
if(scoreString < _score)
    [hud setObject:[NSString stringWithFormat:@"%d",_score] forKey:BEST_SCORE];
    scoreString = _score;

SKLabelNode *lbOver = [SKLabelNode labelNodeWithFontNamed:@"Walibi0615"];
lbOver.position = CGPointMake(CGRectGetMaxX(self.frame)*3/4, CGRectGetMidY(self.frame)+33);
lbOver.zPosition = 1;
lbOver.fontSize = 20;
lbOver.fontColor = [UIColor blackColor];
lbOver.text = [NSString stringWithFormat:@"%d", _score];
[_gameOver addChild:lbOver];

SKLabelNode *lbMaxOver = [SKLabelNode labelNodeWithFontNamed:@"Walibi0615"];
lbMaxOver.position = CGPointMake(CGRectGetMaxX(self.frame)*3/4, CGRectGetMidY(self.frame)-14);
lbMaxOver.zPosition = 1;
lbMaxOver.fontSize = 20;
lbMaxOver.fontColor = [UIColor blackColor];
lbMaxOver.text = [NSString stringWithFormat:@"%d", scoreString];
[_gameOver addChild:lbMaxOver]; 

我已经创建了第二个场景(MedalScene),这个场景应该可以识别 GameScene 的 scoreString,因为例如,如果最高分等于 20,那么它将在这个场景中出现一个奖牌。

这是目前的奖牌代码(MedalScene):

if(scoreString >= 20)
SKSpriteNode *medal1 = [SKSpriteNode spriteNodeWithImageNamed:@"medal_1"];
medal1.position = CGPointMake(CGRectGetMaxX( self.frame )*1/4 + 8, CGRectGetMidY(self.frame) + 21);
[self addChild:medal1]; 

我希望现在我的意思很清楚了。预先感谢您的帮助! :)

【问题讨论】:

【参考方案1】:

您应该在设置后同步您的用户默认值。

[ud synchronize];

不过,我也会在你的 userdefaults 中使用真正的整数(i.s.o. 手动转换为字符串),所以类似于

NSInteger score = [ud integerForKey:BEST_SCORE];
if (_score > score)  
    [ud setInteger:_score forKey:BEST_SCORE];
    [ud synchronize];

【讨论】:

感谢您的快速回复。如果我用你的代码替换 GameScene 代码,高分会在 GameScene 中消失。所以我只想要一个指向我的 MedalScene 的链接。 @StefanoVuottoCésar 如果您同步您的用户默认值并且它们仍然没有出现在其他场景中,则其他情况是错误的。老实说,很难掌握您的确切问题是什么,您的问题没有多大意义,而且您发布的代码很少。尝试更清楚地解释您的问题和/或发布更多代码。 @StefanoVuottoCésar 在阅读了您编辑的问题后,您似乎确实需要在更改用户默认值后添加一个同步调用,如果您想将它们与“20”进行比较,则应该使用整数(比较字符串到 20 作为整数没有意义)。 我修改了一点你的代码,现在它可以工作了!感谢您的帮助彼得!

以上是关于jsp问题!高分!org.apache.jasper.JasperException的主要内容,如果未能解决你的问题,请参考以下文章