下面一段代码,直接打开,没有错误,但通过链接打开,却出现异常,请问该怎么解决
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%><HTML>
 <HEAD>..
 </HEAD>
 <BODY>
  <form  name="sel" method="post" action="tb.jsp"> 
<table> 
<td> 
<select name="ad" id='ad' selected="请选择"> 
<option value="选择">请选择 </option> 
  <option value="设备">设备 </option> 
  <option value="班级">班级 </option> 
  <option value="教室">教室 </option> 
  <option value="用户">用户 </option> 
  </select> 
</td> 
<td> 
<input type="submit" name="submit" value="确定"> 
</td> 
</table> 
</form>
<%
//String p =request.getParameter("ad");
String p =new String (request.getParameter("ad").getBytes("ISO8859-1"));
String p1="设备";
String p2="班级";
String p3="教室";
String p4="用户";
  if (p1.equals(p))
  {
  out.println("成功了");
  %>
<form name="form1" method="post" action="tb.jsp"><%//表单1%>
 <table>
 <tr>
 <td><font=5>你进行的操作是</font></td>
 </tr>
 <tr>
 <td bgcolor=pink>设备添加</td>
 </tr>
 <tr>
 <td>请输入下列信息:</td>
 </tr>
 </table>
 <table cols=2>
 <tr>
 <td>设备号&nbsp;&nbsp:</td>
 <td>
 <input type="text" name="devno"></td>
 <tr>
 <td>设备类别:</td>
 <td>
 <input type="text" name="devclass"><td>
  <tr>
 <td>出产商&nbsp;&nbsp:</td>
 <td>
 <input type="text" name="devfactory"><td>
  <tr>
 <td>价&nbsp;&nbsp;格&nbsp;&nbsp:</td>
 <td><input type="text" name="devprice"><td>
  <tr>
 <td>使用状态:</td>
 <td><input type="text" name="devstate"><td>
  <tr>
 <td>教室编号:</td>
<td> <input type="text" name="labno"><td>
</table>
<tr>
<td><input type="submit" value="提交"></td>
 </form>
 <%}
  else
  {
  if(p2.equals(p))
  {
  out.println("你选择了班级");
  }
  else
  {
  if(p3.equals(p))
  {
  out.println("你选择了教室");
  }
  else
  {
  if(p4.equals(p))
  {
               out.println("用户添加");
  }
  else
  {
  out.println("请选择");
  }
  }
  }
  //out.println("请选择");
  }
  
%></BODY>
</HTML>
通过链接过去,出现的异常信息如下:
org.apache.jasper.JasperException: Exception in JSP: /device/tb.jsp:2421: </form>
22: <%
23: //String p =request.getParameter("ad");
24: String p =new String (request.getParameter("ad").getBytes("ISO8859-1"));
25: String p1="设备";
26: String p2="班级";
27: String p3="教室";
exception org.apache.jasper.JasperException: Exception in JSP: /device/tb.jsp:2421: </form>
22: <%
23: //String p =request.getParameter("ad");
24: String p =new String (request.getParameter("ad").getBytes("ISO8859-1"));
25: String p1="设备";
26: String p2="班级";
27: String p3="教室";
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
org.apache.jsp.device.tb_jsp._jspService(tb_jsp.java:66)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.
--------------------------------------------------------------------------------

解决方案 »

  1.   

    链接到这个页面时相当于想这个页面发送了请求,页面的24行
    24: String p =new String (request.getParameter("ad").getBytes("ISO8859-1")); 
    这里 进行:request.getParameter("ad") 获取值时获取不到"ad"的值,就会报“NullPointerException”异常
    我想应该是这样了,其实你完全可以吧那段java代码放到一个Servlet中去做
      

  2.   

    24: String p =new String (request.getParameter("ad").getBytes("ISO8859-1")); 
    把这段代码改一下
    24: String p =new request.getParameter("ad")
    if(p!=null){
    p=p.getBytes("ISO8859-1")); 
    }