当前位置: 代码迷 >> Java Web开发 >> byte b[]=studentId.getBytes("ISO-8859-1")出现错误,怎么办
  详细解决方案

byte b[]=studentId.getBytes("ISO-8859-1")出现错误,怎么办

热度:1201   发布时间:2016-04-16 22:05:00.0
byte b[]=studentId.getBytes("ISO-8859-1")出现异常,怎么处理?
这个异常出现是否表明tomcat默认传输参数的编码不是ISO-8859-1?怎么处理需要设置tomcat吗?

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>数据更新后的页面</title>
</head>
<body>
<center>
<h3>已添加学生信息</h3>
<hr>
<%
String studentId=request.getParameter("stutId");
byte b[]=studentId.getBytes("ISO-8859-1");   //这里出现异常
studentId=new String(b,"UTF-8");

String studentName=request.getParameter("stuName");
byte b1[]=studentName.getBytes("ISO-8859-1");
studentName=new String(b1,"UTF-8");

String studentScore=request.getParameter("stuScore");
byte b2[]=studentScore.getBytes("ISO-8859-1");
studentScore=new String(b2,"UTF-8");

String studentClass=request.getParameter("stuClass");
byte b3[]=studentClass.getBytes("ISO-8859-1");
studentClass=new String(b2,"UTF-8");

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433;databasename=student";
String user="sa";
String password="sias";
Connection con=DriverManager.getConnection(url,user,password);
Statement stmt=con.createStatement();
String sql="insert into score  values(studentId,studentName,studentScore,studentClass)";
stmt.executeUpdate(sql);
stmt.close();
con.close();
%>
<h3>更改学生信息</h3>
<hr>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url1="jdbc:sqlserver://localhost:1433;databasename=student";
String user1="sa";
String password1="sias";
Connection con1=DriverManager.getConnection(url1,user1,password1);
Statement stmt1=con1.createStatement();
String sql1="update score set studentScore= 0";
stmt1.executeUpdate(sql1);
stmt1.close();
con1.close();
%>
<h3>已删除学生信息</h3>
<hr>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url2="jdbc:sqlserver://localhost:1433;databasename=student";
String user2="sa";
String password2="sias";
Connection con2=DriverManager.getConnection(url2,user2,password2);
Statement stmt2=con2.createStatement();
String sql2="delete from score where studentClass='会计大类1班'";
stmt2.executeUpdate(sql2);
stmt2.close();
con2.close();
%>
<h3>经过以上操作,数据库中有以下记录</h3>
<hr>
<table border="2" bgcolor="cccfff" align="center">
<tr>
<td>学号</td>
<td>姓名</td>
<td>成绩</td>
<td>班级</td>
</tr>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url3="jdbc:sqlserver://localhost:1433;databasename=student";
String user3="sa";
String password3="sias";
Connection con3=DriverManager.getConnection(url3,user3,password3);
Statement stmt3=con3.createStatement();
String sql3="select * from score";
ResultSet rs=stmt3.executeQuery(sql3);
while(rs.next()){
%>
<tr>
<td><%=rs.getString(studentId) %></td>
<td><%=rs.getString(studentName) %></td>
<td><%=rs.getString(studentScore) %></td>
<td><%=rs.getString(studentClass) %></td>
</tr>
<%
}
rs.close();
stmt3.close();
con3.close();
%>
</table>
<hr>
</center>
</body>
</html>

------解决方案--------------------
java.lang.NullPointerException


studentId为null
------解决方案--------------------
纯jsp、、、、、、、、、、、、、、、、、无语想吐的节奏,如果是我坚决跳槽!、、、、、、、、、、、、、、、、、、、、
用el表达式${paramete...}测试下作用域传来的值是否存在?如果都存在,然后选择硬件排除法,先删除一些代码,看看其他代码能运行不,如果不能再删除些;
------解决方案--------------------
NullPointer -> 这是空指针错误!不是编码错误

目测你是多写了一个t,那个参数名你去查查应该是stuId根据你下面的几个参数来猜测
//String studentId=request.getParameter("stutId");   这里多了一个t
String studentId=request.getParameter("stuId");  // 去掉t, 改成这样
byte b[]=studentId.getBytes("ISO-8859-1");   //这里出现异常
studentId=new String(b,"UTF-8");
  相关解决方案