我做了一个成绩查询页面,想在显示所有成绩页面添加删除功能,删除功能根据学号和课程名删除成绩。我上网查了很多资料,做了很多修改,但是依然报错
代码如下:
<% request.setCharacterEncoding("GBK"); %>
<%@ page language="java" import="com.cj.*,java.util.*,java.io.*,java.lang.*" pageEncoding="GBK"%>
<jsp:useBean id="cjBean" class="com.cj.CjBean" scope="session"/>
<html>
<head>
<link href="../CSS/div.css" type="text/css" rel=stylesheet>
</head>
<body>
<%@ include file="admin_top.jsp" %>
<div id="Menu">
<div id="Nav">
<ul>
<li><a href="admin_cj_addcjmain.jsp">添加成绩</a></li>
<li><a href="admin_cj_searchcj.jsp">根据学号查询成绩</a></li>
<li><a href="admin_cj_viewadllcj.jsp">查看所有成绩列表</a></li>
</ul>
</div>
</div>
<div id="info_table">
<font size="4"><center>查看所有成绩</center></font>
<table width=91% border="1" align="center" bordercolor="#00addf" bgcolor="#00addf">
<tr bgcolor="#00addf" bordercolor="#00addf">
<td width="11%"><div align="center" ><strong>学号</strong></div></td>
<td width="13%"><div align="center" >科目</div></td>
<td width="13%"><div align="center" >成绩</div></td>
<td width="26%"><div align="center" >删除此成绩</div> </td>
</tr>
<%
String n=new String(request.getParameter("subjectName").getBytes("8859_1"),"GBK");
String s=(String)request.getParameter("studentId");
out.println(s);
out.println(n);
if(s!=null&&n!=null){
cjBean.deleteCj(s,n);
}
Collection<CJClass> cj = cjBean.getAllCjInfo();
Iterator<CJClass> it = cj.iterator();
while(it.hasNext())
{
CJClass cjClass=(CJClass)it.next();
out.println("<tr bgcolor=#FFFFFF bordercolor=#00addf>");
out.println("<td width='11%'><div align=center ><strong>"+cjClass.getStudentId()+"</strong></div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectName()+"</div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectScore()+"</div></td>");
out.println("<td><div align=center class=style13><a href='admin_cj_viewadllcj.jsp?studentId="+cjClass.getStudentId()+"&subjectName="+java.net.URLEncoder.encode(cjClass.getSubjectName())+"'>删除</a></div></td>");
out.println("</tr>");
}
%>
</table>
</div>
</body>
</html>
报错内容:
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.admin.admin_005fcj_005fviewadllcj_jsp._jspService(admin_005fcj_005fviewadllcj_jsp.java:165)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)在线求助急急
代码如下:
<% request.setCharacterEncoding("GBK"); %>
<%@ page language="java" import="com.cj.*,java.util.*,java.io.*,java.lang.*" pageEncoding="GBK"%>
<jsp:useBean id="cjBean" class="com.cj.CjBean" scope="session"/>
<html>
<head>
<link href="../CSS/div.css" type="text/css" rel=stylesheet>
</head>
<body>
<%@ include file="admin_top.jsp" %>
<div id="Menu">
<div id="Nav">
<ul>
<li><a href="admin_cj_addcjmain.jsp">添加成绩</a></li>
<li><a href="admin_cj_searchcj.jsp">根据学号查询成绩</a></li>
<li><a href="admin_cj_viewadllcj.jsp">查看所有成绩列表</a></li>
</ul>
</div>
</div>
<div id="info_table">
<font size="4"><center>查看所有成绩</center></font>
<table width=91% border="1" align="center" bordercolor="#00addf" bgcolor="#00addf">
<tr bgcolor="#00addf" bordercolor="#00addf">
<td width="11%"><div align="center" ><strong>学号</strong></div></td>
<td width="13%"><div align="center" >科目</div></td>
<td width="13%"><div align="center" >成绩</div></td>
<td width="26%"><div align="center" >删除此成绩</div> </td>
</tr>
<%
String n=new String(request.getParameter("subjectName").getBytes("8859_1"),"GBK");
String s=(String)request.getParameter("studentId");
out.println(s);
out.println(n);
if(s!=null&&n!=null){
cjBean.deleteCj(s,n);
}
Collection<CJClass> cj = cjBean.getAllCjInfo();
Iterator<CJClass> it = cj.iterator();
while(it.hasNext())
{
CJClass cjClass=(CJClass)it.next();
out.println("<tr bgcolor=#FFFFFF bordercolor=#00addf>");
out.println("<td width='11%'><div align=center ><strong>"+cjClass.getStudentId()+"</strong></div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectName()+"</div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectScore()+"</div></td>");
out.println("<td><div align=center class=style13><a href='admin_cj_viewadllcj.jsp?studentId="+cjClass.getStudentId()+"&subjectName="+java.net.URLEncoder.encode(cjClass.getSubjectName())+"'>删除</a></div></td>");
out.println("</tr>");
}
%>
</table>
</div>
</body>
</html>
报错内容:
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.admin.admin_005fcj_005fviewadllcj_jsp._jspService(admin_005fcj_005fviewadllcj_jsp.java:165)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)在线求助急急
解决方案 »
- 从C++发字符串给java接收,然后如何在java这边进行字符串匹配。我java这边能接到值,但是不能进行匹配。
- 一个很难实现的功能
- 能同时download多个excel文件么
- jsp中实现像.net中的ispostback的功能,有什么办法呢?
- 计算机网络相关问题
- 如何让输入文本框好象word一样有排版功能?
- 开发Java Web应用,需要使用线程吗?
- 安装j2sdk-1_4_2-windows-i586.exe出错,求助======================================================
- 如何建立自己的WEB目录和Servlet目录。(tomcat4.1)
- 对List<Bean>形式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式
- 演示jdbc-odbc桥连方式操作数据库
- 将Input中的值转化为double类型
中文作为参数传递乱码 当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下: 在参数传递时对参数编码,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
然后在接收参数页面使用如下语句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1")); 请问 keywords该用什么类型声明?不声明好像会报错求救啊
有一个办法,也是最近新学的,你可以试试看!!你打开tomcate目录找到conf文件夹--》server文件--》ctrl+f(搜索快捷键) 搜索8080之后你会看到一些没有被注释掉的蓝色代码在redirectPort="8443"或者是什么别的数字,后面加上 URIEncoding="gbk" 之后保存,你再试试!不用那种很长的方法,好像连requset编码方式都不需要设置,直接就能接受中文了!呵呵试试吧,应该这是最简单最方便的了
这句很有可能有问题,
最有可能:request.getParameter("subjectName") == null
自己写个
System.out.println(request.getParameter("subjectName"));
查看一下是不是为NULL.
代码如下。
<% request.setCharacterEncoding("GBK"); %>
<%@ page language="java" import="com.cj.*,java.util.*,java.io.*,java.lang.*" pageEncoding="GBK"%>
<jsp:useBean id="cjBean" class="com.cj.CjBean" scope="session"/>
<html>
<head>
<link href="../CSS/div.css" type="text/css" rel=stylesheet>
</head>
<body>
<%@ include file="admin_top.jsp" %>
<div id="Menu">
<div id="Nav">
<ul>
<li><a href="admin_cj_addcjmain.jsp">添加成绩</a></li>
<li><a href="admin_cj_searchcj.jsp">根据学号查询成绩</a></li>
<li><a href="admin_cj_viewadllcj.jsp">查看所有成绩列表</a></li>
</ul>
</div>
</div>
<div id="info_table">
<font size="4"><center>查看所有成绩</center></font>
<table width=91% border="1" align="center" bordercolor="#00addf" bgcolor="#00addf">
<tr bgcolor="#00addf" bordercolor="#00addf">
<td width="11%"><div align="center" ><strong>学号</strong></div></td>
<td width="13%"><div align="center" >科目</div></td>
<td width="13%"><div align="center" >成绩</div></td>
<td width="26%"><div align="center" >删除此成绩</div> </td>
</tr>
<%
String n=request.getParameter("subjectName");
String s=(String)request.getParameter("studentId");
out.println(s);
out.println(n);
if(s!=null&&n!=null){
cjBean.deleteCj(s,n);
}
Collection<CJClass> cj = cjBean.getAllCjInfo();
Iterator<CJClass> it = cj.iterator();
while(it.hasNext())
{
CJClass cjClass=(CJClass)it.next();
out.println("<tr bgcolor=#FFFFFF bordercolor=#00addf>");
out.println("<td width='11%'><div align=center ><strong>"+cjClass.getStudentId()+"</strong></div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectName()+"</div></td>");
out.println("<td width='13%'><div align=center >"+cjClass.getSubjectScore()+"</div></td>");
out.println("<td><div align=center class=style13><a href='admin_cj_viewadllcj.jsp?studentId="+cjClass.getStudentId()+"&subjectName="+cjClass.getSubjectName()+"'>删除</a></div></td>");
out.println("</tr>");
}
%>
</table>
</div>
</body>
</html>
String n=new String(request.getParameter("subjectName").getBytes("8859_1"),"GBK");如果request.getParameter("subjectName") 不为空
request.getParameter("subjectName").getBytes("8859_1")这句话得到的肯定为NULL如下语句
String s = new String(s1,"GBK");
如果s1为空是要报空指针异常的错误的。
楼主是不是通过像这样的URL访问:
http://127.0.01:8080/xxx.jsp?arg1=科目
也就是在URL的参数列表中带了中文???
如下JSP<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<%
String a = request.getParameter("arg1");
a = new String(a.getBytes("8859_1"),"GBk");
System.out.println(7);//sds
System.out.println(a);
%>
<form action="">
<input type="text" name="arg1" value="中国"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
无论是通过点提交访问,还是通过以下两种链接访问
http://localhost:8080/TempWeb/index.jsp?arg1=%D6%D0%B9%FA
http://localhost:8080/TempWeb/index.jsp?arg1=中国我都没出现过乱码,奇怪中!!......
a = new String(a.getBytes("8859_1"),"GBk"); 这段 。。郁闷中。。
会不会是传递的页面有限制的 ,我是本页面传给本页面的
String n=new String(,"GBK");
修改为以下:String n = request.getParameter("subjectName");
System.out.println("1:"+n);
byte b = n.getBytes("8859_1");
System.out.println("2:"+b);
n = new String (b,"GBK");
System.out.println("3:"+n);
然后运行,检查一下控制台的输出。看三个System.out.println输出什么东西
大哥,你访问要带参数的,我写那个代码你要带个参数访问,没参数当然异常了!!!!
请用这两种方式中的任意一种:
http://localhost:8080/TempWeb/index.jsp?arg1=%D6%D0%B9%FA
http://localhost:8080/TempWeb/index.jsp?arg1=中国具体应该是什么地址,求你自己修改一下!!!!!
24楼那段代码报错,
byte b = n.getBytes("8859_1");
Type mismatch: cannot convert from byte[] to byten = new String(b,"GBK");
The constructor String(byte, String) is undefined
System.out.println("1:"+n);
byte[] b = n.getBytes("8859_1");
System.out.println("2:"+b);
n = new String (b,"GBK");
System.out.println("3:"+n);
2 n=new String(n.getBytes("8859_1"),"GBK");
3 String s=(String)request.getParameter("studentId");
4 out.println(s);
5 out.println(n);
6 if(s!=null&&n!=null){
7 cjBean.deleteCj(s,n);
8 }
9 Collection<CJClass> cj = cjBean.getAllCjInfo();
10 Iterator<CJClass> it = cj.iterator();
11 while(it.hasNext())
12 {
13 CJClass cjClass=(CJClass)it.next();
14 out.println("<tr bgcolor=#FFFFFF bordercolor=#00addf>");
15 out.println("<td width='11%'><div align=center<strong>"+cjClass.getStudentId()+"</strong></div></td>");
16 out.println("<td width='13%'><div align=center >"+cjClass.getSubjectName()+"</div></td>");
17 out.println("<td width='13%'><div align=center >"+cjClass.getSubjectScore()+"</div></td>");
18 out.println("<td><div align=center class=style13><a href='admin_cj_viewadllcj.jsp?studentId="+cjClass.getStudentId()+"&subjectName="+cjClass.getSubjectName()+"'>删除</a></div></td>");
19 out.println("</tr>");
20 }因为显示全部成绩是通过循环本页面查询输出实现的
我的想法是 当使用 18行 删除功能使 传递 studentId和subjectName回本页面 调用6、7行的删除Bean来删除该行成绩
org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/admin_cj_viewadllcj.jsp at line 4138:
39: String n = request.getParameter("subjectName");
40: System.out.println("1:"+n);
41: byte[] b = n.getBytes("8859_1");
42: System.out.println("2:"+b);
43: n = new String (b,"GBK");
44: System.out.println("3:"+n);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
org.apache.jsp.admin.admin_005fcj_005fviewadllcj_jsp._jspService(admin_005fcj_005fviewadllcj_jsp.java:167)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
java.lang.NullPointerException
at org.apache.jsp.admin.admin_005fcj_005fviewadllcj_jsp._jspService(admin_005fcj_005fviewadllcj_jsp.java:167)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
try{
System.out.println("1:"+n);
byte[] b = n.getBytes("8859_1");
System.out.println("2:"+b);
if(b!= null){
n = new String (b,"GBK");
System.out.println("3:"+n);
}
}catch(Exception e){
System.out.println("4:"+n);}
所以new String (null,"GBK")报错。
1:null
4:null
1:???§
2:[B@15dc37d
3:数学
request.getParameter("subjectName")为null;
null.getBytes("8859_1") 同样报错,
在你有应用中,可能存在第一次访问时页面时,确实没subjectName这个参数的值,而下一次访问时才传入了参数subjectName的值。
控制台先输出
1:null
4:null
说明request.getParameter("subjectName") 的结果是 null输出
1:???§
2:[B@15dc37d
3:数学
说明:传入了参数,没有转码是[???§]
[B@15dc37d是那个byte[]的对象引用
转码后是“数学”