<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'showStudent.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h3 align="center">开题报告查询</h3>
<div align="center">
<form action="" method="post" name="delform" onsubmit="return check()">
<table width="360" cellspacing="2" align="center">
<tr>
<td width="50%" align="right">请选择查询方式:</td>
<td width="50" align="left">
<select name="mode">
<option value="01">按开题报告编号</option>
<option value="02">按学生编号</option>
<option value="03">按导师编号</option>
</select>
</td>
</tr>
<tr>
<td width="50%" align="right">请输入查询编号:</td>
<td width="50" align="left"><input type="text" name="number" maxlength="30"></td>
</tr>
<tr>
<td width="50%" align="right"><input type="submit" name="submit" value="提交"></td>
<td width="50" align="left"><input type="reset" name="reset" value="重置">
</tr>
</table>
</form>
</div>
<%
String q_mode=request.getParameter("mode");
String num=request.getParameter("number");
%>
<p>q_mode=<%=q_mode %>
<p>num=<%=num %>
<% Connection con=null;
Statement sql;
ResultSet rs=null;
String str;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:test","sa","123123");
}catch(Exception e){
e.printStackTrace();
}
sql=con.createStatement();
out.print("<p>开题报告基本信息显示");
out.print("<table border>");
out.print("<tr>");
out.print("<th width=100>"+"编号");
out.print("<th width=100>"+"名称");
out.print("<th width=100>"+"导师姓名");
out.print("<th width=100>"+"开题人");
out.print("<th width=100>"+"类型");
out.print("<th width=100>"+"状态");
out.print("<th width=100>"+"开始时间");
out.print("<th width=100>"+"最迟时间");
out.print("<th width=100>"+"其它");
out.print("</tr>");
///////////////////////////////////////////////这个if语句会抛出异常
if(q_mode.equals("01"))
{
response.sendRedirect("showReport.jsp");
}
str="select * from t_report";
rs=sql.executeQuery(str);
while(rs.next())
{
out.print("<tr>");
out.print("<td>"+rs.getString(1)+"</td>");
out.print("<td>"+rs.getString(2)+"</td>");
out.print("<td>"+rs.getString(4)+"</td>");
out.print("<td>"+rs.getString(6)+"</td>");
out.print("<td>"+rs.getString(7)+"</td>");
out.print("<td>"+rs.getString(8)+"</td>");
out.print("<td>"+rs.getString(9)+"</td>");
out.print("<td>"+rs.getString(10)+"</td>");
out.print("<td>"+rs.getString(11)+"</td>");
out.print("</tr>");
}
con.close();
%>
<p>成功获取
</body>
</html>
异常:
2009-6-1 10:08:54 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.showReport_jsp._jspService(showReport_jsp.java:149)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
org.apache.jasper.JasperException: An exception occurred processing JSP page /showReport.jsp at line 85
82: out.print("<th width=100>"+"鍏跺畠");
83: out.print("</tr>");
84:
85: if(q_mode.equals("01"))
86: {
87: response.sendRedirect("showReport.jsp");
88: }
12 个解决方案
#1
q_mode在做epuals判断前要加一个if(q_mode != null)的判断!
#2
if("01" .equals(q_mode))
#3
其实这就是逻辑错误,如果q_mode为空的时候它就不会有equals方法,所以应该像2楼那样写(最简单,简洁)
当然也可以像1楼那样判断,通常我们都用2楼的。
当然也可以像1楼那样判断,通常我们都用2楼的。
#4
#5
强大
#6
q_mode 保存的数据,用之前你得判断一些是否为空啊,
一楼的做法正确。
一楼的做法正确。
#7
q_mode.equals("01")
这里有问题,如果q_mode为null,那么执行equals当然会报空指针
改成"01".equal(q_mode)就好了
这里有问题,如果q_mode为null,那么执行equals当然会报空指针
改成"01".equal(q_mode)就好了
#8
上面说的都对
#9
if("01" .equals(q_mode)) 同意楼上
#10
顶
#11
up
#12
顶下!
要先判断是否为空,
要不然很容易报空指针异常的!
要先判断是否为空,
要不然很容易报空指针异常的!
#1
q_mode在做epuals判断前要加一个if(q_mode != null)的判断!
#2
if("01" .equals(q_mode))
#3
其实这就是逻辑错误,如果q_mode为空的时候它就不会有equals方法,所以应该像2楼那样写(最简单,简洁)
当然也可以像1楼那样判断,通常我们都用2楼的。
当然也可以像1楼那样判断,通常我们都用2楼的。
#4
#5
强大
#6
q_mode 保存的数据,用之前你得判断一些是否为空啊,
一楼的做法正确。
一楼的做法正确。
#7
q_mode.equals("01")
这里有问题,如果q_mode为null,那么执行equals当然会报空指针
改成"01".equal(q_mode)就好了
这里有问题,如果q_mode为null,那么执行equals当然会报空指针
改成"01".equal(q_mode)就好了
#8
上面说的都对
#9
if("01" .equals(q_mode)) 同意楼上
#10
顶
#11
up
#12
顶下!
要先判断是否为空,
要不然很容易报空指针异常的!
要先判断是否为空,
要不然很容易报空指针异常的!